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.
- 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".
What this check looks forMatched 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.
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".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "currency_convert" says "convert": a word for a change.
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".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
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".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The input addresses people (input.to): what it sends cannot be taken back.
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".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "time_convert" says "convert": a word for a change.
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".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "unit_convert" says "convert": a word for a change.
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".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The description's first verb is "convert": a word for a change.
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".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
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".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The description's first verb is "generate": a word for a change.
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_linksAll links on a page, absolute, de-duplicated, split into internal and external.Reads text others writeCan send data out1 finding
Why it is in this group
- The name "web_links" says "link": 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.
- outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
Findings
- Warn
The server marks "web_links" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "web_links" says "link": a word for a change.
Description, as the server wrote it All links on a page, absolute, de-duplicated, split into internal and external. Fetches a page and returns every <a href> as an absolute URL with its anchor text and rel, de-duplicated, marked internal or external (same registrable host), plus counts of nofollow links, mailto/tel links and images. Price: $0.008 USDC per call via x402 (eip155:8453).
Annotations the server declares
- title: All links on a page, absolute, de-duplicated, split into internal and external
- 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
x402_searchSearch the x402 Bazaar catalogs for paid APIs by keyword, with prices.Reads text others writeNo findings
Why it is in this group
- The name "x402_search" says "search": 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 Search the x402 Bazaar catalogs for paid APIs by keyword, with prices. Searches the public discovery catalogs of the Coinbase CDP facilitator and the PayAI facilitator, merges and de-duplicates the results and returns each resource URL with its description, method, network and USD price. Filter by network or maximum price. Price: $0.01 USDC per call via x402 (eip155:8453).
Annotations the server declares
- title: Search the x402 Bazaar catalogs for paid APIs by keyword, with prices
- 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.
{
"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.
- Warnweb_links
The server marks "web_links" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "web_links" says "link": a word for a change.
- Warnhtml_extract
The server marks "html_extract" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The description's first verb is "convert": a word for a change.
- Warnevm_units
The server marks "evm_units" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The input addresses people (input.to): what it sends cannot be taken back.
- Warncidr_aggregate
The server marks "cidr_aggregate" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched 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.
- Warnip_range_to_cidr
The server marks "ip_range_to_cidr" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
- Warnencode
The server marks "encode" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
Show 4 more findingsShow fewer
- Warnuuid
The server marks "uuid" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The description's first verb is "generate": a word for a change.
- Warnunit_convert
The server marks "unit_convert" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "unit_convert" says "convert": a word for a change.
- Warntime_convert
The server marks "time_convert" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "time_convert" says "convert": a word for a change.
- Warncurrency_convert
The server marks "currency_convert" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "currency_convert" says "convert": a word for a change.
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/mcpclaude mcp add --transport http x402-toolbox https://x402-toolbox.swiftbotlab.workers.dev/mcpRun 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.
{
"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.xmlAn Atom feed. Works in any feed reader or Slack's RSS app.
Badge
[](https://anlyon.dev/servers/io.github.swiftbotlab/x402-toolbox)Source: MCP Registry · repository. Synced Oct 27, 2026, 07:17 UTC.