Tanod Util
by tanod.dev in Developer tools
Developer utilities: encode, hash, HMAC, IDs, JSON, data conversion, cron, time zones, QR codes.
https://tanod.dev/mcp/util
Last 30 days
Status and outage history ยท Atom feed
- Uptime
- 100%
- Response time
- 398 ms typical, 823 ms slowest 5%
- Last check
- 6 h ago
- Next check
- any minute now
How to call it
Add it to any MCP client that supports remote servers.
{
"mcpServers": {
"tanod-util": {
"type": "http",
"url": "https://tanod.dev/mcp/util"
}
}
}34 tools
- text_encode
utilpeek: Encode or decode text: base64, hex, URL, punycode, JWT decode, ... Returns the text encoded or decoded with `codec`: base64, base64url, base32, hex, url (percent), html (entities), quoted_printable, rot13, punycode, idna or jwt. Decoders are strict (bad input is a 422 d
- hash_text
utilpeek: Hash text or bytes: sha256, keccak256, blake2b, md5, crc32, ... Returns hex digests of the text (as UTF-8) or base64 bytes you send: md5, sha1, sha256, sha512, sha3_256, blake2b (64-byte), keccak256 (Ethereum's Keccak-256, not sha3_256) and crc32. md5 and sha1 are for c
- hmac_sign_verify
utilpeek: Sign or verify an HMAC, including GitHub, Stripe and Slack webhook signatures. Returns the HMAC of a message under a shared key (sign), or whether a signature matches it in constant time (verify); handles GitHub (`sha256=` prefix accepted), Stripe `v1` (of `{t}.{raw bod
- generate_ids
utilpeek: Generate UUIDs or ULIDs. Returns 1-100 new identifiers: random UUID v4, time-ordered UUID v7 (RFC 9562) or ULIDs, optionally strictly increasing within the response (v7 and ULID; per response on purpose, so one caller cannot predict another's next ID). Input: optional `
- generate_random
utilpeek: Generate cryptographically strong random numbers, bytes, UUIDs, dice rolls, picks and shuffles. Returns values from the OS CSPRNG (Python `secrets`): integers (uniform, inclusive range), floats in [min, max), 1-1,024 random bytes (hex or base64), UUID v4, dice rolls suc
- validate_json
utilpeek: Validate JSON against a JSON Schema. Returns whether a JSON value is valid against a JSON Schema (draft from $schema, default 2020-12; 2019-09, 7, 6, 4 and 3 recognised), with up to 100 errors (instance path, schema path, message, validator) and the formats checked. Rem
- convert_data
utilpeek: Convert data between JSON, YAML, CSV, TOML and XML. Returns the document converted from json, yaml, csv, toml or xml to json, yaml, csv or toml. YAML uses libyaml's restricted loader (alias bombs refused); XML with DTDs or entities is a 422 xml_forbidden; lossy conversi
- validate_identifier
utilpeek: check the format and check digits of an identifier. Input: `kind` and `value`. Returns `valid`, `reason` (invalid_checksum, invalid_length, invalid_format, ... when not valid), `compact`, `formatted` and a kind-specific `detail` (an IBAN's country and bank code, an ISBN
- parse_phone_number
utilpeek: parse and format a phone number. Input: `number`. Returns `valid`, `possible`, `e164`, `international`, `national`, `rfc3966`, `country_calling_code`, `region`, `type` (mobile, fixed_line, toll_free, ...), `carrier`, `location` and `timezones`. A string that is not a ph
- lookup_phone_prefix
utilpeek: Look up a phone number prefix: country, line type and original network, with ambiguity. Returns look up a phone number prefix (0917, +63917, 0063917): country, line type, original network, time zones and E.164 prefix, with `ambiguous` and `candidates` when it spans netw
- parse_user_agent
utilpeek: parse a User-Agent string. Input: `user_agent`. Returns `browser`, `os` (family and version parts) and `device` (family, brand, model), `is_bot` with `bot_reason`, and `is_mobile`. A User-Agent is self-reported and easy to fake; `is_bot` is a heuristic (declared crawler
- parse_url
utilpeek: parse a URL. Input: `url`. Returns `scheme`, `host`, `port`, `effective_port`, `is_ip`, `host_ascii` / `host_unicode` (IDNA), `host_scripts` and `mixed_script_label` (homograph hints), `public_suffix`, `registrable_domain`, `subdomain` (and the ICANN-only `icann_*` view
- cron_next_runs
utilpeek: the next run times of a cron expression. Input: `expression`, optional `count`, `timezone` and `start`. Returns the normalized `expression`, `timezone`, `start`, `runs` and `exhausted`. Standard 5-field cron (minute hour day-of-month month day-of-week) or a macro (@dail
- convert_time
utilpeek: convert one instant between time zones. Input: `to_tz`, optional `time` and `from_tz`. Returns `utc`, `unix`, the `input` view (with `ambiguous` / `nonexistent`) and one `conversions` row per zone {timezone, time, date, weekday, utc_offset, abbreviation, dst}. Zones com
- get_public_holidays
utilpeek: public holidays of a country for a year. Input: `country`, `year`, optional `subdivision` and `language`. Returns `holidays` rows with `count`, `source` and `note`. An unsupported country, subdivision, language or year is a 422 naming the supported values (not charged).
- count_or_add_business_days
utilpeek: Count business days between two dates or add working days, skipping public holidays. Returns the business days between two dates (mode count; both ends included by default, like NETWORKDAYS) or the date N business days after or before a date (mode add, like WORKDAY), sk
- convert_units
utilpeek: Convert units of measurement: length, weight, temperature, volume, pressure, energy, data size. Returns a value converted between two units of one category, with the exact factor: length, mass, temperature (with offsets), volume (US and imperial), area, speed, pressure,
- convert_color_check_contrast
utilpeek: Convert a color between hex, RGB, HSL and OKLCH and check WCAG contrast. Returns a CSS color (hex, rgb(), hsl() or a CSS name) as hex, rgb, hsl, hsv, naive cmyk, OKLCH and WCAG relative luminance; with a `background`, the WCAG 2.x contrast ratio and AA / AAA pass or fai
- check_wcag_contrast
utilpeek: Check the WCAG contrast between a text color and a background color. Returns the WCAG 2.x contrast ratio of a `foreground` and a `background` CSS color, with AA / AAA pass or fail for normal text, large text and UI components (unrounded: #777 on white is 4.48:1 and fail
- geocode
utilpeek: offline geocoding over the GeoNames cities15000 table. Input: either `place` alone or `lat` and `lon` together. `place` matches cities of 15,000+ people offline ("City" or "City, CC" with an ISO country code or a US state code); no match is a 404 place_not_found (not ch
- make_qr_code
utilpeek: make a QR code image. Input: `data`, optional `format`, `scale`, `error` and `border`. Returns `svg` (text) or `data_base64` (PNG), or with `output` "url" a 24 h download link, plus `version`, `modules`, `width_px`, `height_px` and `bytes`. Data too long for a QR code a
- make_barcode
utilpeek: make a 1-D barcode image. Input: `data`, optional `type`, `format` and `text`. Returns `svg` (text, with width_mm/height_mm) or `data_base64` (PNG, with width_px/height_px; `output` "url": a 24 h link), plus `encoded` and `bytes`. A supplied check digit (ean13, ean8, up
- read_qr_barcode
imagepeek: Read every QR code and barcode in an image. Returns every code found: `type` (QR, EAN-13, EAN-8, UPC-A, UPC-E, Code128, Code39), decoded `text`, `kind` (url, wifi, vcard, payment_emv, ...), corner `points`, `bbox`; a QR holding an EMVCo payment payload (PIX, QR Ph, SGQ
- peppol_lookup
utilpeek: Check whether a company is registered on the Peppol e-invoicing network. Returns whether a Peppol participant ID (such as 0192:983887457) is registered on the Peppol e-invoicing network, from its SML DNS record; if so, its SMP URL and the document types the SMP lists (B
- lint_x402_listing
utilpeek: Lint an x402 listing, or check a seller's Bazaar coverage. Returns mode lint: a listing (PaymentRequired object or an endpoint's live 402) checked against CDP rules: problems, score, suggested description. Mode coverage (host or openapi_url): a seller's paid routes mark
- build_ics_event
utilpeek: Build an iCalendar file from JSON events. Returns 1-50 events (summary, start, end or duration, IANA timezone, all-day, location, description, url, organizer, attendees, rrule, uid) turned into RFC 5545 VCALENDAR text: CRLF lines folded at 75 octets, text escaped (comma
- parse_ics
utilpeek: Parse an iCalendar file into JSON events. Returns iCalendar text (Google, Outlook, Apple, up to 1 MB) unfolded and read into events: summary, start and end as ISO 8601 with offset, all-day flag, location, description, organizer, attendees, rrule, exdates, uid, status. W
- expand_rrule
utilpeek: Expand an iCalendar RRULE into dates. Returns an RFC 5545 RRULE and a start expanded into its occurrence list with python-dateutil in an IANA time zone: wall-clock times keep across DST changes. Up to 1,000 occurrences, an optional [from, to] window, extra until and exd
- decode_jwt
utilpeek: Decode a JWT without verifying it. Returns a compact JWT split into its header and payload JSON, with alg, typ, kid, whether a signature is present, and the standard claims: iat, nbf and exp as ISO 8601 UTC, plus expired and not_yet_valid against the server clock. Decod
- verify_jwt
utilpeek: Verify a JWT signature and claims. Returns valid true or false for a JWT checked with PyJWT against one key (HMAC secret, PEM public key or JWK Set), with a reason: bad signature, expired, wrong audience or issuer, algorithm not allowed. Algorithm none is refused; the k
- decode_lightning_invoice
chainpeek: Decode a Lightning invoice: amount, payee, payment hash and expiry. Returns a Lightning invoice's network, amount (msat, sat, BTC), creation time, expiry and expired flag, payee public key recovered from the signature, payment hash, description or hash, route hints and
- decode_nostr_id
chainpeek: Decode a Nostr npub, nprofile, note, nevent or naddr to hex; resolve NIP-05. Returns a Nostr NIP-19 identifier decoded to hex (public key or event id) and its TLV fields (relays, author, kind), or a NIP-05 name@domain resolved to a public key and relays, optionally che
- get_gpu_prices
utilpeek: Cloud GPU prices: cheapest H100, A100, L4 per GPU-hour on AWS, Azure and Google Cloud. Returns cheapest cloud GPU list prices per GPU-hour on AWS, Azure and Google Cloud, on-demand and spot, by chip, GPU memory, region and price ceiling; optionally the month a purchase
- upload_file_get_link
utilpeek: Upload a file and get a download link that expires in 24 hours. Returns stores a file you upload for up to 24 hours and returns a public download link (url, expires_at, bytes, sha256, content_type). Input: `filename` and `content_base64`, optional `ttl_hours`. Over HTTP
Security scan
- No findings. We scan names, descriptions and tool definitions for hidden instructions and other prompt-injection patterns.
Recent checks
| When | Result | HTTP | Time |
|---|---|---|---|
| 6 h ago | Passed | 200 | 811 ms |
| 15 h ago | Passed | 200 | 398 ms |
| 25 h ago | Passed | 200 | 812 ms |
| 34 h ago | Passed | 200 | 1.2 s |
| 43 h ago | Passed | 200 | 823 ms |
| 2 days ago | Passed | 200 | 361 ms |
| 3 days ago | Passed | 200 | 262 ms |
| 3 days ago | Passed | 200 | 298 ms |