MoneyTools Tools
dev.moneytools/toolsmoneytools.devstreamable-httpv1.0.0Scanned
25 read-only agent utilities: token safety, approvals, tx decode, EIP-712 risk, DNS, time; free tier
90 tools: 1 can delete or cancel things, 5 do something that can't be undone, 59 change things and 25 only read.
- Reads private data · 3
- Reads text others write · 90
- Can send data out · 19
- 34 findings
Tools listed without sign-in. Remote posture
Anlyon alternative
65 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.
90 tools
Deletes or cancels 1Claude Code: deny
allowance_revoke_planFind risky ERC-20 approvals for a wallet (default: common tokens × 20 well-known routers/spenders, or your own lists) and get UNSIGNED approve(spender,0) revoke transactions.Reads text others write3 findings
Why it is in this group
- The name "allowance_revoke_plan" says "revoke": a word for removing or ending something.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
- The server marks it not destructive (destructiveHint: false), 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 input schema at properties.owner.examples[0] contains a 42-character base64 string.
What this check looks forMatched text
inputSchema.properties.owner.examples[0]: "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
- Warn
The server marks "allowance_revoke_plan" read-only (readOnlyHint: true), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "allowance_revoke_plan" says "revoke": a word for removing or ending something.
- Warn
The server marks "allowance_revoke_plan" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "allowance_revoke_plan" says "revoke": a word for removing or ending something.
Description, as the server wrote it Find risky ERC-20 approvals for a wallet (default: common tokens × 20 well-known routers/spenders, or your own lists) and get UNSIGNED approve(spender,0) revoke transactions. Read-only. Free: 10 calls/day; then $0.003 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Token approvals + revoke plan
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
Can't be undone 5Claude Code: ask
currency_convertConvert fiat amounts with daily reference rates (ECB via Frankfurter; other currencies e.g.Reads text others writeCan 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
- 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 "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":true}; The name "currency_convert" says "convert": a word for a change.
Description, as the server wrote it Convert fiat amounts with daily reference rates (ECB via Frankfurter; other currencies e.g. TWD from ExchangeRate-API open access, attributed). Not tradable quotes. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Currency converter
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
number_baseConvert big integers between bases 2-36 (hex/bin/oct/dec, 0x/0b/0o prefixes) with two's complement for 8-256 bits.Reads text others writeCan 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
- 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 "number_base" 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 description's first verb is "convert": a word for a change.
Description, as the server wrote it Convert big integers between bases 2-36 (hex/bin/oct/dec, 0x/0b/0o prefixes) with two's complement for 8-256 bits. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Number base converter (BigInt)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
qr_payment_linkSVG QR code for any text/URL, or build an EIP-681 payment link + QR for a token amount to an address (for an agent asking a human to pay).Reads text others writeCan send data out1 finding
Why it is in this group
- The name "qr_payment_link" says "link": 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
- 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 "qr_payment_link" 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 name "qr_payment_link" says "link": a word for a change.
Description, as the server wrote it SVG QR code for any text/URL, or build an EIP-681 payment link + QR for a token amount to an address (for an agent asking a human to pay). We never receive the funds. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: QR code + crypto payment link
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
time_convertop=now|convert|diff|add: current time in many zones, convert a local time between IANA zones (DST-aware), difference incl.Reads text others writeCan 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
- 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 "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":true}; The name "time_convert" says "convert": a word for a change.
Description, as the server wrote it op=now|convert|diff|add: current time in many zones, convert a local time between IANA zones (DST-aware), difference incl. business days, add ISO-8601 durations. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Time-zone converter & date math
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
unit_convertLength, mass, volume, area (incl.Reads text others writeCan 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
- 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 "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":true}; The name "unit_convert" says "convert": a word for a change.
Description, as the server wrote it Length, mass, volume, area (incl. 坪/ping), speed, time, data (KB vs KiB), energy, pressure, temperature and exact wei/gwei/ETH conversion. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Unit converter
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
Changes things 59Claude Code: ask
abi_encodeBuild calldata from a function signature and arguments (selector + encoded args).Reads text others write1 finding
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.
Findings
- Warn
The input schema at properties.args.examples[0] contains a 42-character base64 string.
What this check looks forMatched text
inputSchema.properties.args.examples[0]: "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045,1000000"
Description, as the server wrote it Build calldata from a function signature and arguments (selector + encoded args). Unsigned bytes only, for agents preparing a tx for a human or wallet to review. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: ABI-encode calldata
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
address_profileProfile an EVM address or ENS name across Ethereum, Base, Arbitrum, Optimism, Polygon, BSC, Avalanche: EOA vs contract vs EIP-7702 delegated, nonce, native balances in USD, primary…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 Profile an EVM address or ENS name across Ethereum, Base, Arbitrum, Optimism, Polygon, BSC, Avalanche: EOA vs contract vs EIP-7702 delegated, nonce, native balances in USD, primary ENS name, known-contract label. Free: 10 calls/day; then $0.002 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Address profile (7 chains)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
apr_apyConvert APR to APY (or back) for any compounding frequency, project earnings over N days with optional performance fee, doubling time.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 "apr_apy" 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 APR to APY (or back) for any compounding frequency, project earnings over N days with optional performance fee, doubling time. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: APR ↔ APY & compounding
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
broken_linksExtract links from a page and check up to 12 of them (HEAD, GET fallback): status, redirects, latency, broken list.Reads text others writeCan send data out1 finding
Why it is in this group
- The name "broken_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 "broken_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 "broken_links" says "link": a word for a change.
Description, as the server wrote it Extract links from a page and check up to 12 of them (HEAD, GET fallback): status, redirects, latency, broken list. Free: 10 calls/day; then $0.003 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Broken link checker
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
btc_addressConfirmed and pending BTC balance (USD), tx count, address type and reuse for any Bitcoin address (mempool.space public API).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 Confirmed and pending BTC balance (USD), tx count, address type and reuse for any Bitcoin address (mempool.space public API). Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Bitcoin address balance
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
btc_feesRecommended sat/vB for next block, 30 min, 1 hour and economy, and what your transaction will cost in sats and USD.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 Recommended sat/vB for next block, 30 min, 1 hour and economy, and what your transaction will cost in sats and USD. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Bitcoin fee estimator
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
calldata_decodeDecode raw EVM calldata before signing: function name and typed arguments via the open Sourcify signature DB (or your ABI / signature), plus a plain-language meaning for risky sele…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 raw EVM calldata before signing: function name and typed arguments via the open Sourcify signature DB (or your ABI / signature), plus a plain-language meaning for risky selectors (approve, setApprovalForAll, permit...). Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Calldata decoder
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
card_number_checkLuhn checksum, brand (Visa, Mastercard, Amex, JCB, UnionPay...) and length check; returns only a masked number.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 Luhn checksum, brand (Visa, Mastercard, Amex, JCB, UnionPay...) and length check; returns only a masked number. Never stored. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Card number checksum (Luhn)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
chain_infoChain id → name, native currency, public RPCs, explorers, CAIP-2 id and a ready wallet_addEthereumChain object (ethereum-lists/chains, CC0).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 Chain id → name, native currency, public RPCs, explorers, CAIP-2 id and a ready wallet_addEthereumChain object (ethereum-lists/chains, CC0). Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Chain registry lookup
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
color_convertConvert hex/rgb/hsl/CSS names to hex, RGB, HSL, CMYK; luminance, best text color and WCAG AA/AAA contrast against another color.Reads text others write1 finding
Why it is in this group
- The name "color_convert" says "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 "color_convert" 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 "color_convert" says "convert": a word for a change.
Description, as the server wrote it Convert hex/rgb/hsl/CSS names to hex, RGB, HSL, CMYK; luminance, best text color and WCAG AA/AAA contrast against another color. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Color converter + WCAG contrast
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
contract_readCall any view function with a human signature and args, e.g.Reads text others write3 findings
Why it is in this group
- The name "contract_read" says "read": a word for reading.
- The description's first verb is "call": 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 input schema at properties.address.examples[0] contains a 42-character base64 string.
What this check looks forMatched text
inputSchema.properties.address.examples[0]: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
- Warn
The input schema at properties.args.examples[0] contains a 42-character base64 string.
What this check looks forMatched text
inputSchema.properties.args.examples[0]: "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
- Warn
The server marks "contract_read" 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 "contract_read" says "read": a word for reading.
Description, as the server wrote it Call any view function with a human signature and args, e.g. balanceOf(address) returns (uint256); decoded result. Optional historical block. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Read any contract (eth_call)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
cron_next_runsNext N run times of a 5-field cron expression (or @daily etc.) in any IANA time zone, with a plain-language description.Reads text others write1 finding
Why it is in this group
- The name "cron_next_runs" says "run": 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 "cron_next_runs" 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 "cron_next_runs" says "run": a word for a change.
Description, as the server wrote it Next N run times of a 5-field cron expression (or @daily etc.) in any IANA time zone, with a plain-language description. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Cron next-run calculator
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
csv_json_convertCSV to JSON (auto delimiter, headers, typed values, error rows) or JSON array to CSV.Reads text others write1 finding
Why it is in this group
- The name "csv_json_convert" says "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 "csv_json_convert" 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 "csv_json_convert" says "convert": a word for a change.
Description, as the server wrote it CSV to JSON (auto delimiter, headers, typed values, error rows) or JSON array to CSV. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: CSV ↔ JSON converter
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
dex_priceExecutable-style price of any ERC-20 in USDC from DEX aggregator quotes (KyberSwap, quote only), price impact at a chosen size, route DEXes and deviation vs DefiLlama reference.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 Executable-style price of any ERC-20 in USDC from DEX aggregator quotes (KyberSwap, quote only), price impact at a chosen size, route DEXes and deviation vs DefiLlama reference. Free: 10 calls/day; then $0.002 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Token price from DEX quotes
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
domain_rdapRegistrar, creation/expiry dates, age in days, status codes, nameservers and DNSSEC from RDAP; flags very new domains (phishing signal) and near expiry.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 Registrar, creation/expiry dates, age in days, status codes, nameservers and DNSSEC from RDAP; flags very new domains (phishing signal) and near expiry. Free: 10 calls/day; then $0.002 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Domain registration (RDAP)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
ens_availableIs name.eth available?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 name.eth available? Registered / grace period / available, expiry date, yearly base price and registration link. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: ENS name availability
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
erc20_infoName, symbol, decimals, total supply, owner, paused, upgradeable-proxy detection and (optional) a holder's balance for any ERC-20.Reads text others write1 finding
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.
Findings
- Warn
The input schema at properties.token.examples[0] contains a 42-character base64 string.
What this check looks forMatched text
inputSchema.properties.token.examples[0]: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
Description, as the server wrote it Name, symbol, decimals, total supply, owner, paused, upgradeable-proxy detection and (optional) a holder's balance for any ERC-20. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: ERC-20 token facts + balance
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
erc4626_vaultYield vault facts: underlying asset, total assets, share price (assets per share), deposits open, and a holder's position.Reads text others write1 finding
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.
Findings
- Warn
The input schema at properties.vault.examples[0] contains a 42-character base64 string.
What this check looks forMatched text
inputSchema.properties.vault.examples[0]: "0xbeeF010f9cb27031ad51e3333f9aF9C6B1228183"
Description, as the server wrote it Yield vault facts: underlying asset, total assets, share price (assets per share), deposits open, and a holder's position. Free: 10 calls/day; then $0.002 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: ERC-4626 vault reader
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
feed_parseParse a feed (or autodiscover it from a web page) into clean JSON: title, latest items with link, date and summary.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 a feed (or autodiscover it from a web page) into clean JSON: title, latest items with link, date and summary. Free: 10 calls/day; then $0.002 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: RSS / Atom / JSON Feed reader
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
hash_encodesha256/sha1/sha512/md5/keccak256, function selector, HMAC-SHA256, base64(url), hex, URL encoding, UUIDs, JWT decode (unverified), EVM checksum 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 sha256/sha1/sha512/md5/keccak256, function selector, HMAC-SHA256, base64(url), hex, URL encoding, UUIDs, JWT decode (unverified), EVM checksum address. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Hash / encode / decode
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
id_generateGenerate UUID v4/v7, ULID or nanoid (up to 100), or decode a UUID/ULID to its version and embedded timestamp.Reads text others write1 finding
Why it is in this group
- The name "id_generate" says "generate": 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 "id_generate" 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 "id_generate" says "generate": a word for a change.
Description, as the server wrote it Generate UUID v4/v7, ULID or nanoid (up to 100), or decode a UUID/ULID to its version and embedded timestamp. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: UUID / ULID / nanoid generator + decoder
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
idn_homograph_checkDecode punycode, detect mixed scripts and look-alike characters (Cyrillic а vs Latin a) and one-letter typos of major brands/wallets.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 punycode, detect mixed scripts and look-alike characters (Cyrillic а vs Latin a) and one-letter typos of major brands/wallets. Anti-phishing for agents. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Look-alike domain (homograph) check
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
impermanent_lossLP value vs holding after a price move: full-range (Uniswap v2) and concentrated range (v3, lower/upper) impermanent loss.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 LP value vs holding after a price move: full-range (Uniswap v2) and concentrated range (v3, lower/upper) impermanent loss. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Impermanent loss calculator
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
ip_cidrIPv4/IPv6 subnet math: network, range, size, netmask/wildcard, private/reserved type, contains-check and subnet split.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 IPv4/IPv6 subnet math: network, range, size, netmask/wildcard, private/reserved type, contains-check and subnet split. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: IP / CIDR calculator
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
ip_ownerWho owns this IP?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 Who owns this IP? Network name, CIDR, country, organization and abuse contact from the regional internet registries (RDAP). Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: IP owner / network (RDAP)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
language_detectDetect the language of a text (82 languages, ISO 639-3 + BCP 47), including Traditional vs Simplified Chinese.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 Detect the language of a text (82 languages, ISO 639-3 + BCP 47), including Traditional vs Simplified Chinese. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Language detection
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
liquidation_pricePerp (isolated margin: side, entry, leverage, maintenance margin) or lending (collateral, debt, liquidation threshold → health factor) liquidation price and distance.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 Perp (isolated margin: side, entry, leverage, maintenance margin) or lending (collateral, debt, liquidation threshold → health factor) liquidation price and distance. Risk math, not advice. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Liquidation price calculator
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
loan_amortizationMonthly payment, total interest and schedule for annuity (本息平均攤還) or equal-principal (本金平均攤還) loans.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 Monthly payment, total interest and schedule for annuity (本息平均攤還) or equal-principal (本金平均攤還) loans. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Loan / mortgage amortization
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
lunar_dateGregorian ↔ Chinese lunar date (incl.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 Gregorian ↔ Chinese lunar date (incl. leap months) with 干支 year and zodiac; e.g. find the solar date of 中秋 (8/15). Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Lunar (農曆) date converter
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
markdown_to_htmlRender GitHub-flavored Markdown to HTML with raw HTML escaped and script URLs removed; also returns the heading outline.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 Render GitHub-flavored Markdown to HTML with raw HTML escaped and script URLs removed; also returns the heading outline. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Markdown → HTML
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
mcp_tools_lintConnect to an MCP server (streamable HTTP) or take a tools/list array and lint every tool: names, descriptions, JSON Schema, required params, annotations; score + fixes.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 Connect to an MCP server (streamable HTTP) or take a tools/list array and lint every tool: names, descriptions, JSON Schema, required params, annotations; score + fixes. Free: 10 calls/day; then $0.003 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: MCP tool-definition linter
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
nft_metadataERC-721/1155 token: standard, collection name, owner, tokenURI resolved (IPFS/Arweave/data URI) and the metadata JSON with image URL; says whether metadata is on-chain, IPFS or a m…Reads text others write1 finding
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.
Findings
- Warn
The input schema at properties.contract.examples[0] contains a 42-character base64 string.
What this check looks forMatched text
inputSchema.properties.contract.examples[0]: "0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D"
Description, as the server wrote it ERC-721/1155 token: standard, collection name, owner, tokenURI resolved (IPFS/Arweave/data URI) and the metadata JSON with image URL; says whether metadata is on-chain, IPFS or a mutable server. Free: 10 calls/day; then $0.002 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: NFT metadata + owner
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
og_image_checkDoes the page's og:image work in link previews?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 Does the page's og:image work in link previews? Fetches it and checks status, type, file size, pixel dimensions and aspect ratio (1200×630). Free: 10 calls/day; then $0.002 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Link-preview image check
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
openapi_lintLint an OpenAPI/Swagger JSON or YAML: operationIds, descriptions, responses, undeclared path params, missing security schemes, servers, x402 payment info.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 Lint an OpenAPI/Swagger JSON or YAML: operationIds, descriptions, responses, undeclared path params, missing security schemes, servers, x402 payment info. Free: 10 calls/day; then $0.003 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: OpenAPI linter (agent readiness)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
password_strengthEntropy, common-password and pattern checks (sequences, years, Word123!), crack-time estimates and feedback.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 Entropy, common-password and pattern checks (sequences, years, Word123!), crack-time estimates and feedback. Never stored or logged. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Password strength estimate
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
public_holidaysOfficial Taiwan government office calendar (holidays, 補假, make-up workdays) or US federal holidays with observed dates, plus the next holiday.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 Official Taiwan government office calendar (holidays, 補假, make-up workdays) or US federal holidays with observed dates, plus the next holiday. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Public holidays (Taiwan / US)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
regex_testRun a JavaScript regex on text: all matches with index and capture groups, optional replace, and a ReDoS warning for nested quantifiers.Reads text others write1 finding
Why it is in this group
- The description's first verb is "run": 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 "regex_test" 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 "run": a word for a change.
Description, as the server wrote it Run a JavaScript regex on text: all matches with index and capture groups, optional replace, and a ReDoS warning for nested quantifiers. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Regex tester
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
robots_checkMay this user agent fetch this URL?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 May this user agent fetch this URL? RFC 9309 evaluation of robots.txt with the matching rule, crawl-delay, sitemaps, llms.txt presence and an allow/deny table for 12 AI crawlers. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: robots.txt / AI-crawler check
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
rpc_healthProbe the keyless public RPC endpoints of 7 EVM chains right now: up/down, latency, head block, lag.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 Probe the keyless public RPC endpoints of 7 EVM chains right now: up/down, latency, head block, lag. Returns the recommended RPC per chain. Free: 10 calls/day; then $0.002 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Public RPC health & latency
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
safe_multisig_infoIs this address a Safe multisig?Reads text others write1 finding
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.
Findings
- Warn
The input schema at properties.address.examples[0] contains a 42-character base64 string.
What this check looks forMatched text
inputSchema.properties.address.examples[0]: "0x164cb3676F4A465403F269730F0B4dE0E9D47298"
Description, as the server wrote it Is this address a Safe multisig? Owners, threshold (m-of-n), nonce, version, enabled modules, guard, fallback handler, plus risk warnings (1-of-n, modules). Free: 10 calls/day; then $0.002 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Safe multisig inspector
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
security_headers_auditGraded audit of HSTS, CSP (unsafe-inline/eval, wildcards), clickjacking, nosniff, Referrer/Permissions-Policy, cookie flags, version leaks and CORS misconfig, with fixes.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 Graded audit of HSTS, CSP (unsafe-inline/eval, wildcards), clickjacking, nosniff, Referrer/Permissions-Policy, cookie flags, version leaks and CORS misconfig, with fixes. Free: 10 calls/day; then $0.002 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Security headers audit (A-F)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
semver_checkParse and compare semantic versions, check a version against a range (^1.2, ~2.0, >=1 <2), max satisfying version and sort a list.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 Parse and compare semantic versions, check a version against a range (^1.2, ~2.0, >=1 <2), max satisfying version and sort a list. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Semver compare / range check
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
signature_verifyVerify a personal_sign message or EIP-712 typed-data signature against an address, including smart-contract wallets (ERC-1271 / ERC-6492).Reads text others write1 finding
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.
Findings
- Warn
The input schema at properties.address.examples[0] contains a 42-character base64 string.
What this check looks forMatched text
inputSchema.properties.address.examples[0]: "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"
Description, as the server wrote it Verify a personal_sign message or EIP-712 typed-data signature against an address, including smart-contract wallets (ERC-1271 / ERC-6492). Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Signature verifier (EOA + smart wallets)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
slugifyURL slug (accents removed; CJK kept or ASCII-only) and a filesystem-safe filename from any title.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 URL slug (accents removed; CJK kept or ASCII-only) and a filesystem-safe filename from any title. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Slug + safe filename
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
solana_accountSOL balance (USD), account type (wallet/program), and SPL + Token-2022 balances for any Solana address via public RPC.Reads text others write1 finding
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.
Findings
- Warn
The input schema at properties.address.examples[0] contains a 43-character base64 string.
What this check looks forMatched text
inputSchema.properties.address.examples[0]: "vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36NKPTg"
Description, as the server wrote it SOL balance (USD), account type (wallet/program), and SPL + Token-2022 balances for any Solana address via public RPC. Free: 10 calls/day; then $0.002 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Solana account + token balances
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
spf_dmarc_checkRecursively expand SPF includes, count DNS lookups against the RFC limit of 10, flag +all/?all, duplicate records and weak DMARC 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 Recursively expand SPF includes, count DNS lookups against the RFC limit of 10, flag +all/?all, duplicate records and weak DMARC policy. Free: 10 calls/day; then $0.002 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: SPF lookup-count + DMARC check
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
ssl_certificateLatest unexpired certificates for a domain from Certificate Transparency logs: issuer, names, expiry date, days left, expiring-soon warning.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 Latest unexpired certificates for a domain from Certificate Transparency logs: issuer, names, expiry date, days left, expiring-soon warning. Free: 10 calls/day; then $0.002 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: TLS certificate expiry (CT logs)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
stablecoin_pegCurrent price and deviation in bps for 15 major stablecoins (USDT, USDC, DAI, USDS, USDe, PYUSD, FDUSD, EURC...) with on_peg / watch / depeg 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 Current price and deviation in bps for 15 major stablecoins (USDT, USDC, DAI, USDS, USDe, PYUSD, FDUSD, EURC...) with on_peg / watch / depeg status. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Stablecoin peg monitor
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
taiwan_id_checkChecksum and format for 國民身分證, 居留證 (old and 2021 new format) and 統一編號 (company tax ID, new ÷5 rule).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 Checksum and format for 國民身分證, 居留證 (old and 2021 new format) and 統一編號 (company tax ID, new ÷5 rule). Not stored. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Taiwan ID / ARC / 統一編號 checker
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
text_statsCharacters, words (CJK-aware), sentences, paragraphs, reading time, LLM token estimate and top words.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 Characters, words (CJK-aware), sentences, paragraphs, reading time, LLM token estimate and top words. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Text statistics + token estimate
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
token_balancesNative + ERC-20 balances for a wallet in one multicall: major tokens on the chain by default or your own list of token addresses/symbols.Reads text others write1 finding
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.
Findings
- Warn
The input schema at properties.owner.examples[0] contains a 42-character base64 string.
What this check looks forMatched text
inputSchema.properties.owner.examples[0]: "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
Description, as the server wrote it Native + ERC-20 balances for a wallet in one multicall: major tokens on the chain by default or your own list of token addresses/symbols. Free: 10 calls/day; then $0.002 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Wallet token balances
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
token_safety_checkBefore buying an ERC-20: simulates USDC→token→USDC with aggregator quotes and reads the contract (owner, proxy, paused, supply).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 Before buying an ERC-20: simulates USDC→token→USDC with aggregator quotes and reads the contract (owner, proxy, paused, supply). Flags no-sell-route (honeypot pattern), high round-trip loss (tax / thin liquidity). Free: 10 calls/day; then $0.003 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Token safety round-trip check
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
typed_data_riskBefore an agent signs EIP-712 data: identifies Permit / Permit2 / EIP-3009 (x402) / Seaport / CoW / delegation messages, explains them in one sentence and flags unlimited amounts, …Reads text others write3 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.
Findings
- Warn
The input schema at properties.typedData.examples[0].domain.verifyingContract contains a 42-character base64 string.
What this check looks forMatched text
inputSchema.properties.typedData.examples[0].domain.verifyingContract: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
- Warn
The input schema at properties.typedData.examples[0].message.owner contains a 42-character base64 string.
What this check looks forMatched text
inputSchema.properties.typedData.examples[0].message.owner: "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
- Warn
The input schema at properties.typedData.examples[0].message.spender contains a 42-character base64 string.
What this check looks forMatched text
inputSchema.properties.typedData.examples[0].message.spender: "0x000000000022D473030F116dDEE9F6B43aC78BA3"
Description, as the server wrote it Before an agent signs EIP-712 data: identifies Permit / Permit2 / EIP-3009 (x402) / Seaport / CoW / delegation messages, explains them in one sentence and flags unlimited amounts, far deadlines, unknown spenders and NFT-drain listings. Free: 10 calls/day; then $0.003 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: EIP-712 signature risk check
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
url_metadataTitle, description, canonical, language, favicon, Open Graph + Twitter card, JSON-LD types, feeds, word count and what's missing for link previews.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 Title, description, canonical, language, favicon, Open Graph + Twitter card, JSON-LD types, feeds, word count and what's missing for link previews. Metadata only, not page content. Free: 10 calls/day; then $0.002 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Page metadata / Open Graph
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
url_parse_cleanSplit a URL into parts and query params, strip tracking params (utm_*, fbclid, gclid...) and flag phishing tricks (user@host, raw IP, shorteners, punycode).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 Split a URL into parts and query params, strip tracking params (utm_*, fbclid, gclid...) and flag phishing tricks (user@host, raw IP, shorteners, punycode). Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: URL parser + tracker remover
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
user_agent_parseBrowser, engine, OS, device type, and whether it is a known crawler or AI agent (GPTBot, ClaudeBot, PerplexityBot, scripts...).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 Browser, engine, OS, device type, and whether it is a known crawler or AI agent (GPTBot, ClaudeBot, PerplexityBot, scripts...). Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: User-agent parser + bot detection
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
vesting_scheduleCliff + linear vesting with optional TGE unlock: vested/unvested on any date and the monthly unlock schedule.Reads text others write1 finding
Why it is in this group
- The name "vesting_schedule" says "schedule": 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 "vesting_schedule" 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 "vesting_schedule" says "schedule": a word for a change.
Description, as the server wrote it Cliff + linear vesting with optional TGE unlock: vested/unvested on any date and the monthly unlock schedule. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Token vesting calculator
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
webhook_inbox_createCreate a temporary URL that records any HTTP request sent to it (method, path, query, headers, body ≤16 KB, up to 100 requests, kept 24 h); read them back with the secret token.Reads text others writeNo findings
Why it is in this group
- The name "webhook_inbox_create" says "create": a word for a change.
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 Create a temporary URL that records any HTTP request sent to it (method, path, query, headers, body ≤16 KB, up to 100 requests, kept 24 h); read them back with the secret token. For testing webhooks and callbacks. Free: 3/day.
Annotations the server declares
- title: Webhook test inbox
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
yaml_json_convertYAML (multi-document, with line-numbered errors) to JSON, or JSON to YAML.Reads text others write1 finding
Why it is in this group
- The name "yaml_json_convert" says "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 "yaml_json_convert" 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 "yaml_json_convert" says "convert": a word for a change.
Description, as the server wrote it YAML (multi-document, with line-numbered errors) to JSON, or JSON to YAML. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: YAML ↔ JSON converter
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
Only reads 25Show 25 read-only tools
a2a_card_validateFetch /.well-known/agent-card.json (or legacy agent.json) and validate required A2A fields, skills, transport and security declarations.Reads text others writeCan send data outNo findings
Why it is in this group
- The name "a2a_card_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.
- 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 /.well-known/agent-card.json (or legacy agent.json) and validate required A2A fields, skills, transport and security declarations. Free: 10 calls/day; then $0.002 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: A2A Agent Card validator
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
address_validateWhich network is this address for, and is it well-formed?Reads text others writeNo findings
Why it is in this group
- The name "address_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 Which network is this address for, and is it well-formed? EVM checksum, Bitcoin (legacy/P2SH/SegWit/Taproot), Litecoin, Dogecoin, Tron, Solana, Cosmos bech32, TON. Catches typos before sending. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Multi-chain address validator
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
block_at_timeFind the last block at or before a date/time on any of 7 EVM chains (interpolation search).Reads text others writeNo findings
Why it is in this group
- The description's first verb is "find": 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 Find the last block at or before a date/time on any of 7 EVM chains (interpolation search). For historical balance queries, snapshots and log ranges. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Block number at a timestamp
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
bridge_statusTrack a bridge transfer by its source tx hash: pending / done / failed, bridge used, sending and receiving tx with amounts (LI.FI public status API).Reads text others writeNo findings
Why it is in this group
- The name "bridge_status" says "status": 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 Track a bridge transfer by its source tx hash: pending / done / failed, bridge used, sending and receiving tx with amounts (LI.FI public status API). Free: 10 calls/day; then $0.002 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Cross-chain transfer status
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
business_daysCount business days between dates or add N business days, using the official Taiwan calendar, US federal holidays or plain weekdays.Reads private dataReads text others writeNo findings
Why it is in this group
- The description's first verb is "count": a word for reading.
What it can reach
- private-dataThe description's first sentence says "count" and "calendar": it reads calendars.
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Count business days between dates or add N business days, using the official Taiwan calendar, US federal holidays or plain weekdays. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Business-day calculator
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
contract_abiFetch a verified contract's ABI from Sourcify (open data) with proxy resolution: implementation ABI merged, function and event signature lists.Reads text others write1 finding
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.
Findings
- Warn
The input schema at properties.address.examples[0] contains a 42-character base64 string.
What this check looks forMatched text
inputSchema.properties.address.examples[0]: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
Description, as the server wrote it Fetch a verified contract's ABI from Sourcify (open data) with proxy resolution: implementation ABI merged, function and event signature lists. Free: 10 calls/day; then $0.002 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Verified contract ABI
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
dns_lookupA/AAAA/CNAME/MX/TXT/NS/CAA (or chosen types) via DNS-over-HTTPS, DNSSEC flag, SPF/DMARC/DKIM detection and common misconfigurations.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 A/AAAA/CNAME/MX/TXT/NS/CAA (or chosen types) via DNS-over-HTTPS, DNSSEC flag, SPF/DMARC/DKIM detection and common misconfigurations. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: DNS + email-auth lookup
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
dns_propagationQuery 6 public resolvers (Cloudflare, Google, AdGuard, NextDNS, AliDNS, DNSPod) and compare answers: has my DNS change propagated?Reads text others writeNo findings
Why it is in this group
- The description's first verb is "query": 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 Query 6 public resolvers (Cloudflare, Google, AdGuard, NextDNS, AliDNS, DNSPod) and compare answers: has my DNS change propagated? Free: 10 calls/day; then $0.002 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: DNS propagation check
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
ens_resolveResolve an ENS name to an address (+ url/avatar/twitter/github records, optional L2 addresses), or an address to its primary ENS name with forward verification.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.
- untrusted-inputThe description's first sentence says "resolve" and "url": it reads web pages, which anyone can write.
Description, as the server wrote it Resolve an ENS name to an address (+ url/avatar/twitter/github records, optional L2 addresses), or an address to its primary ENS name with forward verification. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: ENS resolve / reverse
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
event_logsRecent events of a contract (≤5000 blocks), decoded with your event signature or automatically via the open Sourcify signature DB.Reads private dataReads text others write1 finding
Why it is in this group
- The name "event_logs" says "log": a word for reading.
What it can reach
- private-dataThe description's first sentence says "db": it reads databases.
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Findings
- Warn
The input schema at properties.address.examples[0] contains a 42-character base64 string.
What this check looks forMatched text
inputSchema.properties.address.examples[0]: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
Description, as the server wrote it Recent events of a contract (≤5000 blocks), decoded with your event signature or automatically via the open Sourcify signature DB. Free: 10 calls/day; then $0.002 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Contract event logs (decoded)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
gas_compareCurrent gas on 7 EVM chains: base fee, priority fee, suggested maxFee, and the USD cost of a transfer, ERC-20 transfer, approve and DEX swap.Reads text others writeNo findings
Why it is in this group
- The name "gas_compare" says "compare": 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 Current gas on 7 EVM chains: base fee, priority fee, suggested maxFee, and the USD cost of a transfer, ERC-20 transfer, approve and DEX swap. Tells you the cheapest chain right now. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Multi-chain gas estimator
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
http_inspectFetch a URL and report status, redirect chain, latency, size, cache headers, CORS, parsed rate-limit headers (RateLimit-*, X-RateLimit-*, Retry-After) and a security-headers grade.Reads text others writeCan send data outNo findings
Why it is in this group
- The name "http_inspect" says "inspect": 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 "http_inspect" says "inspect" and "http": it reads web pages, which anyone can write.
- untrusted-inputThe description's first sentence says "fetch" and "url": 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 URL and report status, redirect chain, latency, size, cache headers, CORS, parsed rate-limit headers (RateLimit-*, X-RateLimit-*, Retry-After) and a security-headers grade. Free: 10 calls/day; then $0.002 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: HTTP / API inspector
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
iban_validateCheck an IBAN's country length and mod-97 check digits, return BBAN and print format.Reads text others writeNo findings
Why it is in this group
- The name "iban_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 Check an IBAN's country length and mod-97 check digits, return BBAN and print format. Not stored. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: IBAN validator
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
json_formatValidate JSON (error line + context), pretty-print/minify/sort keys, measure depth and size, and pick a value by path like a.b[0].c.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 JSON (error line + context), pretty-print/minify/sort keys, measure depth and size, and pick a value by path like a.b[0].c. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: JSON formatter, validator & path query
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
json_schema_validateValidate JSON data against a JSON Schema (draft 4, 7, 2019-09, 2020-12) and get precise error paths.Reads text others writeNo findings
Why it is in this group
- The name "json_schema_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 Validate JSON data against a JSON Schema (draft 4, 7, 2019-09, 2020-12) and get precise error paths. Use it to check tool outputs or API payloads. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: JSON Schema validator
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
jwt_inspectDecode a JWT, explain its claims (expired?Reads text others writeNo findings
Why it is in this group
- The name "jwt_inspect" says "inspect": 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 Decode a JWT, explain its claims (expired? lifetime?) and verify RS/PS/ES/EdDSA signatures against a public JWKS URL or the issuer's OIDC discovery. No secrets needed or stored. Free: 10 calls/day; then $0.002 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: JWT inspector + JWKS verify
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
llms_txt_validateCheck a site's /llms.txt against the llmstxt.org format: H1, summary, sections, link entries with notes; optional link check.Reads text others writeCan send data outNo findings
Why it is in this group
- The name "llms_txt_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.
- 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 Check a site's /llms.txt against the llmstxt.org format: H1, summary, sections, link entries with notes; optional link check. Free: 10 calls/day; then $0.002 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: llms.txt validator
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
phone_formatValidate and format phone numbers for 240+ regions (libphonenumber): E.164, international/national format, type (mobile/fixed), country.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 and format phone numbers for 240+ regions (libphonenumber): E.164, international/national format, type (mobile/fixed), country. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Phone number validate + format
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
proxy_inspectIs this contract upgradeable?Reads text others write1 finding
Why it is in this group
- The name "proxy_inspect" says "inspect": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Findings
- Warn
The input schema at properties.address.examples[0] contains a 42-character base64 string.
What this check looks forMatched text
inputSchema.properties.address.examples[0]: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
Description, as the server wrote it Is this contract upgradeable? Detects EIP-1967 (impl/admin/beacon), EIP-1167 clones, legacy OZ and Safe-style proxies and EIP-7702 delegated EOAs; returns implementation and admin. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Proxy / upgradeability inspector
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
sitemap_parseFind (via robots.txt) and parse a sitemap or sitemap index: URL count, lastmod range, sample URLs and protocol issues.Reads text others writeCan send data outNo findings
Why it is in this group
- The description's first verb is "find": 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 "find" and "url": 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 Find (via robots.txt) and parse a sitemap or sitemap index: URL count, lastmod range, sample URLs and protocol issues. Free: 10 calls/day; then $0.002 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Sitemap reader
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
text_diffLine, word or character diff between two texts with a unified patch, added/removed counts and similarity.Reads text others writeNo findings
Why it is in this group
- The name "text_diff" says "diff": 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 Line, word or character diff between two texts with a unified patch, added/removed counts and similarity. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Text diff
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
tx_explainExplain a transaction in plain words: status, fee in USD, decoded method and arguments, token/NFT transfers, approvals (incl.Reads text others writeNo findings
Why it is in this group
- The name "tx_explain" says "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 a transaction in plain words: status, fee in USD, decoded method and arguments, token/NFT transfers, approvals (incl. unlimited / setApprovalForAll), other events. Free: 10 calls/day; then $0.003 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Transaction explainer
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
tx_statusIs my transaction pending, confirmed, reverted or not found?Reads text others writeNo findings
Why it is in this group
- The name "tx_status" says "status": 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 Is my transaction pending, confirmed, reverted or not found? Confirmations and a per-chain finality hint. Cheap polling for agents waiting on a tx. Free: 10 calls/day; then $0.001 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: Transaction status + confirmations
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
webhook_inbox_readRead requests captured by a webhook_inbox_create inbox (free).Reads private dataReads text others writeNo findings
Why it is in this group
- The name "webhook_inbox_read" says "read": a word for reading.
What it can reach
- private-dataThe name "webhook_inbox_read" says "read" and "inbox": it reads mail.
- private-dataThe description's first sentence says "read" and "inbox": it reads mail.
- untrusted-inputThe name "webhook_inbox_read" says "read" and "inbox": it reads inbound email, which other people can write.
- untrusted-inputThe description's first sentence says "read" and "inbox": it reads inbound email, which other people can write.
Description, as the server wrote it Read requests captured by a webhook_inbox_create inbox (free).
Annotations the server declares
- title: Read webhook test inbox
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
x402_validateLint any x402 paid endpoint like a client would: 402 status, PAYMENT-REQUIRED header decode, CAIP-2 network, integer amount, payTo/asset, EIP-712 domain extra, CORS expose headers,…Reads text others writeCan send data outNo findings
Why it is in this group
- The name "x402_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.
- 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 Lint any x402 paid endpoint like a client would: 402 status, PAYMENT-REQUIRED header decode, CAIP-2 network, integer amount, payTo/asset, EIP-712 domain extra, CORS expose headers, bazaar discovery, /.well-known/x402. Score + fixes. Unpaid request only. Free: 10 calls/day; then $0.003 via the HTTP endpoint or X-API-Key credits.
Annotations the server declares
- title: x402 endpoint validator
- 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.
5130 paths in this server alone from private data, through text someone else wrote, to a way out. Denying 3 private-data tools breaks every one.
- Reads private data3
- Reads files, mail, messages, databases, secrets, calendars or repositories.
- Reads text others write90
- Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
- Can send data out19
- Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
{
"permissions": {
"deny": [
"mcp__tools__business_days",
"mcp__tools__event_logs",
"mcp__tools__webhook_inbox_read"
]
}
}Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.
Remote posture
What anyone on the internet sees at the remote endpoint: an anonymous initialize and tools/list, and the public OAuth metadata.
Looked at Nov 4, 2026, 02:21 UTC, unchanged since Nov 4, 2026. No credentials were sent and no tool was called. What is looked at.
- Reachable
- yes
- HTTP status of an anonymous initialize
- 200
- tools/list served without credentials
- yes
- Tools that change things, listed without credentials
- 65
- Protocol version
- 2025-06-18
- WWW-Authenticate on 401
- not observed
- resource_metadata in WWW-Authenticate
- not observed
- RFC 9728 protected resource metadata
- https://tools.moneytools.dev/.well-known/oauth-protected-resource/mcp
- Authorization servers
- not observed
- Legacy HTTP+SSE transport
- no
- Dynamic client registration
- not observed
- Client ID metadata documents
- not observed
- HighThe whole server
The endpoint served tools/list without credentials, and the list has 65 tools that change things (1 destructive, 5 irreversible, 59 write). Whether a call also works without credentials was not tested: tools are never called.
What this check looks forMatched text
https://tools.moneytools.dev/mcp: tools/list returned 90 tools to an anonymous client, including allowance_revoke_plan (destructive), time_convert (irreversible), currency_convert (irreversible), unit_convert (irreversible), qr_payment_link (irreversible) and 60 more
Findings
Matches of fixed checks, with the text they matched.
- Warnerc20_info
The input schema at properties.token.examples[0] contains a 42-character base64 string.
What this check looks forMatched text
inputSchema.properties.token.examples[0]: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
The input schema at properties.owner.examples[0] contains a 42-character base64 string.
What this check looks forMatched text
inputSchema.properties.owner.examples[0]: "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
The server marks "allowance_revoke_plan" read-only (readOnlyHint: true), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "allowance_revoke_plan" says "revoke": a word for removing or ending something.
The server marks "allowance_revoke_plan" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "allowance_revoke_plan" says "revoke": a word for removing or ending something.
- Warncontract_abi
The input schema at properties.address.examples[0] contains a 42-character base64 string.
What this check looks forMatched text
inputSchema.properties.address.examples[0]: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
- Warnsignature_verify
The input schema at properties.address.examples[0] contains a 42-character base64 string.
What this check looks forMatched text
inputSchema.properties.address.examples[0]: "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"
Show 28 more findingsShow fewer
- Warntyped_data_risk
The input schema at properties.typedData.examples[0].domain.verifyingContract contains a 42-character base64 string.
What this check looks forMatched text
inputSchema.properties.typedData.examples[0].domain.verifyingContract: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
- Warntyped_data_risk
The input schema at properties.typedData.examples[0].message.owner contains a 42-character base64 string.
What this check looks forMatched text
inputSchema.properties.typedData.examples[0].message.owner: "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
- Warntyped_data_risk
The input schema at properties.typedData.examples[0].message.spender contains a 42-character base64 string.
What this check looks forMatched text
inputSchema.properties.typedData.examples[0].message.spender: "0x000000000022D473030F116dDEE9F6B43aC78BA3"
- 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":true}; The name "time_convert" says "convert": a word for a change.
- Warncron_next_runs
The server marks "cron_next_runs" 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 "cron_next_runs" says "run": 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":true}; The name "currency_convert" says "convert": 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":true}; The name "unit_convert" says "convert": a word for a change.
- Warnqr_payment_link
The server marks "qr_payment_link" 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 name "qr_payment_link" says "link": a word for a change.
- Warnnft_metadata
The input schema at properties.contract.examples[0] contains a 42-character base64 string.
What this check looks forMatched text
inputSchema.properties.contract.examples[0]: "0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D"
The input schema at properties.address.examples[0] contains a 42-character base64 string.
What this check looks forMatched text
inputSchema.properties.address.examples[0]: "0x164cb3676F4A465403F269730F0B4dE0E9D47298"
- Warncontract_read
The input schema at properties.address.examples[0] contains a 42-character base64 string.
What this check looks forMatched text
inputSchema.properties.address.examples[0]: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
- Warncontract_read
The input schema at properties.args.examples[0] contains a 42-character base64 string.
What this check looks forMatched text
inputSchema.properties.args.examples[0]: "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
- Warncontract_read
The server marks "contract_read" 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 "contract_read" says "read": a word for reading.
- Warnabi_encode
The input schema at properties.args.examples[0] contains a 42-character base64 string.
What this check looks forMatched text
inputSchema.properties.args.examples[0]: "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045,1000000"
- Warnproxy_inspect
The input schema at properties.address.examples[0] contains a 42-character base64 string.
What this check looks forMatched text
inputSchema.properties.address.examples[0]: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
- Warnevent_logs
The input schema at properties.address.examples[0] contains a 42-character base64 string.
What this check looks forMatched text
inputSchema.properties.address.examples[0]: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
- Warntoken_balances
The input schema at properties.owner.examples[0] contains a 42-character base64 string.
What this check looks forMatched text
inputSchema.properties.owner.examples[0]: "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
- Warnerc4626_vault
The input schema at properties.vault.examples[0] contains a 42-character base64 string.
What this check looks forMatched text
inputSchema.properties.vault.examples[0]: "0xbeeF010f9cb27031ad51e3333f9aF9C6B1228183"
- Warnsolana_account
The input schema at properties.address.examples[0] contains a 43-character base64 string.
What this check looks forMatched text
inputSchema.properties.address.examples[0]: "vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36NKPTg"
- Warnvesting_schedule
The server marks "vesting_schedule" 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 "vesting_schedule" says "schedule": a word for a change.
- Warnapr_apy
The server marks "apr_apy" 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.
- Warnbroken_links
The server marks "broken_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 "broken_links" says "link": a word for a change.
- Warnregex_test
The server marks "regex_test" 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 "run": a word for a change.
- Warnid_generate
The server marks "id_generate" 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 "id_generate" says "generate": a word for a change.
- Warnnumber_base
The server marks "number_base" 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 description's first verb is "convert": a word for a change.
- Warncsv_json_convert
The server marks "csv_json_convert" 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 "csv_json_convert" says "convert": a word for a change.
The server marks "yaml_json_convert" 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 "yaml_json_convert" says "convert": a word for a change.
- Warncolor_convert
The server marks "color_convert" 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 "color_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 tools https://tools.moneytools.dev/mcpclaude mcp add --transport http tools https://tools.moneytools.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__tools__ens_resolve",
"mcp__tools__gas_compare",
"mcp__tools__tx_explain",
"mcp__tools__contract_abi",
"mcp__tools__dns_lookup",
"mcp__tools__json_schema_validate",
"mcp__tools__tx_status",
"mcp__tools__block_at_time",
"mcp__tools__bridge_status",
"mcp__tools__proxy_inspect",
"mcp__tools__event_logs",
"mcp__tools__address_validate",
"mcp__tools__dns_propagation",
"mcp__tools__text_diff",
"mcp__tools__jwt_inspect",
"mcp__tools__json_format",
"mcp__tools__phone_format",
"mcp__tools__iban_validate",
"mcp__tools__business_days",
"mcp__tools__webhook_inbox_read"
],
"ask": [
"mcp__tools__token_safety_check",
"mcp__tools__address_profile",
"mcp__tools__erc20_info",
"mcp__tools__calldata_decode",
"mcp__tools__signature_verify",
"mcp__tools__typed_data_risk",
"mcp__tools__x402_validate",
"mcp__tools__http_inspect",
"mcp__tools__url_metadata",
"mcp__tools__domain_rdap",
"mcp__tools__robots_check",
"mcp__tools__time_convert",
"mcp__tools__cron_next_runs",
"mcp__tools__currency_convert",
"mcp__tools__unit_convert",
"mcp__tools__hash_encode",
"mcp__tools__qr_payment_link",
"mcp__tools__nft_metadata",
"mcp__tools__rpc_health",
"mcp__tools__chain_info",
"mcp__tools__stablecoin_peg",
"mcp__tools__dex_price",
"mcp__tools__safe_multisig_info",
"mcp__tools__contract_read",
"mcp__tools__abi_encode",
"mcp__tools__token_balances",
"mcp__tools__ens_available",
"mcp__tools__erc4626_vault",
"mcp__tools__solana_account",
"mcp__tools__btc_address",
"mcp__tools__btc_fees",
"mcp__tools__vesting_schedule",
"mcp__tools__apr_apy",
"mcp__tools__liquidation_price",
"mcp__tools__impermanent_loss",
"mcp__tools__loan_amortization",
"mcp__tools__security_headers_audit",
"mcp__tools__ssl_certificate",
"mcp__tools__og_image_check",
"mcp__tools__sitemap_parse",
"mcp__tools__feed_parse",
"mcp__tools__broken_links",
"mcp__tools__spf_dmarc_check",
"mcp__tools__ip_owner",
"mcp__tools__url_parse_clean",
"mcp__tools__idn_homograph_check",
"mcp__tools__mcp_tools_lint",
"mcp__tools__openapi_lint",
"mcp__tools__llms_txt_validate",
"mcp__tools__a2a_card_validate",
"mcp__tools__regex_test",
"mcp__tools__id_generate",
"mcp__tools__number_base",
"mcp__tools__markdown_to_html",
"mcp__tools__csv_json_convert",
"mcp__tools__yaml_json_convert",
"mcp__tools__semver_check",
"mcp__tools__text_stats",
"mcp__tools__language_detect",
"mcp__tools__slugify",
"mcp__tools__ip_cidr",
"mcp__tools__user_agent_parse",
"mcp__tools__color_convert",
"mcp__tools__password_strength",
"mcp__tools__card_number_check",
"mcp__tools__taiwan_id_check",
"mcp__tools__public_holidays",
"mcp__tools__lunar_date",
"mcp__tools__webhook_inbox_create"
],
"deny": [
"mcp__tools__allowance_revoke_plan"
]
}
}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 tools. Review it before you use it.
Capability tags behind 90 rules
- mcp__tools__token_safety_check untrusted-input
- mcp__tools__address_profile untrusted-input
- mcp__tools__ens_resolve untrusted-input
- mcp__tools__gas_compare untrusted-input
- mcp__tools__erc20_info untrusted-input
- mcp__tools__allowance_revoke_plan untrusted-input
- mcp__tools__tx_explain untrusted-input
- mcp__tools__calldata_decode untrusted-input
- mcp__tools__contract_abi untrusted-input
- mcp__tools__signature_verify untrusted-input
- mcp__tools__typed_data_risk untrusted-input
- mcp__tools__x402_validate untrusted-input, outbound
- mcp__tools__http_inspect untrusted-input, outbound
- mcp__tools__url_metadata untrusted-input, outbound
- mcp__tools__dns_lookup untrusted-input
- mcp__tools__domain_rdap untrusted-input
- mcp__tools__robots_check untrusted-input, outbound
- mcp__tools__json_schema_validate untrusted-input
- mcp__tools__time_convert untrusted-input, outbound
- mcp__tools__cron_next_runs untrusted-input
- mcp__tools__currency_convert untrusted-input, outbound
- mcp__tools__unit_convert untrusted-input, outbound
- mcp__tools__hash_encode untrusted-input
- mcp__tools__qr_payment_link untrusted-input, outbound
- mcp__tools__nft_metadata untrusted-input
- mcp__tools__tx_status untrusted-input
- mcp__tools__block_at_time untrusted-input
- mcp__tools__rpc_health untrusted-input
- mcp__tools__chain_info untrusted-input
- mcp__tools__stablecoin_peg untrusted-input
- mcp__tools__bridge_status untrusted-input
- mcp__tools__dex_price untrusted-input
- mcp__tools__safe_multisig_info untrusted-input
- mcp__tools__contract_read untrusted-input
- mcp__tools__abi_encode untrusted-input
- mcp__tools__proxy_inspect untrusted-input
- mcp__tools__event_logs private-data, untrusted-input
- mcp__tools__token_balances untrusted-input
- mcp__tools__ens_available untrusted-input
- mcp__tools__erc4626_vault untrusted-input
- mcp__tools__address_validate untrusted-input
- mcp__tools__solana_account untrusted-input
- mcp__tools__btc_address untrusted-input
- mcp__tools__btc_fees untrusted-input
- mcp__tools__vesting_schedule untrusted-input
- mcp__tools__apr_apy untrusted-input
- mcp__tools__liquidation_price untrusted-input
- mcp__tools__impermanent_loss untrusted-input
- mcp__tools__loan_amortization untrusted-input
- mcp__tools__security_headers_audit untrusted-input, outbound
- mcp__tools__ssl_certificate untrusted-input
- mcp__tools__og_image_check untrusted-input, outbound
- mcp__tools__sitemap_parse untrusted-input, outbound
- mcp__tools__feed_parse untrusted-input, outbound
- mcp__tools__broken_links untrusted-input, outbound
- mcp__tools__dns_propagation untrusted-input
- mcp__tools__spf_dmarc_check untrusted-input
- mcp__tools__ip_owner untrusted-input
- mcp__tools__url_parse_clean untrusted-input, outbound
- mcp__tools__idn_homograph_check untrusted-input
- mcp__tools__mcp_tools_lint untrusted-input, outbound
- mcp__tools__openapi_lint untrusted-input, outbound
- mcp__tools__llms_txt_validate untrusted-input, outbound
- mcp__tools__a2a_card_validate untrusted-input, outbound
- mcp__tools__regex_test untrusted-input
- mcp__tools__text_diff untrusted-input
- mcp__tools__id_generate untrusted-input
- mcp__tools__jwt_inspect untrusted-input
- mcp__tools__number_base untrusted-input, outbound
- mcp__tools__markdown_to_html untrusted-input
- mcp__tools__csv_json_convert untrusted-input
- mcp__tools__yaml_json_convert untrusted-input
- mcp__tools__json_format untrusted-input
- mcp__tools__semver_check untrusted-input
- mcp__tools__text_stats untrusted-input
- mcp__tools__language_detect untrusted-input
- mcp__tools__slugify untrusted-input
- mcp__tools__ip_cidr untrusted-input
- mcp__tools__user_agent_parse untrusted-input
- mcp__tools__color_convert untrusted-input
- mcp__tools__password_strength untrusted-input
- mcp__tools__phone_format untrusted-input
- mcp__tools__iban_validate untrusted-input
- mcp__tools__card_number_check untrusted-input
- mcp__tools__taiwan_id_check untrusted-input
- mcp__tools__public_holidays untrusted-input
- mcp__tools__business_days private-data, untrusted-input
- mcp__tools__lunar_date untrusted-input
- mcp__tools__webhook_inbox_create untrusted-input
- mcp__tools__webhook_inbox_read private-data, untrusted-input
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/dev.moneytools/tools/verify?hash=988b2f745f224a952c7db1e6b9afb5995fc2c628330a54e7f5982f2f131a893c" | jq -e '.changed == false'Pinned hash 988b2f745f22, from Nov 4, 2026, 02:19 UTC.
Watch
Get told when its tools change: a new tool, a new description, a new class.
https://anlyon.dev/servers/dev.moneytools/tools/changes.xmlAn Atom feed. Works in any feed reader or Slack's RSS app.
Badge
[](https://anlyon.dev/servers/dev.moneytools/tools)Source: MCP Registry. Synced Nov 4, 2026, 02:17 UTC.