# Developer Utilities & Validators (Tanod) > Cloud GPU prices per hour, plus developer helpers: hash, HMAC, JWT, IDs, JSON, cron, time zones. A focused part of Tanod (https://tanod.dev/llms.txt covers every family), over HTTP and MCP. > > Pay per call in USDC on Base or Polygon or Solana or BNB Chain or Arbitrum with x402, or on Tempo with MPP; no account or API key. Free tier: a small daily per-IP > pool per family; over HTTP add the header `X-Tanod-Free: 1` to an unpaid call (without it every unpaid call gets the 402); over MCP > the free tier is automatic. > Every result is automated and heuristic, not an audit: findings can be false positives, and a clean result is not proof that code or a package is free of risk. > Tanod is operated by an autonomous AI agent on behalf of its owner. Scans run automatically; no person reviews individual results. ## API - [OpenAPI spec](https://util.tanod.dev/openapi.json): machine-readable description of this family's 41 routes. - [x402 resources](https://util.tanod.dev/.well-known/x402) - MCP: `https://tanod.dev/mcp/util` (server `tanod-util`); also at `https://util.tanod.dev/mcp` on this host ## Routes - `POST https://util.tanod.dev/v1/qr` (generate_qr_code): Use when an agent must hand a person text or a URL as a scannable QR code image. Add output=url for a 24 h link. - `POST https://util.tanod.dev/v1/geocode` (geocode_city): Use when an agent must turn a city name into coordinates, or coordinates into the nearest city. - `POST https://util.tanod.dev/v1/holidays` (get_public_holidays): Use when an agent must know the public holidays of a country and year before scheduling dates. - `POST https://util.tanod.dev/v1/phone` (parse_phone_number): Use when an agent must parse a phone number and format it as E.164 or national before storing or dialling it. - `POST https://util.tanod.dev/v1/validate` (validate_iban): Use when an agent must check the format and check digits of an IBAN, VAT, ISBN, LEI or similar ID. - `POST https://util.tanod.dev/v1/useragent` (parse_user_agent): Use when an agent has a User-Agent string and needs the browser, OS, device and a bot flag. - `POST https://util.tanod.dev/v1/cron` (get_cron_next_run_times): Use when an agent must know when a cron expression will next fire in a given time zone. - `POST https://util.tanod.dev/v1/time` (convert_time_zone): Use when an agent must convert one moment to the local time in several time zones, with DST offsets. - `POST https://util.tanod.dev/v1/url` (parse_url): Use when an agent must split a URL into its parts, registrable domain and IDNA form without fetching it. - `POST https://util.tanod.dev/v1/barcode` (generate_barcode): Use when an agent must produce a Code 128, Code 39, EAN, UPC-A or ISBN barcode image. Add output=url for a 24 h link. - `POST https://util.tanod.dev/v1/json/validate` (validate_json_schema): Use when an agent must check a JSON value against a JSON Schema and get the paths of any errors. - `POST https://util.tanod.dev/v1/convert` (convert_json_yaml_csv_toml_xml): Use when an agent must convert data between JSON, YAML, CSV, TOML and XML. - `POST https://util.tanod.dev/v1/hash` (hash_text_sha256_keccak): Use when an agent needs a SHA-2, SHA-3, BLAKE2, Keccak, MD5 or CRC32 digest of text or bytes. - `GET https://util.tanod.dev/v1/uuid` (get_fresh_uuid_v7): Use when an agent needs fresh UUID v4, UUID v7 or ULID identifiers. - `POST https://util.tanod.dev/v1/uuid` (generate_uuid_ulid): Use when an agent needs fresh UUID v4, UUID v7 or ULID identifiers. - `POST https://util.tanod.dev/v1/hmac` (hmac_sign_verify_webhook_signature): Use when an agent must sign a message with HMAC or verify a webhook signature. - `POST https://util.tanod.dev/v1/phone/prefix` (lookup_phone_number_prefix_network): Use when an agent needs the country, line type and original network behind a phone prefix, or a country's mobile prefixes. - `POST https://util.tanod.dev/v1/convert/units` (convert_units_of_measurement): Use when an agent must convert a quantity between units such as length, mass, temperature or data size. - `POST https://util.tanod.dev/v1/date/business-days` (count_business_days): Use when an agent must count working days between dates or find the date N working days ahead. - `POST https://util.tanod.dev/v1/color/convert` (convert_color_check_wcag_contrast): Use when an agent must convert a color between hex, RGB, HSL, CMYK and OKLCH, or check WCAG contrast. - `POST https://util.tanod.dev/v1/color/contrast` (check_wcag_contrast): Use when an agent must check whether text and background colors meet WCAG AA or AAA contrast. - `POST https://util.tanod.dev/v1/text/encode` (encode_decode_text_base64): Use when an agent must encode or decode base64, hex, URL or punycode strings, or read a JWT payload. - `POST https://util.tanod.dev/v1/image/qr-read` (read_qr_code): Use when an image holds QR codes or barcodes whose decoded text, positions or payment fields are needed. - `POST https://util.tanod.dev/v1/compute/gpu-prices` (get_cloud_gpu_prices_per_hour): Use when an agent must pick the cheapest GPU per hour on AWS, Azure, Google Cloud or Akash (free GPUs), or rent-vs-buy. - `POST https://util.tanod.dev/v1/compute/gpu-index` (get_gpu_price_index_per_hour): Use when an agent needs the daily H100, H200 or A100 rental price over time: lowest and median list price, spot, Akash bids. - `POST https://util.tanod.dev/v1/files/upload` (upload_file_get_link): Use when an agent holds a file and must give the next tool a URL for it: a link that expires within 24 hours. - `POST https://util.tanod.dev/v1/einvoice/peppol-lookup` (peppol_participant_lookup): Use when an agent must check whether a business is registered on Peppol before sending an e-invoice. - `POST https://util.tanod.dev/v1/x402/lint` (lint_x402_listing): Use when an agent must lint an x402 listing, or check which of a seller's routes the Bazaar lists, before publishing. - `POST https://util.tanod.dev/v1/http/header-budget` (check_header_budget): Use when response headers might exceed nginx, aiohttp, Node fetch or Python client limits. - `GET https://util.tanod.dev/v1/http/header-budget` (check_header_budget_get): Use when response headers might exceed nginx, aiohttp, Node fetch or Python client limits. - `POST https://util.tanod.dev/v1/calendar/ics-build` (build_ics_event): Use when an agent must hand a user a calendar invite: events as JSON in, a .ics file out. - `POST https://util.tanod.dev/v1/calendar/ics-parse` (parse_ics): Use when an agent must read an .ics file or invite (Google, Outlook, Apple) as JSON events. - `POST https://util.tanod.dev/v1/calendar/rrule` (expand_rrule): Use when an agent must list the dates of a recurring event (RRULE) in a time zone, DST-correct. - `POST https://util.tanod.dev/v1/jwt/decode` (decode_a_jwt): Use when an agent must read a JWT's header and claims (exp, aud, kid) without verifying it. - `POST https://util.tanod.dev/v1/jwt/verify` (verify_jwt): Use when an agent must check a JWT's signature and exp, aud and iss with a secret, a PEM key or a JWK Set. - `POST https://util.tanod.dev/v1/datasets/search` (datasets_search): Use when an agent needs datasets from Hugging Face Hub only; licence tags are author-published, not legal advice. - `POST https://util.tanod.dev/v1/random` (generate_secure_random_numbers): Use when an agent needs cryptographic random integers, floats, bytes, dice rolls, or a random pick or shuffle of a list. - `POST https://util.tanod.dev/v1/chain/bolt11/decode` (decode_lightning_bolt11_invoice): Use when an agent must read a Lightning invoice (lnbc...) before paying it: amount, payee, expiry, payment hash. - `POST https://util.tanod.dev/v1/nostr/decode` (decode_nostr_npub_nip19_nip05): Use when an agent must turn a Nostr npub, nprofile, note, nevent or naddr into hex, or resolve a NIP-05 address. - `POST https://util.tanod.dev/v1/places/nearby` (find_places_nearby_osm): Use when an agent must find the nearest pharmacy, cafe, ATM, shop or hospital to a point, with hours and phone. - `POST https://util.tanod.dev/v1/barcode/lookup` (lookup_barcode_product_in_open_databases): Use when an agent must find the product behind an EAN or UPC code, with open databases compared and conflicts flagged. - `POST https://util.tanod.dev/v1/render/mermaid` (render_mermaid): Use when an agent must turn Mermaid diagram code into an SVG or sharp PNG image for a report or README. - `GET https://util.tanod.dev/v1/now` (get_utc_time_and_base_block): Use when an agent needs the current UTC time and the latest Base block in one call, with no input.