Pack local or remote codebases into AI-friendly files that LLMs and coding agents can read or search
Tanod Util is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Developer utilities: encode, hash, HMAC, IDs, JSON, data conversion, cron, time zones, QR codes.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http tanod-util-mcp https://tanod.dev/mcp/util
# 2 — ask your agent for something these tools do
# text_encode, hash_text, hmac_sign_verify and 31 more
Tanod Util costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine and nothing runs on ours: this server answers at its publisher’s own address, and what you install is the connection straight to it.
This is a public server: it answers at its publisher’s own address and this marketplace is not in the path. Claude Code registers it in one command; --scope user makes it available in every project. The transport below is http, as the publisher's own manifest declares it.
claude mcp add --scope user --transport http tanod-util-mcp https://tanod.dev/mcp/utilReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry pointing straight at the publisher’s own address — this marketplace is not in the path, and nothing from this listing executes on your machine.
34 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
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 decode_failed); bytes that are not UTF-8 come back as output_base64. Input: text, codec and optional direction. `
| Parameter | Type | Required | Notes |
|---|---|---|---|
| text | string | yes | At most 100,000 characters; never logged; a JWT is never echoed back. |
| codec | string | yes | base64, base64url, base32, hex, url, html, quoted_printable, rot13, punycode, idna or jwt (decode only; the signature is never verified). |
| direction | string | no | encode (default) or decode; jwt is decode only. |
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 checksums, not security. Input: text or base64, and optional algorithms. Send exactly one of text or base64 (else 4
| Parameter | Type | Required | Notes |
|---|---|---|---|
| text | no | Text, hashed as UTF-8 (at most 1 MB); send text OR base64. | |
| base64 | no | Raw bytes as standard base64 (at most 1 MB decoded); send text OR base64. | |
| algorithms | array | no | Any of md5, sha1, sha256 (default), sha512, sha3_256, blake2b, keccak256, crc32. |
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 body}) and Slack v0 (of v0:{timestamp}:{raw body}) webhook signatures. Input: mode, message, key, optional `key_
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | yes | sign (compute the HMAC) or verify (check signature). |
| message | string | yes | The signed payload exactly as received (e.g. the raw webhook body), as text; at most 64 KiB as UTF-8. |
| key | string | yes | The shared secret (at most 1 KiB), read as key_encoding. Never echoed or logged. |
| key_encoding | string | no | utf8 (default), hex or base64 (standard alphabet). |
| algorithm | string | no | sha256 (default), sha512, or sha1 (legacy webhooks only). |
| output | string | no | Signature encoding: hex (default) or base64. |
| signature | no | verify only: the signature to check, in output encoding. A sha256= style prefix (GitHub's X-Hub-Signature-256) is stripped when it names algorithm. |
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 kind, version, count and monotonic; an empty body gives one UUID v4. version with kind=ulid, or monotonic wit
| Parameter | Type | Required | Notes |
|---|---|---|---|
| kind | string | no | uuid (default) or ulid. |
| version | integer | no | UUID version 4 (random, default) or 7 (time-ordered); kind=uuid only. |
| count | integer | no | How many (1-100, default 1). |
| monotonic | boolean | no | v7 / ULID only: strictly increasing within this response. |
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 such as 3d6 or 2d10+3 with the total, picks from a list or a shuffle. Input: optional kind, min and max, count, `le
| Parameter | Type | Required | Notes |
|---|---|---|---|
| kind | string | no | int (default), float, bytes, uuid (v4), dice, pick or shuffle. |
| min | no | int: lowest value, inclusive (default 0). float: lowest, inclusive (default 0). | |
| max | no | int: highest value, inclusive (default 100). float: upper bound, exclusive (default 1); max must exceed min. | |
| count | integer | no | How many values (1-1000, default 1): int, float, uuid, pick. |
| length | integer | no | bytes: how many random bytes (1-1024, default 16). |
| encoding | string | no | bytes: hex (default) or base64. |
| dice | no | dice: an expression such as 3d6, d20 or 2d10+3 (1-100 dice of 2-1000 sides, optional +/- modifier; default 1d6). | |
| items | no | pick / shuffle: a comma-separated list (at most 1,000 items of 200 characters; blanks are dropped). | |
| unique | boolean | no | pick: draw without replacement (count at most the number of items). |
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. Remote $ref documents are refused (422 remote_ref_forbidden), never fetched. Input: instance and schema; together at mo
| Parameter | Type | Required | Notes |
|---|---|---|---|
| instance | object/array/string/number/integer/boole | yes | Any JSON value to validate. |
| schema | yes | JSON Schema (draft from $schema; default 2020-12). Remote $ref documents are refused, never fetched. |
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 conversions are a 422 (not_tabular, not_representable, ...) rather than silently changed. Input: input, from, to, optional
| Parameter | Type | Required | Notes |
|---|---|---|---|
| input | string | yes | The document as a string (at most 1 MB UTF-8). |
| from | string | yes | Input format: json, yaml, csv, toml or xml. |
| to | string | yes | Output format: json, yaml, csv or toml. |
| delimiter | string | no | CSV delimiter (input and output). |
| indent | integer | no | JSON output indentation (0 = compact, default 2). |
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's ISBN-10/13 forms, ...). An invalid identifier is a normal answer (charged); a malformed request is a 422 (not charged
| Parameter | Type | Required | Notes |
|---|---|---|---|
| kind | string | yes | Identifier kind: iban, bic, vat (EU, format only, no VIES), isbn, issn, ean, isin, lei, imo, luhn (generic mod-10), or a national format (au_abn, br_cnpj, br_cpf, ca_bn, ch_uid, de_idnr, es_nif, fr_si |
| value | string | yes | The identifier (1-64 printable ASCII characters). |
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 phone number, or a national form without region, is a 422 (not charged). Offline numbering-plan check (phonenumbers, Apach
| Parameter | Type | Required | Notes |
|---|---|---|---|
| number | string | yes | Phone number: +CC international form, or national form with region. |
| region | no | Optional ISO 3166-1 alpha-2 region for a national-form number (e.g. US). |
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 networks; list + region lists a country's mobile prefixes by network. Input: prefix, optional region to read a natio
| Parameter | Type | Required | Notes |
|---|---|---|---|
| prefix | no | The leading digits of a number, in any form: 0917, 917, +63917, 0063917 or 63917 (digits with an optional leading + or 00; separators space - . ( ) are ignored). Without region a national form (0917 | |
| region | no | ISO 3166-1 alpha-2 country (PH, US, GB, ...): reads a national prefix and selects the country for list. | |
| list | boolean | no | With region (and no prefix): return every mobile prefix of that country at the 4-digit national level (e.g. 0905, 0917), grouped by network. |
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 crawlers, HTTP libraries, headless browsers). Parsed with ua-parser and the uap-core regexes (Apache-2.0). Typically under 0.1
| Parameter | Type | Required | Notes |
|---|---|---|---|
| user_agent | string | yes | User-Agent string (1-1024 chars). |
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), path, path_segments, query, decoded params (up to 100) and normalized. The URL is parsed, never fetched. Pu
| Parameter | Type | Required | Notes |
|---|---|---|---|
| url | string | yes | URL to parse (never fetched). |
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 (@daily, @hourly, ...); no seconds or year fields, no R/H/W. Day-of-month and day-of-week use Vixie OR semantics; an expressio
| Parameter | Type | Required | Notes |
|---|---|---|---|
| expression | string | yes | 5-field cron expression or macro, e.g. */15 9-17 * * MON-FRI. |
| count | integer | no | Number of next runs (1-50, default 10). |
| timezone | no | Optional IANA time zone (default UTC). | |
| start | no | Optional ISO 8601 start (default now). |
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 come from the pinned IANA tz database (tzdata package), not the host; a wall time in a DST gap or fold is flagged `nonexist
| Parameter | Type | Required | Notes |
|---|---|---|---|
| to_tz | array | yes | 1-20 IANA time zones to convert to. |
| time | no | Optional ISO 8601 date-time or Unix seconds (default now). | |
| from_tz | no | Optional IANA zone of a time WITHOUT an offset (default UTC). |
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). Typically under 0.1 s. Price: USD 0.001. Free: 10 utilpeek calls per IP per UTC day. Computed from the python-holidays
| Parameter | Type | Required | Notes |
|---|---|---|---|
| country | string | yes | ISO 3166-1 alpha-2 country code (e.g. US, GB, PH). |
| year | integer | yes | Year (1990-2100). |
| subdivision | no | Optional subdivision code or name (e.g. CA). | |
| language | no | Optional holiday-name language (e.g. en_US). |
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), skipping weekends (configurable) and, with a country, its public holidays; plus the holidays skipped. Input: mode, `star
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | yes | count: business days between start and end; add: the date days business days after (or before) start. |
| start | string | yes | Start date, YYYY-MM-DD (1900-01-01..2199-12-31). |
| end | no | count only: end date, YYYY-MM-DD, at most 20 years from start (before start gives a negative count). | |
| days | no | add only: business days to add (negative subtracts). The start date is never counted (like Excel WORKDAY); 0 returns start. | |
| include_start | no | count only: count the start date (default true). | |
| include_end | no | count only: count the end date (default true; both true is Excel NETWORKDAYS, include_end false the half-open [start, end) of numpy.busday_count). | |
| weekend | array | no | Weekday names that are not business days (default ["sat", "sun"]; e.g. ["fri", "sat"]; [] for none). |
| country | no | Optional ISO 3166-1 alpha-2 country whose public holidays are not business days (the /v1/holidays data; dates in 1990-2100). | |
| subdivision | no | Optional subdivision code or name for that country (e.g. CA or California for US). |
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, energy, power, data size (kB = 1000 bytes, KiB = 1024), time and fuel economy (reciprocal). Input: value, from and
| Parameter | Type | Required | Notes |
|---|---|---|---|
| value | number | yes | The number to convert (at most 1e300 in magnitude). |
| from | string | yes | Unit to convert from: a symbol or name such as in, ft, mi, kg, lb, C, F, K, L, gal, gal_imp, m2, acre, km/h, mph, kn, psi, inHg, atm, kWh, BTU, eV, hp, kB, KiB, Mbit, h, L/100km, mpg, mpg_imp. Case ma |
| to | string | yes | Unit to convert to, of the same category as from. |
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 fail for normal and large text and UI components (unrounded: #777 on white is 4.48:1 and fails AA). Input: color and opti
| Parameter | Type | Required | Notes |
|---|---|---|---|
| color | string | yes | A CSS color: hex (#rgb, #rgba, #rrggbb, #rrggbbaa), rgb() / rgba(), hsl() / hsla() or a CSS color name (148 names, plus transparent). |
| background | no | Optional second color (e.g. the background): adds the WCAG 2.x contrast ratio and AA / AAA pass / fail. |
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 fails AA). Input: foreground and background. An unparseable or out-of-range color is a 422 before any payment (not charg
| Parameter | Type | Required | Notes |
|---|---|---|---|
| foreground | string | yes | The text or UI color, a CSS color: hex (#rgb, #rrggbb, #rrggbbaa), rgb() / rgba(), hsl() / hsla() or a CSS color name. |
| background | string | yes | The background color it sits on, in the same CSS color formats. |
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 charged). Cities only (no street addresses). Typically under 0.1 s (first call up to 1 s). Price: USD 0.001. Free: 10 util
| Parameter | Type | Required | Notes |
|---|---|---|---|
| place | no | Forward: city name, optionally "City, CC" (ISO country or US state code); give place alone, or lat and lon. | |
| lat | no | Reverse: latitude (-90..90); give lat and lon together, or place. | |
| lon | no | Reverse: longitude (-180..180); give lat and lon together, or place. |
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 at the chosen level is a 422 (not charged). Encoded locally, nothing is fetched; typically under 0.1 s. Price: USD 0.001.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| data | string | yes | Text or URL to encode (1-2000 characters, at most 2953 UTF-8 bytes). |
| format | string | no | svg (text) or png (base64). |
| scale | integer | no | Pixels per module (1-20, default 8). |
| error | string | no | Error correction level (default M). |
| border | integer | no | Quiet zone in modules (0-10, default 4). |
| output | string | no | base64 (default): the file comes back inline as base64. url: the file is stored for 24 hours and the reply carries a download link (url, expires_at, bytes, content_type, sha256) instead of the base64, |
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, upca, isbn13) must be right: a wrong one is a 422 invalid_checksum (not charged) rather than silently encoding a different
| Parameter | Type | Required | Notes |
|---|---|---|---|
| data | string | yes | Value to encode (see the type rules). |
| type | string | no | Symbology (default code128). |
| format | string | no | svg (text) or png (base64). |
| text | boolean | no | Print the human-readable line (default true). |
| output | string | no | base64 (default): the file comes back inline as base64. url: the file is stored for 24 hours and the reply carries a download link (url, expires_at, bytes, content_type, sha256) instead of the base64, |
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, SGQR, PromptPay; starts 000201) also gets a parsed emv object with a CRC check. No code is count 0. Input: url or `im
| Parameter | Type | Required | Notes |
|---|---|---|---|
| url | no | Public http(s) URL of the image (at most 10 MB; private, internal and IP-literal hosts are refused); or use image_base64. | |
| image_base64 | no | The image as standard or url-safe base64 (at most 10 MB decoded; a data:image/...;base64, prefix is fine); or use url. | |
| parse_emv | boolean | no | Also return emv, the parsed fields and CRC check, for a QR whose text is an EMVCo payment payload (starts 000201: PIX, QR Ph, SGQR, PromptPay, DuitNow, ...). Default true. |
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 (BIS Billing 3.0 invoice and credit note, order, despatch advice and invoice response labelled; others raw). Input: `parti
| Parameter | Type | Required | Notes |
|---|---|---|---|
| participant | string | yes | Peppol participant ID: a four-digit ICD, a colon and the identifier (1-50 of letters, digits, '.', '_', '-'), such as 0192:983887457 (a Norwegian organisation number). The full form iso6523-actorid-up |
| scheme | string | no | Identifier scheme. Only iso6523-actorid-upis (the default) is supported. |
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 marked listed, missing or stale in the CDP Bazaar, with 30-day payers, calls and a 402 probe of each example. Input: mode
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | no | lint (default, USD 0.001): lint one listing, send listing or url. coverage (USD 0.01): compare a seller's paid routes with the CDP Bazaar, send host or openapi_url. |
| listing | no | The listing to lint, as JSON: an x402 PaymentRequired object (v1 or v2), a bare accepts[] entry or a Bazaar discovery item. The JSON text or the base64 PAYMENT-REQUIRED header value of one is accepted | |
| url | no | An https x402 endpoint: it is fetched once (GET, else POST if GET is 405) and its 402 response (PAYMENT-REQUIRED header, else body) is linted. Public https hosts only. Mode lint: send this or `listing | |
| host | no | Mode coverage: the seller's public host name (such as api.example.com, no scheme or path). Its /openapi.json and /.well-known/x402 are read. Send this or openapi_url. | |
| openapi_url | no | Mode coverage: an https URL of the seller's OpenAPI document (JSON, at most 2 MB). The seller host is the URL's host. Send this or host. |
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 (commas, semicolons, backslashes, newlines). Returns the ics text, its base64 and a data: URI, with the uids. Input: events,
| Parameter | Type | Required | Notes |
|---|---|---|---|
| events | array | yes | 1-50 events. |
| calendar_name | no | Calendar name (X-WR-CALNAME). | |
| timezone | no | Default IANA time zone for events without one. | |
| time_format | string | no | tzid (default): zoned times as TZID=...; utc: all times in UTC. |
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. Windows zone names are mapped; at most 2,000 events (truncated when more). Input: ics, optional timezone for floati
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ics | string | yes | iCalendar (.ics) text, at most 1 MB. |
| timezone | no | IANA zone to attach to floating times (no TZID, no Z). | |
| max_events | integer | no | Cap on events returned (default 2,000). |
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 exdates. Returns ISO 8601 times with offset and whether more exist. Input: rrule, dtstart, optional timezone, limit
| Parameter | Type | Required | Notes |
|---|---|---|---|
| rrule | string | yes | RFC 5545 RRULE, with or without the RRULE: prefix. |
| dtstart | string | yes | ISO 8601 first occurrence (date or datetime). |
| timezone | no | IANA zone the rule runs in (wall-clock times keep across DST). Default UTC. | |
| limit | integer | no | Most occurrences to return (1-1000). |
| between | no | [from, to] ISO 8601 window (inclusive). | |
| until | no | Extra upper bound (ISO 8601). | |
| exdates | no | ISO 8601 occurrences to leave out. |
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. Decoding does not verify the signature. Input: token. Pure computation: no network access, nothing stored or logged, keys a
| Parameter | Type | Required | Notes |
|---|---|---|---|
| token | string | yes | Compact JWT (header.payload.signature); a leading 'Bearer ' is accepted. |
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 key type fixes the algorithm family. Input: token and exactly one of secret, public_key or jwks; optional `algori
| Parameter | Type | Required | Notes |
|---|---|---|---|
| token | string | yes | Compact JWT to verify. |
| secret | no | HMAC secret (HS256/384/512). | |
| public_key | no | PEM public key (RS*, PS*, ES*, EdDSA). | |
| jwks | no | JWK Set object {"keys": [...]} (asymmetric keys; oct keys are ignored). The key is picked by the token kid. | |
| algorithms | no | Allow-list that narrows the default for the key type; none is refused. | |
| audience | no | Required aud (a string, or a list of which one must match). | |
| issuer | no | Required iss. | |
| leeway_seconds | integer | no | Clock skew allowed for exp, nbf and iat (0-300). |
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 feature bits. Input: invoice. Pure computation from the invoice text: no network access, nothing paid, looked up, sto
| Parameter | Type | Required | Notes |
|---|---|---|---|
| invoice | string | yes | A BOLT11 Lightning invoice (lnbc..., lntb..., lntbs... or lnbcrt...); an optional 'lightning:' prefix and upper case are accepted. |
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 checked against a key. Input: input and optional verify_nip05. Secret keys (nsec) are refused with a 422 and never deco
| Parameter | Type | Required | Notes |
|---|---|---|---|
| input | string | yes | A NIP-19 identifier (npub1..., note1..., nprofile1..., nevent1... or naddr1..., an optional 'nostr:' prefix is accepted) or a NIP-05 address (name@domain, or a bare domain for _@domain). Secret keys ( |
| verify_nip05 | no | Optional NIP-05 address (name@domain) to check against the key of an npub, nprofile, nevent (with author) or naddr: the domain's nostr.json must map the name to that key (result nip05.verified). |
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 beats renting the cheapest row. Input: all optional: chip, min_gpu_mem_gb, provider, regions, pricing, `max_us
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chip | no | GPU chip, any case, e.g. H100 or A100 80GB. | |
| min_gpu_mem_gb | no | Minimum GPU memory in GB. | |
| provider | no | AWS, Azure or Google Cloud. | |
| regions | no | Region names, e.g. us-east-1. | |
| pricing | string | no | Price to rank by; any is the lower of the two. |
| max_usd_per_gpu_hour | no | Ceiling on the ranked price, USD. | |
| limit | integer | no | Rows to return, 1-100. |
| rent_vs_buy | no | Rent-or-buy break-even against the cheapest matching row: monthly cloud cost, monthly ownership cost, break-even month and totals. Same price. |
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 the file may also be the raw request body or a multipart file part. PDF, Office, ODF, image, audio, CSV, JSON, text a
| Parameter | Type | Required | Notes |
|---|---|---|---|
| filename | string | yes | File name with its extension, such as report.pdf. The extension is not trusted: the type is detected from the bytes. It sets the name in the link. |
| content_base64 | string | yes | The file, base64 encoded, up to 20 MB decoded. Allowed: PDF, DOCX, XLSX, PPTX, ODT, ODS, ODP, PNG, JPEG, WebP, GIF, TIFF, BMP, MP3, WAV, M4A/MP4 audio, OGG, FLAC, CSV, JSON, TXT, Markdown. HTML, SVG, |
| ttl_hours | integer | no | Hours the link stays valid, 1-24 (default 24, the most). |
- Every tool — any call limit is its publisher’s, not ours
- No card, and mcprush charges nothing for it
- Runs at its publisher’s own address — this marketplace is not in the path
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install Tanod Util or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
This listing is an address its publisher runs, and you connect to it directly — this marketplace is not in the path. The scanner reads packages and public source, and an address is neither. So there is no grade — not a withheld one, an unmeasured one.
Release history
This is an address its publisher runs: which release it serves is theirs to choose, so there is nothing here to pin. The history below is for reading; the current release on file is 0.1.0.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish Tanod Util can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.