Skip to content

x402 Toolbox

io.github.swiftbotlab/x402-toolboxswiftbotlabstreamable-httpv1.0.0Scanned

62 pay-per-call web, DNS, EVM and data tools. x402 USDC on Base, $0.003-$0.02 per call, no signup.

62 tools: 6 do something that can't be undone, 40 change things and 16 only read.

Tools: 0 delete, 6 irreversible, 40 write, 16 read.
  • Reads private data · 2
  • Reads text others write · 32
  • Can send data out · 13
  • 10 findings

Anlyon alternative

46 of these tools change something. Run those as governed actions.

Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.

Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.

Import an OpenAPI spec →

Tools

Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.

62 tools

Can't be undone 6Claude Code: ask
  • cidr_aggregateMerge / summarize a list of CIDRs into the smallest equivalent set.1 finding

    Why it is in this group

    • The description's first verb is "merge": a word for a change that another call does not undo.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "cidr_aggregate" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "merge": a word for a change that another call does not undo.

      What this check looks for
    Description, as the server wrote it
    Merge / summarize a list of CIDRs into the smallest equivalent set. Collapses overlapping and adjacent IPv4/IPv6 ranges (route summarization), returning the minimal CIDR list that covers exactly the same addresses. Price: $0.003 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Merge / summarize a list of CIDRs into the smallest equivalent set
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • currency_convertCurrency conversion with official ECB euro reference rates (30 fiat currencies).Can send data out1 finding

    Why it is in this group

    • The name "currency_convert" says "convert": a word for a change.
    • The input addresses people (input.to): what it sends cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • outboundThe input takes a destination (input.to): what the tool writes goes there.

    Findings

    • Warn

      The server marks "currency_convert" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "currency_convert" says "convert": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Currency conversion with official ECB euro reference rates (30 fiat currencies). Converts an amount between USD, EUR, GBP, JPY, CHF, CNY, INR, BRL, CAD, AUD and the other currencies the European Central Bank publishes daily (cross rates via EUR). Returns the rate, its date and source. Reference rates, not trading quotes. Price: $0.005 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Currency conversion with official ECB euro reference rates (30 fiat currencies)
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • encodeConvert between UTF-8, hex, base64, base64url, base32, base58; URL and HTML escaping.Can send data out1 finding

    Why it is in this group

    • The description's first verb is "convert": a word for a change.
    • The input addresses people (input.to): what it sends cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • outboundThe input takes a destination (input.to): what the tool writes goes there.

    Findings

    • Warn

      The server marks "encode" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Convert between UTF-8, hex, base64, base64url, base32, base58; URL and HTML escaping. Re-encodes data from one encoding to another (utf8, hex, base64, base64url, base32, base58), or applies url-encode / url-decode / html-escape / html-unescape. Reports invalid UTF-8 instead of guessing. Price: $0.003 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Convert between UTF-8, hex, base64, base64url, base32, base58; URL and HTML esca
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • evm_unitsExact conversion between wei, gwei, ether or any token decimals.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The input addresses people (input.to): what it sends cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a destination (input.to): what the tool writes goes there.

    Findings

    • Warn

      The server marks "evm_units" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The input addresses people (input.to): what it sends cannot be taken back.

      What this check looks for
    Description, as the server wrote it
    Exact conversion between wei, gwei, ether or any token decimals. Converts an amount between wei / gwei / ether (or any decimals 0-36, e.g. 6 for USDC) with exact integer arithmetic (no floating-point rounding), and refuses conversions that would drop digits. Price: $0.003 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Exact conversion between wei, gwei, ether or any token decimals
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • time_convertConvert a time between time zones and formats (ISO, unix, RFC 2822), with DST-aware offsets.Can send data out1 finding

    Why it is in this group

    • The name "time_convert" says "convert": a word for a change.
    • The input addresses people (input.to): what it sends cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • outboundThe input takes a destination (input.to): what the tool writes goes there.

    Findings

    • Warn

      The server marks "time_convert" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "time_convert" says "convert": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Convert a time between time zones and formats (ISO, unix, RFC 2822), with DST-aware offsets. Parses ISO 8601, unix seconds/ms or "now" (a bare local time is read in the "from" zone) and returns it in UTC and in each target IANA zone with offsets, weekday, ISO week, day of year, unix seconds/ms and RFC 2822. Up to 20 target zones. Price: $0.003 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Convert a time between time zones and formats (ISO, unix, RFC 2822), with DST-aw
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • unit_convertConvert between units: length, mass, volume, area, speed, time, data, pressure, energy, power, temperature, angle.Can send data out1 finding

    Why it is in this group

    • The name "unit_convert" says "convert": a word for a change.
    • The input addresses people (input.to): what it sends cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • outboundThe input takes a destination (input.to): what the tool writes goes there.

    Findings

    • Warn

      The server marks "unit_convert" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "unit_convert" says "convert": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Convert between units: length, mass, volume, area, speed, time, data, pressure, energy, power, temperature, angle. Exact-factor conversion across 12 dimensions and 140+ units (SI, imperial, US customary, IEC binary data sizes). Temperature handles offsets (C, F, K, R). Pass to=all to get every unit of the same dimension. Price: $0.003 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Convert between units: length, mass, volume, area, speed, time, data, pressure,
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
Changes things 40Claude Code: ask
  • abi_decodeABI-decode calldata, return data or log data with known types or a signature.Reads text others writeNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    ABI-decode calldata, return data or log data with known types or a signature. Decodes hex data with a list of ABI types or a function signature (the 4-byte selector is stripped and checked when present). Strict: every offset and length is bounds-checked and dirty padding is rejected. Price: $0.003 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: ABI-decode calldata, return data or log data with known types or a signature
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • abi_encodeABI-encode values (or full calldata for a function signature).Reads text others writeNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    ABI-encode values (or full calldata for a function signature). Encodes values per the Solidity ABI: all integer sizes (range-checked), address, bool, bytesN, bytes, string, fixed and dynamic arrays and tuples (nested). With a function signature, returns calldata with the selector. Integers may be decimal or 0x strings. Price: $0.003 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: ABI-encode values (or full calldata for a function signature)
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • calldata_decodeDecode unknown transaction calldata: find the function signature and decode the arguments.Reads text others writeNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Decode unknown transaction calldata: find the function signature and decode the arguments. Looks up the selector (built-in list, then openchain / 4byte), tries each candidate signature and keeps the first one that decodes and re-encodes to exactly the same bytes, so collisions are filtered out. Returns the function, arguments and the other candidates. Price: $0.005 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Decode unknown transaction calldata: find the function signature and decode the
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • cidr_containsWhich of these IPs fall inside which CIDR ranges (allowlist / blocklist check).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Which of these IPs fall inside which CIDR ranges (allowlist / blocklist check). Checks up to 1,000 IPs against up to 1,000 CIDR blocks (IPv4 and IPv6) and returns, per IP, every matching range. Invalid entries are reported, not fatal. Price: $0.003 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Which of these IPs fall inside which CIDR ranges (allowlist / blocklist check)
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • cidr_infoSubnet calculator for an IPv4/IPv6 CIDR block.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Subnet calculator for an IPv4/IPv6 CIDR block. Network and broadcast addresses, first/last usable host, netmask and wildcard, number of addresses and usable hosts, address class and scope. Notes when the input had host bits set. Price: $0.003 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Subnet calculator for an IPv4/IPv6 CIDR block
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • cidr_splitSplit a CIDR block into smaller subnets.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Split a CIDR block into smaller subnets. Lists the subnets of a given prefix length inside a parent block (e.g. a /16 into /24s), up to 4,096 per call, with the total count. Price: $0.003 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Split a CIDR block into smaller subnets
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • colorColour conversion (hex, RGB, HSL) and WCAG contrast ratio between two colours.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Colour conversion (hex, RGB, HSL) and WCAG contrast ratio between two colours. Parses hex, rgb(), hsl() or CSS names and returns hex, RGB, HSL and relative luminance. With a second colour, returns the WCAG 2.x contrast ratio and AA / AAA pass/fail for normal and large text. Price: $0.003 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Colour conversion (hex, RGB, HSL) and WCAG contrast ratio between two colours
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • csv_to_jsonCSV / TSV to JSON (RFC 4180 quoting, delimiter auto-detect, type inference).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    CSV / TSV to JSON (RFC 4180 quoting, delimiter auto-detect, type inference). Parses CSV with quoted fields, embedded newlines and doubled quotes; auto-detects comma, semicolon, tab or pipe. Returns an array of objects (using the header row) or of arrays, optionally inferring numbers, booleans and nulls. Up to 50,000 rows. Price: $0.003 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: CSV / TSV to JSON (RFC 4180 quoting, delimiter auto-detect, type inference)
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • dns_dmarcDMARC record check and parsed policy.Reads text others writeNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    DMARC record check and parsed policy. Reads _dmarc.<domain> (falling back to the organizational domain), parses p, sp, pct, rua, ruf, adkim, aspf and fo, and lists weaknesses (p=none, pct<100, no reporting address, duplicates). Price: $0.005 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: DMARC record check and parsed policy
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • dns_mxMail servers (MX) of a domain, sorted, with the mail provider.Reads text others writeNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Mail servers (MX) of a domain, sorted, with the mail provider. MX records sorted by priority, null-MX detection (RFC 7505), the implicit-MX fallback (A/AAAA) when no MX exists, and the detected mail provider (Google Workspace, Microsoft 365, Zoho, Proton, ...). Price: $0.005 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Mail servers (MX) of a domain, sorted, with the mail provider
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • dns_reverseReverse DNS (PTR) for an IPv4 or IPv6 address, with forward confirmation.Reads text others writeNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Reverse DNS (PTR) for an IPv4 or IPv6 address, with forward confirmation. Looks up the PTR name of an IP address and checks forward-confirmed reverse DNS (FCrDNS): whether the PTR hostname resolves back to the same IP. Price: $0.005 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Reverse DNS (PTR) for an IPv4 or IPv6 address, with forward confirmation
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • dns_spfSPF record check: full include tree, DNS lookup count, problems.Reads text others writeNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    SPF record check: full include tree, DNS lookup count, problems. Fetches the SPF record, expands include: and redirect= recursively, counts DNS-querying mechanisms against the RFC 7208 limit of 10, lists ip4/ip6 ranges and flags problems (multiple records, +all, ?all, missing includes, ptr, loops, void lookups). Price: $0.008 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: SPF record check: full include tree, DNS lookup count, problems
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • domain_rdapDomain registration data (RDAP/WHOIS): registrar, created, expires, age, status.Reads text others writeNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Domain registration data (RDAP/WHOIS): registrar, created, expires, age, status. Looks up the registry RDAP server for the TLD (IANA bootstrap) and returns the registrar, registration / expiry / last-changed dates, domain age in days, days until expiry, EPP status codes, nameservers and DNSSEC delegation. Useful for fraud and phishing checks (young domains). Price: $0.01 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Domain registration data (RDAP/WHOIS): registrar, created, expires, age, status
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • email_securityE-mail security audit of a domain: MX, SPF, DMARC, DKIM, MTA-STS, TLS-RPT, BIMI, grade.Reads text others writeNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    E-mail security audit of a domain: MX, SPF, DMARC, DKIM, MTA-STS, TLS-RPT, BIMI, grade. One call audits a domain's mail setup: MX + provider, SPF tree and lookup count, DMARC policy, DKIM keys at common selectors, MTA-STS record and policy file, TLS-RPT, BIMI. Returns a 0-100 score, a letter grade and a prioritized list of fixes. Price: $0.02 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: E-mail security audit of a domain: MX, SPF, DMARC, DKIM, MTA-STS, TLS-RPT, BIMI,
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • evm_balanceNative and ERC-20 balances of an address.Reads text others writeNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Native and ERC-20 balances of an address. Native coin balance plus the balance of up to 10 ERC-20 tokens (raw and formatted with decimals and symbol) for an address on the chosen chain, read at the latest block. Price: $0.005 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Native and ERC-20 balances of an address
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • evm_contractIs an address a contract or a wallet?Reads text others writeNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Is an address a contract or a wallet? Code size, EIP-1967 proxy implementation/admin/beacon, EIP-7702 delegation. Reads the bytecode of an address on a chain: EOA vs contract, code size and hash, EIP-7702 delegated EOAs, minimal-proxy (EIP-1167) targets, EIP-1967 implementation/admin/beacon slots and legacy ZeppelinOS proxies (e.g. USDC). Also returns the native balance and nonce. Price: $0.005 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Is an address a contract or a wallet? Code size, EIP-1967 proxy implementation/a
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • evm_gasCurrent gas price, base fee and priority fee on an EVM chain.Reads text others writeNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Current gas price, base fee and priority fee on an EVM chain. Latest block number, base fee, suggested priority fee and gas price in gwei, plus the cost in native currency of a 21,000-gas transfer and a 65,000-gas ERC-20 transfer at the current price. Price: $0.003 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Current gas price, base fee and priority fee on an EVM chain
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • evm_selectorFunction selector and event topic for a Solidity signature.Reads text others writeNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Function selector and event topic for a Solidity signature. Normalizes a function/event/error signature (drops parameter names, expands uint to uint256, handles tuples and arrays) and returns the 4-byte selector and the 32-byte event topic. No network access. Price: $0.003 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Function selector and event topic for a Solidity signature
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • evm_tokenERC-20 token metadata: name, symbol, decimals, total supply (on-chain).Reads text others writeNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    ERC-20 token metadata: name, symbol, decimals, total supply (on-chain). Reads name(), symbol(), decimals() and totalSupply() directly from the token contract on the chosen chain (handles bytes32 names), and formats the supply with the token's decimals. Price: $0.005 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: ERC-20 token metadata: name, symbol, decimals, total supply (on-chain)
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • evm_verify_messageRecover the signer of an EIP-191 personal_sign message and check it against an address.Reads text others writeNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Recover the signer of an EIP-191 personal_sign message and check it against an address. Computes the EIP-191 message hash and recovers the signing address from a 65-byte signature (v = 27/28 or 0/1), optionally comparing it with an expected address. Works for Sign-In-With-Ethereum messages and wallet login challenges. Contract (EIP-1271) wallets are not checked. Price: $0.003 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Recover the signer of an EIP-191 personal_sign message and check it against an a
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • hashHash text or bytes: SHA-1/2/3, Keccak-256, MD5, RIPEMD-160, BLAKE2/3.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Hash text or bytes: SHA-1/2/3, Keccak-256, MD5, RIPEMD-160, BLAKE2/3. Computes one or all of md5, sha1, sha224, sha256, sha384, sha512, sha3-256, sha3-512, keccak256, ripemd160, blake2b-256/512, blake2s-256, blake3. Input as UTF-8 text, hex, base64 or base58; output hex or base64. Up to 1 MB. Price: $0.003 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Hash text or bytes: SHA-1/2/3, Keccak-256, MD5, RIPEMD-160, BLAKE2/3
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • hmacHMAC (SHA-256/384/512/1, MD5), e.g.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    HMAC (SHA-256/384/512/1, MD5), e.g. to check a webhook signature. Computes HMAC of a message with a key (text, hex or base64). Optionally compares against an expected signature in constant time and reports whether it matches. Keys are not stored or logged. Price: $0.003 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: HMAC (SHA-256/384/512/1, MD5), e.g. to check a webhook signature
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • html_extractConvert HTML you already have to clean text / Markdown and extract its metadata and links.Reads text others write1 finding

    Why it is in this group

    • The description's first verb is "convert": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.

    Findings

    • Warn

      The server marks "html_extract" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The description's first verb is "convert": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Convert HTML you already have to clean text / Markdown and extract its metadata and links. Same engine as web-extract, without fetching: send up to 2 MB of HTML (and an optional base URL for resolving links) and get Markdown and/or plain text, title, description, OpenGraph, headings, links and images. Price: $0.005 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Convert HTML you already have to clean text / Markdown and extract its metadata
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • ip_infoParse and classify an IPv4/IPv6 address (private, loopback, CGNAT, documentation, ...).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Parse and classify an IPv4/IPv6 address (private, loopback, CGNAT, documentation, ...). Canonical and expanded forms, integer and hex values, version, scope per the IANA special-purpose registries (private, loopback, link-local, CGNAT, multicast, documentation, 6to4, NAT64, IPv4-mapped with the embedded address), whether it is globally routable, and the reverse-DNS name. Price: $0.003 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Parse and classify an IPv4/IPv6 address (private, loopback, CGNAT, documentation
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • ip_range_to_cidrConvert an IP range (start - end) to the minimal list of CIDR blocks.1 finding

    Why it is in this group

    • The description's first verb is "convert": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "ip_range_to_cidr" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Convert an IP range (start - end) to the minimal list of CIDR blocks. Exact conversion of an inclusive address range to CIDR blocks, IPv4 or IPv6, up to 1,000 blocks. Price: $0.003 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Convert an IP range (start - end) to the minimal list of CIDR blocks
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • json_formatParse, pretty-print, minify or canonicalize JSON (sorted keys); locate syntax errors.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Parse, pretty-print, minify or canonicalize JSON (sorted keys); locate syntax errors. Parses JSON and returns it pretty-printed (2/4 spaces or tabs), minified, or canonical with sorted keys, plus size, node count and depth. On invalid JSON, reports the error position with line and column. Price: $0.003 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Parse, pretty-print, minify or canonicalize JSON (sorted keys); locate syntax er
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • json_to_csvJSON array of objects to CSV (nested objects flattened to dot.keys).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    JSON array of objects to CSV (nested objects flattened to dot.keys). Converts an array of objects (or arrays) to CSV with a header row built from the union of keys. Nested objects become dot.separated columns, arrays are JSON-encoded, and cells starting with = + - @ are escaped against spreadsheet formula injection. Price: $0.003 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: JSON array of objects to CSV (nested objects flattened to dot.keys)
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • jwt_decodeDecode a JWT and check its times; optionally verify an HS256/384/512 signature.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Decode a JWT and check its times; optionally verify an HS256/384/512 signature. Decodes header and payload, converts exp/iat/nbf to ISO dates, reports whether the token is expired or not yet valid, and flags alg=none. If a shared secret is given, verifies HMAC signatures (HS256/384/512) in constant time. Secrets are not stored or logged. Price: $0.003 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Decode a JWT and check its times; optionally verify an HS256/384/512 signature
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • randomCryptographically secure random bytes, tokens and passwords.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Cryptographically secure random bytes, tokens and passwords. Generates random bytes (hex/base64/base64url/base58), passwords with chosen character classes, or numeric PINs, from a CSPRNG. Reports the entropy in bits. Nothing is stored. Price: $0.003 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Cryptographically secure random bytes, tokens and passwords
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • semverSemantic versions: parse, compare, sort, and check against npm-style ranges.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Semantic versions: parse, compare, sort, and check against npm-style ranges. Parses SemVer 2.0 versions; compares two (a vs b); sorts a list (invalid ones reported); checks versions against npm range syntax (^, ~, x-ranges, hyphen ranges, comparators, ||) with correct prerelease rules; returns the highest version satisfying the range. Price: $0.003 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Semantic versions: parse, compare, sort, and check against npm-style ranges
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • text_statsText statistics: words, sentences, reading time, readability, top keywords.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Text statistics: words, sentences, reading time, readability, top keywords. Counts characters, graphemes, words, sentences, paragraphs and lines; estimates reading and speaking time; computes Flesch reading ease and Flesch-Kincaid grade (English) and the most frequent keywords without stop words. Price: $0.003 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Text statistics: words, sentences, reading time, readability, top keywords
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • text_transformSlugify and case conversion (camel, snake, kebab, title, constant ...), trim, dedupe lines.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Slugify and case conversion (camel, snake, kebab, title, constant ...), trim, dedupe lines. Transforms text: slug, camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE, Title Case, Sentence case, upper, lower, strip accents, collapse whitespace, sort or dedupe lines, remove HTML tags. Price: $0.003 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Slugify and case conversion (camel, snake, kebab, title, constant ...), trim, de
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • url_parseParse, normalize and clean a URL (components, query params, punycode, tracking params removed).Reads text others writeCan send data outNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Parse, normalize and clean a URL (components, query params, punycode, tracking params removed). Splits a URL into scheme, host (Unicode and punycode), port, path, query parameters and fragment; returns a normalized form (lowercase host, default port dropped, sorted query) and a clean form with tracking parameters (utm_*, fbclid, gclid, ...) removed. No network access. Price: $0.003 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Parse, normalize and clean a URL (components, query params, punycode, tracking p
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • user_agentParse a User-Agent: browser, engine, OS, device type, and known bots / AI crawlers.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Parse a User-Agent: browser, engine, OS, device type, and known bots / AI crawlers. Identifies browser and version, rendering engine, OS and version, device class (desktop, mobile, tablet, tv) and 35+ known bots: search engines, AI crawlers (GPTBot, ClaudeBot, PerplexityBot, CCBot, ...), social preview fetchers, SEO tools, monitors and HTTP libraries. Price: $0.003 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Parse a User-Agent: browser, engine, OS, device type, and known bots / AI crawle
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • uuidGenerate UUIDs (v4 random, v7 time-ordered) or parse/validate one.1 finding

    Why it is in this group

    • The description's first verb is "generate": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "uuid" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The description's first verb is "generate": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Generate UUIDs (v4 random, v7 time-ordered) or parse/validate one. With no "uuid" parameter: generates up to 100 UUIDs of version 4 or 7 using a CSPRNG. With "uuid": validates it and returns the canonical form, version, variant and embedded timestamp (v1, v6, v7). Price: $0.003 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Generate UUIDs (v4 random, v7 time-ordered) or parse/validate one
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • web_headersHTTP status, response headers, redirect chain, timing and a security-header audit.Reads text others writeCan send data outNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    HTTP status, response headers, redirect chain, timing and a security-header audit. Requests a URL (HEAD or GET) and returns the final status, every redirect hop, response headers, latency and an audit of security headers (HSTS, CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy, COOP/CORP) with a grade, plus cookie flags (Secure, HttpOnly, SameSite) without cookie values. Price: $0.005 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: HTTP status, response headers, redirect chain, timing and a security-header audi
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • web_metadataPage metadata for link previews and SEO: title, description, OpenGraph, Twitter card, JSON-LD, favicon.Reads text others writeCan send data outNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Page metadata for link previews and SEO: title, description, OpenGraph, Twitter card, JSON-LD, favicon. Fetches a URL and returns title, meta description, canonical, language, robots, OpenGraph and Twitter-card tags, JSON-LD blocks, favicon, RSS/Atom feeds, hreflang alternates and a short SEO checklist (title/description length, canonical, h1 count). Price: $0.008 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Page metadata for link previews and SEO: title, description, OpenGraph, Twitter
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • web_robotsIs a URL allowed for a crawler by robots.txt?Reads text others writeCan send data outNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Is a URL allowed for a crawler by robots.txt? Rules, crawl-delay and sitemaps. Fetches the site's /robots.txt and evaluates a URL path for a user-agent with RFC 9309 matching (longest match wins, * and $ wildcards). Returns allowed/disallowed, the deciding rule, crawl-delay, declared sitemaps and the agent groups present. Price: $0.005 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Is a URL allowed for a crawler by robots.txt? Rules, crawl-delay and sitemaps
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • x402_checkProbe an x402 endpoint: alive?Reads text others writeCan send data outNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Probe an x402 endpoint: alive? what does it charge, on which chain, to whom? Is its 402 valid?. Calls a paid URL without paying and inspects the 402 challenge: x402 version, every accepted payment option (scheme, network, asset, USDC price in dollars, payTo, timeout), resource description, Bazaar discovery metadata, latency, and a list of spec problems that break clients. Nothing is paid. Price: $0.01 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Probe an x402 endpoint: alive? what does it charge, on which chain, to whom? Is
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
Only reads 16Show 16 read-only tools
  • cron_nextExplain a cron expression and list its next run times in any time zone.No findings

    Why it is in this group

    • The description's first verb is "explain": a word for reading.
    Description, as the server wrote it
    Explain a cron expression and list its next run times in any time zone. Parses a 5-field cron expression (lists, ranges, steps, month/day names, @daily/@hourly/... macros, Vixie day-of-month OR day-of-week rule) and returns the next N run times (up to 50) in UTC and in the given IANA zone, DST-aware. Price: $0.003 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Explain a cron expression and list its next run times in any time zone
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • dns_lookupDNS lookup for any record type over DNS-over-HTTPS.Reads text others writeNo findings

    Why it is in this group

    • The name "dns_lookup" says "lookup": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe description's first sentence says "http": it reads web pages, which anyone can write.
    Description, as the server wrote it
    DNS lookup for any record type over DNS-over-HTTPS. Resolve A, AAAA, MX, TXT, NS, CNAME, SOA, CAA, SRV, PTR, DS, DNSKEY, HTTPS, SVCB, TLSA or NAPTR records for a name. Returns answers with TTLs, the DNS status and whether DNSSEC validated. TXT strings are joined. Price: $0.005 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: DNS lookup for any record type over DNS-over-HTTPS
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • email_validateE-mail address check: syntax, MX, disposable, role, free provider, typos.Reads text others writeNo findings

    Why it is in this group

    • The name "email_validate" says "validate": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    E-mail address check: syntax, MX, disposable, role, free provider, typos. Validates an address without sending mail: RFC syntax, normalized IDN domain, MX (or implicit A) records, null-MX, disposable-domain list, role accounts (info@, admin@), free providers and typo suggestions (gmial.com -> gmail.com). Verdict: deliverable, risky, undeliverable or invalid. Price: $0.005 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: E-mail address check: syntax, MX, disposable, role, free provider, typos
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • ens_resolveENS: resolve a name to an address, or an address to its primary name (verified).Reads text others writeNo findings

    Why it is in this group

    • The name "ens_resolve" says "resolve": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    ENS: resolve a name to an address, or an address to its primary name (verified). Give "name" (vitalik.eth) to get its Ethereum address, resolver and namehash; give "address" to get its primary ENS name via reverse resolution, verified by resolving the name forward again. Reads the ENS registry on Ethereum mainnet. Price: $0.005 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: ENS: resolve a name to an address, or an address to its primary name (verified)
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • evm_addressValidate an EVM address and return its EIP-55 checksum form.Reads text others writeNo findings

    Why it is in this group

    • The description's first verb is "validate": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Validate an EVM address and return its EIP-55 checksum form. Checks the 0x + 40 hex format, verifies a mixed-case EIP-55 checksum (flags typos), and returns the checksummed and lowercase forms and whether it is the zero address. No network access. Price: $0.003 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Validate an EVM address and return its EIP-55 checksum form
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • evm_selector_lookupReverse-lookup 4-byte function selectors and 32-byte event topics to signatures.Reads text others writeNo findings

    Why it is in this group

    • The name "evm_selector_lookup" says "lookup": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Reverse-lookup 4-byte function selectors and 32-byte event topics to signatures. Looks up up to 20 selectors (0x + 8 hex) and event topics (0x + 64 hex) in the public openchain signature database (4byte.directory fallback) and returns candidate signatures, verified-contract ones first. Price: $0.005 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Reverse-lookup 4-byte function selectors and 32-byte event topics to signatures
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • evm_txExplain an EVM transaction: status, fee, decoded method, ERC-20/721 transfers.Reads text others writeNo findings

    Why it is in this group

    • The description's first verb is "explain": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Explain an EVM transaction: status, fee, decoded method, ERC-20/721 transfers. Fetches a transaction and its receipt from a public RPC: from/to, value, status, block and time, gas used, effective gas price and fee in native currency, the decoded method call, and every Transfer event (ERC-20 amounts formatted with token decimals and symbols, ERC-721 token ids). Price: $0.01 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Explain an EVM transaction: status, fee, decoded method, ERC-20/721 transfers
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • iban_validateValidate an IBAN: country length, mod-97 check digits, formatted output.No findings

    Why it is in this group

    • The name "iban_validate" says "validate": a word for reading.
    Description, as the server wrote it
    Validate an IBAN: country length, mod-97 check digits, formatted output. Validates International Bank Account Numbers for 80+ countries: structure, country-specific length and the ISO 13616 mod-97 checksum. Returns the normalized and print-formatted IBAN, BBAN and (for DE/GB) the bank code / sort code. Offline; nothing is stored. Price: $0.003 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Validate an IBAN: country length, mod-97 check digits, formatted output
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • json_diffStructural diff of two JSON documents as JSON-Patch-style operations.Reads private dataNo findings

    Why it is in this group

    • The name "json_diff" says "diff": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "document": it reads documents.
    Description, as the server wrote it
    Structural diff of two JSON documents as JSON-Patch-style operations. Compares two JSON values key by key and index by index and returns add / remove / replace operations with JSON Pointer paths and old and new values (up to 2,000 operations). Price: $0.003 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Structural diff of two JSON documents as JSON-Patch-style operations
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • json_queryExtract values from JSON with a JSON Pointer or a dotted path (a.b[0].c, items[*].id).No findings

    Why it is in this group

    • The name "json_query" says "query": a word for reading.
    Description, as the server wrote it
    Extract values from JSON with a JSON Pointer or a dotted path (a.b[0].c, items[*].id). Reads one value by RFC 6901 JSON Pointer (/a/b/0) or a dotted path with [index] and [*] wildcards. Up to 20 paths per call. Price: $0.003 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Extract values from JSON with a JSON Pointer or a dotted path (a.b[0].c, items[*
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • json_validateValidate JSON data against a JSON Schema (draft 2020-12 / draft-07).No findings

    Why it is in this group

    • The name "json_validate" says "validate": a word for reading.
    Description, as the server wrote it
    Validate JSON data against a JSON Schema (draft 2020-12 / draft-07). Checks data against a schema: types, enum/const, numeric and string limits, patterns, formats (email, date-time, uri, uuid, ipv4/6, hostname), arrays, objects, $ref (same document), allOf/anyOf/oneOf/not, if/then/else. Returns every error with its JSON Pointer path. Remote $ref is not fetched. Price: $0.003 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Validate JSON data against a JSON Schema (draft 2020-12 / draft-07)
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • text_diffLine diff of two texts as a unified diff with added/removed counts.No findings

    Why it is in this group

    • The name "text_diff" says "diff": a word for reading.
    Description, as the server wrote it
    Line diff of two texts as a unified diff with added/removed counts. Computes a minimal line-based diff (LCS) between two texts and returns unified-diff hunks with configurable context, plus counts of added and removed lines. Up to 5,000 lines per side. Price: $0.003 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Line diff of two texts as a unified diff with added/removed counts
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • time_diffDuration between two dates/times, calendar difference and business days.Reads private dataNo findings

    Why it is in this group

    • The name "time_diff" says "diff": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "calendar": it reads calendars.
    Description, as the server wrote it
    Duration between two dates/times, calendar difference and business days. Exact duration (seconds, minutes, hours, days), calendar difference in years/months/days, and the number of weekdays (Mon-Fri) between two dates, evaluated in a chosen time zone. Optionally adds a duration to a date. Price: $0.003 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Duration between two dates/times, calendar difference and business days
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • web_extractFetch a web page and return clean main text and Markdown plus title and metadata.Reads text others writeCan send data outNo findings

    Why it is in this group

    • The description's first verb is "fetch": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe name "web_extract" says "web": it reads web pages, which anyone can write.
    • untrusted-inputThe description's first sentence says "fetch" and "web": it reads web pages, which anyone can write.
    • untrusted-inputThe input takes a URL (input.url), and the tool reads it: it reads web pages, which anyone can write.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Claude Code: ask, because it is tagged outbound.

    Description, as the server wrote it
    Fetch a web page and return clean main text and Markdown plus title and metadata. Fetches a public URL (redirects followed and re-checked) and converts the HTML to clean text and Markdown: main/article content first, navigation/footers/scripts removed, links made absolute. Also returns title, description, language, canonical URL, headings and word count. Plain-text and JSON responses are returned as-is. Price: $0.01 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Fetch a web page and return clean main text and Markdown plus title and metadata
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • web_sitemapRead a sitemap.xml (or a site's default sitemap): URLs with lastmod, child sitemaps.Reads text others writeCan send data outNo findings

    Why it is in this group

    • The description's first verb is "read": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe name "web_sitemap" says "web": it reads web pages, which anyone can write.
    • untrusted-inputThe input takes a URL (input.url), and the tool reads it: it reads web pages, which anyone can write.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Claude Code: ask, because it is tagged outbound.

    Description, as the server wrote it
    Read a sitemap.xml (or a site's default sitemap): URLs with lastmod, child sitemaps. Fetches a sitemap URL, or for a bare site URL tries the sitemaps declared in robots.txt and then /sitemap.xml. Returns page URLs with lastmod/changefreq/priority, or the child sitemaps of a sitemap index. Up to 5,000 entries; gzip sitemaps are not decoded. Price: $0.008 USDC per call via x402 (eip155:8453).

    Annotations the server declares

    • title: Read a sitemap.xml (or a site's default sitemap): URLs with lastmod, child sitem
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

832 paths in this server alone from private data, through text someone else wrote, to a way out. Denying 2 private-data tools breaks every one.

Reads private data2
Reads files, mail, messages, databases, secrets, calendars or repositories.
Reads text others write32
Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
Can send data out13
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
deny to break every path
{
  "permissions": {
    "deny": [
      "mcp__x402-toolbox__json_diff",
      "mcp__x402-toolbox__time_diff"
    ]
  }
}

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Findings

Matches of fixed checks, with the text they matched.

10 warn
  • The server marks "web_links" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "web_links" says "link": a word for a change.

    What this check looks for
  • The server marks "html_extract" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The description's first verb is "convert": a word for a change.

    What this check looks for
  • The server marks "evm_units" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The input addresses people (input.to): what it sends cannot be taken back.

    What this check looks for
  • The server marks "cidr_aggregate" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "merge": a word for a change that another call does not undo.

    What this check looks for
  • The server marks "ip_range_to_cidr" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

    What this check looks for
  • Warnencode

    The server marks "encode" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

    What this check looks for
Show 4 more findings
  • Warnuuid

    The server marks "uuid" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The description's first verb is "generate": a word for a change.

    What this check looks for
  • The server marks "unit_convert" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "unit_convert" says "convert": a word for a change.

    What this check looks for
  • The server marks "time_convert" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "time_convert" says "convert": a word for a change.

    What this check looks for
  • The server marks "currency_convert" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "currency_convert" says "convert": a word for a change.

    What this check looks for

History

Changes to its tool definitions and to its remote endpoint, newest first.

No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.

Install

Pinned to version 1.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http x402-toolbox https://x402-toolbox.swiftbotlab.workers.dev/mcp
claude mcp add --transport http x402-toolbox https://x402-toolbox.swiftbotlab.workers.dev/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__x402-toolbox__dns_lookup",
      "mcp__x402-toolbox__email_validate",
      "mcp__x402-toolbox__evm_address",
      "mcp__x402-toolbox__evm_selector_lookup",
      "mcp__x402-toolbox__evm_tx",
      "mcp__x402-toolbox__ens_resolve",
      "mcp__x402-toolbox__x402_search",
      "mcp__x402-toolbox__json_validate",
      "mcp__x402-toolbox__json_query",
      "mcp__x402-toolbox__json_diff",
      "mcp__x402-toolbox__text_diff",
      "mcp__x402-toolbox__time_diff",
      "mcp__x402-toolbox__cron_next",
      "mcp__x402-toolbox__iban_validate"
    ],
    "ask": [
      "mcp__x402-toolbox__dns_mx",
      "mcp__x402-toolbox__dns_reverse",
      "mcp__x402-toolbox__dns_spf",
      "mcp__x402-toolbox__dns_dmarc",
      "mcp__x402-toolbox__email_security",
      "mcp__x402-toolbox__domain_rdap",
      "mcp__x402-toolbox__web_extract",
      "mcp__x402-toolbox__web_metadata",
      "mcp__x402-toolbox__web_links",
      "mcp__x402-toolbox__web_headers",
      "mcp__x402-toolbox__web_robots",
      "mcp__x402-toolbox__web_sitemap",
      "mcp__x402-toolbox__html_extract",
      "mcp__x402-toolbox__url_parse",
      "mcp__x402-toolbox__evm_contract",
      "mcp__x402-toolbox__evm_selector",
      "mcp__x402-toolbox__abi_encode",
      "mcp__x402-toolbox__abi_decode",
      "mcp__x402-toolbox__calldata_decode",
      "mcp__x402-toolbox__evm_token",
      "mcp__x402-toolbox__evm_balance",
      "mcp__x402-toolbox__evm_gas",
      "mcp__x402-toolbox__evm_units",
      "mcp__x402-toolbox__evm_verify_message",
      "mcp__x402-toolbox__x402_check",
      "mcp__x402-toolbox__ip_info",
      "mcp__x402-toolbox__cidr_info",
      "mcp__x402-toolbox__cidr_contains",
      "mcp__x402-toolbox__cidr_split",
      "mcp__x402-toolbox__cidr_aggregate",
      "mcp__x402-toolbox__ip_range_to_cidr",
      "mcp__x402-toolbox__json_format",
      "mcp__x402-toolbox__csv_to_json",
      "mcp__x402-toolbox__json_to_csv",
      "mcp__x402-toolbox__text_stats",
      "mcp__x402-toolbox__text_transform",
      "mcp__x402-toolbox__hash",
      "mcp__x402-toolbox__hmac",
      "mcp__x402-toolbox__encode",
      "mcp__x402-toolbox__uuid",
      "mcp__x402-toolbox__jwt_decode",
      "mcp__x402-toolbox__random",
      "mcp__x402-toolbox__unit_convert",
      "mcp__x402-toolbox__time_convert",
      "mcp__x402-toolbox__color",
      "mcp__x402-toolbox__currency_convert",
      "mcp__x402-toolbox__semver",
      "mcp__x402-toolbox__user_agent"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as x402-toolbox. Review it before you use it.

Capability tags behind 38 rules
  • mcp__x402-toolbox__dns_lookup untrusted-input
  • mcp__x402-toolbox__dns_mx untrusted-input
  • mcp__x402-toolbox__dns_reverse untrusted-input
  • mcp__x402-toolbox__dns_spf untrusted-input
  • mcp__x402-toolbox__dns_dmarc untrusted-input
  • mcp__x402-toolbox__email_validate untrusted-input
  • mcp__x402-toolbox__email_security untrusted-input
  • mcp__x402-toolbox__domain_rdap untrusted-input
  • mcp__x402-toolbox__web_extract untrusted-input, outbound
  • mcp__x402-toolbox__web_metadata untrusted-input, outbound
  • mcp__x402-toolbox__web_links untrusted-input, outbound
  • mcp__x402-toolbox__web_headers untrusted-input, outbound
  • mcp__x402-toolbox__web_robots untrusted-input, outbound
  • mcp__x402-toolbox__web_sitemap untrusted-input, outbound
  • mcp__x402-toolbox__html_extract untrusted-input
  • mcp__x402-toolbox__url_parse untrusted-input, outbound
  • mcp__x402-toolbox__evm_address untrusted-input
  • mcp__x402-toolbox__evm_contract untrusted-input
  • mcp__x402-toolbox__evm_selector untrusted-input
  • mcp__x402-toolbox__evm_selector_lookup untrusted-input
  • mcp__x402-toolbox__abi_encode untrusted-input
  • mcp__x402-toolbox__abi_decode untrusted-input
  • mcp__x402-toolbox__calldata_decode untrusted-input
  • mcp__x402-toolbox__evm_tx untrusted-input
  • mcp__x402-toolbox__evm_token untrusted-input
  • mcp__x402-toolbox__evm_balance untrusted-input
  • mcp__x402-toolbox__evm_gas untrusted-input
  • mcp__x402-toolbox__ens_resolve untrusted-input
  • mcp__x402-toolbox__evm_units untrusted-input, outbound
  • mcp__x402-toolbox__evm_verify_message untrusted-input
  • mcp__x402-toolbox__x402_check untrusted-input, outbound
  • mcp__x402-toolbox__x402_search untrusted-input
  • mcp__x402-toolbox__json_diff private-data
  • mcp__x402-toolbox__encode outbound
  • mcp__x402-toolbox__unit_convert outbound
  • mcp__x402-toolbox__time_convert outbound
  • mcp__x402-toolbox__time_diff private-data
  • mcp__x402-toolbox__currency_convert outbound

Pin

Keep the decision: fail CI when the tools change, follow every change, or show a badge.

Pin in CI

Fail a build when the tools you reviewed are not the tools the server serves today.

curl -s "https://anlyon.dev/api/v1/servers/io.github.swiftbotlab/x402-toolbox/verify?hash=315c913ec491aef0e4847e773fa7805ad9d81b36848beb7bc94586038449a306" | jq -e '.changed == false'

Pinned hash 315c913ec491, from Oct 27, 2026, 07:18 UTC.

Watch

Get told when its tools change: a new tool, a new description, a new class.

https://anlyon.dev/servers/io.github.swiftbotlab/x402-toolbox/changes.xml

An Atom feed. Works in any feed reader or Slack's RSS app.

Badge

anlyon.dev badge for io.github.swiftbotlab/x402-toolbox
[![anlyon.dev](https://anlyon.dev/badge/io.github.swiftbotlab/x402-toolbox.svg)](https://anlyon.dev/servers/io.github.swiftbotlab/x402-toolbox)

Source: MCP Registry · repository. Synced Oct 27, 2026, 07:17 UTC.