Skip to content

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.

Tools: 1 delete, 5 irreversible, 59 write, 25 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.

      Matched text

      inputSchema.properties.owner.examples[0]: "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"

      What this check looks for
    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "allowance_revoke_plan" says "revoke": a word for removing or ending something.

      What this check looks for
    • Warn

      The server marks "allowance_revoke_plan" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "allowance_revoke_plan" says "revoke": a word for removing or ending something.

      What this check looks for
    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".

      Matched text

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

      What this check looks for
    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".

      Matched text

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

      What this check looks for
    Description, as the server wrote it
    Convert 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
  • 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".

      Matched text

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

      What this check looks for
    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".

      Matched text

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

      What this check looks for
    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.

      Matched text

      inputSchema.properties.args.examples[0]: "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045,1000000"

      What this check looks for
    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".

      Matched text

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

      What this check looks for
    Description, as the server wrote it
    Convert 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
  • 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".

      Matched text

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

      What this check looks for
    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.

      Matched text

      inputSchema.properties.address.examples[0]: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"

      What this check looks for
    • Warn

      The input schema at properties.args.examples[0] contains a 42-character base64 string.

      Matched text

      inputSchema.properties.args.examples[0]: "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"

      What this check looks for
    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "contract_read" says "read": a word for reading.

      What this check looks for
    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".

      Matched text

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

      What this check looks for
    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".

      Matched text

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

      What this check looks for
    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.

      Matched text

      inputSchema.properties.token.examples[0]: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"

      What this check looks for
    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.

      Matched text

      inputSchema.properties.vault.examples[0]: "0xbeeF010f9cb27031ad51e3333f9aF9C6B1228183"

      What this check looks for
    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".

      Matched text

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

      What this check looks for
    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.

      Matched text

      inputSchema.properties.contract.examples[0]: "0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D"

      What this check looks for
    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".

      Matched text

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

      What this check looks for
    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.

      Matched text

      inputSchema.properties.address.examples[0]: "0x164cb3676F4A465403F269730F0B4dE0E9D47298"

      What this check looks for
    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.

      Matched text

      inputSchema.properties.address.examples[0]: "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"

      What this check looks for
    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.

      Matched text

      inputSchema.properties.address.examples[0]: "vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36NKPTg"

      What this check looks for
    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.

      Matched text

      inputSchema.properties.owner.examples[0]: "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"

      What this check looks for
    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.

      Matched text

      inputSchema.properties.typedData.examples[0].domain.verifyingContract: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"

      What this check looks for
    • Warn

      The input schema at properties.typedData.examples[0].message.owner contains a 42-character base64 string.

      Matched text

      inputSchema.properties.typedData.examples[0].message.owner: "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"

      What this check looks for
    • Warn

      The input schema at properties.typedData.examples[0].message.spender contains a 42-character base64 string.

      Matched text

      inputSchema.properties.typedData.examples[0].message.spender: "0x000000000022D473030F116dDEE9F6B43aC78BA3"

      What this check looks for
    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".

      Matched text

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

      What this check looks for
    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".

      Matched text

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

      What this check looks for
    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.

      Matched text

      inputSchema.properties.address.examples[0]: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"

      What this check looks for
    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.

      Matched text

      inputSchema.properties.address.examples[0]: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"

      What this check looks for
    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.

      Matched text

      inputSchema.properties.address.examples[0]: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"

      What this check looks for
    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.
deny to break every path
{
  "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.

Tools listed without sign-in

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.

    Matched 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

    What this check looks for

Findings

Matches of fixed checks, with the text they matched.

34 warn
  • The input schema at properties.token.examples[0] contains a 42-character base64 string.

    Matched text

    inputSchema.properties.token.examples[0]: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"

    What this check looks for
  • The input schema at properties.owner.examples[0] contains a 42-character base64 string.

    Matched text

    inputSchema.properties.owner.examples[0]: "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"

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

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "allowance_revoke_plan" says "revoke": a word for removing or ending something.

    What this check looks for
  • The server marks "allowance_revoke_plan" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "allowance_revoke_plan" says "revoke": a word for removing or ending something.

    What this check looks for
  • The input schema at properties.address.examples[0] contains a 42-character base64 string.

    Matched text

    inputSchema.properties.address.examples[0]: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"

    What this check looks for
  • The input schema at properties.address.examples[0] contains a 42-character base64 string.

    Matched text

    inputSchema.properties.address.examples[0]: "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"

    What this check looks for
Show 28 more findings
  • The input schema at properties.typedData.examples[0].domain.verifyingContract contains a 42-character base64 string.

    Matched text

    inputSchema.properties.typedData.examples[0].domain.verifyingContract: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"

    What this check looks for
  • The input schema at properties.typedData.examples[0].message.owner contains a 42-character base64 string.

    Matched text

    inputSchema.properties.typedData.examples[0].message.owner: "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"

    What this check looks for
  • The input schema at properties.typedData.examples[0].message.spender contains a 42-character base64 string.

    Matched text

    inputSchema.properties.typedData.examples[0].message.spender: "0x000000000022D473030F116dDEE9F6B43aC78BA3"

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

    Matched text

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

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

    Matched text

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

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

    Matched text

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

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

    Matched text

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

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

    Matched text

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

    What this check looks for
  • The input schema at properties.contract.examples[0] contains a 42-character base64 string.

    Matched text

    inputSchema.properties.contract.examples[0]: "0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D"

    What this check looks for
  • The input schema at properties.address.examples[0] contains a 42-character base64 string.

    Matched text

    inputSchema.properties.address.examples[0]: "0x164cb3676F4A465403F269730F0B4dE0E9D47298"

    What this check looks for
  • The input schema at properties.address.examples[0] contains a 42-character base64 string.

    Matched text

    inputSchema.properties.address.examples[0]: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"

    What this check looks for
  • The input schema at properties.args.examples[0] contains a 42-character base64 string.

    Matched text

    inputSchema.properties.args.examples[0]: "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"

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

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "contract_read" says "read": a word for reading.

    What this check looks for
  • The input schema at properties.args.examples[0] contains a 42-character base64 string.

    Matched text

    inputSchema.properties.args.examples[0]: "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045,1000000"

    What this check looks for
  • The input schema at properties.address.examples[0] contains a 42-character base64 string.

    Matched text

    inputSchema.properties.address.examples[0]: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"

    What this check looks for
  • The input schema at properties.address.examples[0] contains a 42-character base64 string.

    Matched text

    inputSchema.properties.address.examples[0]: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"

    What this check looks for
  • The input schema at properties.owner.examples[0] contains a 42-character base64 string.

    Matched text

    inputSchema.properties.owner.examples[0]: "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"

    What this check looks for
  • The input schema at properties.vault.examples[0] contains a 42-character base64 string.

    Matched text

    inputSchema.properties.vault.examples[0]: "0xbeeF010f9cb27031ad51e3333f9aF9C6B1228183"

    What this check looks for
  • The input schema at properties.address.examples[0] contains a 43-character base64 string.

    Matched text

    inputSchema.properties.address.examples[0]: "vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36NKPTg"

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

    Matched text

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

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

    Matched text

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

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

    Matched text

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

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

    Matched text

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

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

    Matched text

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

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

    Matched text

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

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

    Matched text

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

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

    Matched text

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

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

    Matched text

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

    What this check looks for

History

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

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

Install

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

claude mcp add --transport http tools https://tools.moneytools.dev/mcp
claude mcp add --transport http tools https://tools.moneytools.dev/mcp

Run in a terminal.

Claude Code permissions

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

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__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.xml

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

Badge

anlyon.dev badge for dev.moneytools/tools
[![anlyon.dev](https://anlyon.dev/badge/dev.moneytools/tools.svg)](https://anlyon.dev/servers/dev.moneytools/tools)

Source: MCP Registry. Synced Nov 4, 2026, 02:17 UTC.