Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Changed the definition of "presign_check", "presign_check_explain" and "presign_quick_check"
⟨32 unchanged words⟩ 137, 8453, 42161 (8453 = Base); optional for message","type":"integer"},"data":{"description":"transaction: 0x-prefixed calldata","type":"string"},"from":{"description":"transaction or message, optional: your wallet address; the transaction is then simulated (what really leaves and arrives; orange HIDDEN_APPROVAL, SIMULATION_NFT_OUT, SIMULATION_FAILS)","type":"string"},"intent":{"description":"optional: what you ⟨27 unchanged words⟩ "maxLength":500,"type":"string"},"message":{"description":"message: the text or 0x-hex about to be signed; a Sign-In with Ethereum message for another site than origin is red, unreadable bytes are orange","maxLength":16384,"type":"string"},"method":{"description":"message: how it is signed (default personal_sign); eth_sign is always red","enum":["personal_sign","eth_sign"],"type":"string"},"network":{"description":"xrpl: xrpl:0 ⟨80 unchanged words⟩ :"What the agent is about to sign; message = a plain personal_sign / eth_sign message in message; xrpl = an unsigned XRP Ledger transaction in tx","enum":["approval","transaction","signature","message","xrpl"],"type":"string"},"typedData" ⟨21 unchanged words⟩ native value in wei","type":"string"},"x402":{"additionalProperties":{},"description":"optional, EIP-3009 payments only: the x402 payment requirements you are paying ({ accepted: { scheme, network, amount, asset, payTo, maxTimeoutSeconds, extra } }, one entry of the 402's accepts); red when the signature pays more, someone else, another token or chain","type":"object"}},"required":["type"],"type":"object"}
⟨32 unchanged words⟩ 137, 8453, 42161 (8453 = Base); optional for message","type":"integer"},"data":{"description":"transaction: 0x-prefixed calldata","type":"string"},"from":{"description":"transaction or message, optional: your wallet address; the transaction is then simulated (what really leaves and arrives; orange HIDDEN_APPROVAL, SIMULATION_NFT_OUT, SIMULATION_FAILS)","type":"string"},"intent":{"description":"optional: what you ⟨41 unchanged words⟩ ,"nl"],"type":"string"},"message":{"description":"message: the text or 0x-hex about to be signed; a Sign-In with Ethereum message for another site than origin is red, unreadable bytes are orange","maxLength":16384,"type":"string"},"method":{"description":"message: how it is signed (default personal_sign); eth_sign is always red","enum":["personal_sign","eth_sign"],"type":"string"},"network":{"description":"xrpl: xrpl:0 ⟨80 unchanged words⟩ :"What the agent is about to sign; message = a plain personal_sign / eth_sign message in message; xrpl = an unsigned XRP Ledger transaction in tx","enum":["approval","transaction","signature","message","xrpl"],"type":"string"},"typedData" ⟨21 unchanged words⟩ native value in wei","type":"string"},"x402":{"additionalProperties":{},"description":"optional, EIP-3009 payments only: the x402 payment requirements you are paying ({ accepted: { scheme, network, amount, asset, payTo, maxTimeoutSeconds, extra } }, one entry of the 402's accepts); red when the signature pays more, someone else, another token or chain","type":"object"}},"required":["type"],"type":"object"}
⟨32 unchanged words⟩ 137, 8453, 42161 (8453 = Base); optional for message","type":"integer"},"data":{"description":"transaction: 0x-prefixed calldata","type":"string"},"from":{"description":"transaction or message, optional: your wallet address; the transaction is then simulated (what really leaves and arrives; orange HIDDEN_APPROVAL, SIMULATION_NFT_OUT, SIMULATION_FAILS)","type":"string"},"intent":{"description":"optional: what you ⟨27 unchanged words⟩ "maxLength":500,"type":"string"},"message":{"description":"message: the text or 0x-hex about to be signed; a Sign-In with Ethereum message for another site than origin is red, unreadable bytes are orange","maxLength":16384,"type":"string"},"method":{"description":"message: how it is signed (default personal_sign); eth_sign is always red","enum":["personal_sign","eth_sign"],"type":"string"},"network":{"description":"xrpl: xrpl:0 ⟨80 unchanged words⟩ :"What the agent is about to sign; message = a plain personal_sign / eth_sign message in message; xrpl = an unsigned XRP Ledger transaction in tx","enum":["approval","transaction","signature","message","xrpl"],"type":"string"},"typedData" ⟨21 unchanged words⟩ native value in wei","type":"string"},"x402":{"additionalProperties":{},"description":"optional, EIP-3009 payments only: the x402 payment requirements you are paying ({ accepted: { scheme, network, amount, asset, payTo, maxTimeoutSeconds, extra } }, one entry of the 402's accepts); red when the signature pays more, someone else, another token or chain","type":"object"}},"required":["type"],"type":"object"}
Changed the definition of "presign_check", "presign_check_explain" and "presign_quick_check"
⟨43 unchanged words⟩ 0x-prefixed calldata","type":"string"},"from":{"description":"transaction, optional: your wallet address; the transaction is then simulated (what really leaves and arrives; orange HIDDEN_APPROVAL, SIMULATION_NFT_OUT, SIMULATION_FAILS)","type":"string"},"intent":{"description":"optional: what you ⟨161 unchanged words⟩ native value in wei","type":"string"},"x402":{"additionalProperties":{},"description":"optional, EIP-3009 payments only: the x402 payment requirements you are paying ({ accepted: { scheme, network, amount, asset, payTo, maxTimeoutSeconds, extra } }, one entry of the 402's accepts); red when the signature pays more, someone else, another token or chain","type":"object"}},"required":["type"],"type":"object"}
Changed the definition of "presign_check", "presign_check_explain" and "presign_quick_check"
⟨43 unchanged words⟩ 0x-prefixed calldata","type":"string"},"intent":{"description":"optional: what you are trying to do, in one sentence (e.g. \"swap 10 USDC for ETH on Uniswap\"); orange INTENT_MISMATCH when signing would do more or something else","maxLength":500,"type":"string"},"network":{"description":"xrpl: xrpl:0 ⟨135 unchanged words⟩
⟨43 unchanged words⟩ 0x-prefixed calldata","type":"string"},"intent":{"description":"optional: what you are trying to do, in one sentence (e.g. \"swap 10 USDC for ETH on Uniswap\"); orange INTENT_MISMATCH when signing would do more or something else","maxLength":500,"type":"string"},"lang":{"description":"Language of the explanation
Changed the definition of "presign_check", "presign_check_explain" and "presign_quick_check"
⟨43 unchanged words⟩ 0x-prefixed calldata","type":"string"},"intent":{"description":"optional: what you are trying to do, in one sentence (e.g. \"swap 10 USDC for ETH on Uniswap\"); orange INTENT_MISMATCH when signing would do more or something else","maxLength":500,"type":"string"},"network":{"description":"xrpl: xrpl:0 ⟨135 unchanged words⟩
⟨43 unchanged words⟩ 0x-prefixed calldata","type":"string"},"intent":{"description":"optional: what you are trying to do, in one sentence (e.g. \"swap 10 USDC for ETH on Uniswap\"); orange INTENT_MISMATCH when signing would do more or something else","maxLength":500,"type":"string"},"lang":{"description":"Language of the explanation
Changed the definition of "feedback", "presign_check", "presign_check_explain" and 4 more
before
—after
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":true,"properties":{"id":{"description":"Report id, to refer to it later","type":"string"},"note":{"type":"string"},"received":{"description":"true: a person will read it","type":"boolean"},"service":{"type":"string"},"type":{"type":"string"}},"required":["received","id"],"type":"object"}before
—after
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":true,"properties":{"accepts":{"anyOf":[{"items":{"additionalProperties":{},"type":"object"},"type":"array"},{"type":"null"}],"description":"Only on an unpaid call: the x402 payment options"},"reasons":{"anyOf":[{"description":"Why the verdict is what it is","items":{"additionalProperties":true,"properties":{"code":{"description":"Reason code, e.g. SPENDER_FLAGGED, UNLIMITED_ALLOWANCE, TOKEN_HONEYPOT","type":"string"},"severity":{"description":"info, warn or critical","type":"string"},"subject":{"description":"The address or item the reason is about","type":"string"}},"required":["code"],"type":"object"},"type":"array"},{"type":"null"}],"description":"Why the verdict is what it is"},"receipt":{"anyOf":[{"additionalProperties":{},"description":"Signed receipt (EIP-191) binding the verdict to your arguments","type":"object"},{"type":"null"}],"description":"Signed receipt (EIP-191) binding the verdict to your arguments"},"verdict":{"anyOf":[{"description":"green: go ahead; orange: ask the user; red: do not sign or buy","enum":["green","orange","red"],"type":"string"},{"type":"null"}],"description":"green: go ahead; orange: ask the user; red: do not sign or buy (absent on the payment requirement)"},"version":{"type":["string","null"]}},"type":"object"}Changed the definition of "feedback", "presign_check", "presign_check_explain" and 4 more
before
—after
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":true,"properties":{"id":{"description":"Report id, to refer to it later","type":"string"},"note":{"type":"string"},"received":{"description":"true: a person will read it","type":"boolean"},"service":{"type":"string"},"type":{"type":"string"}},"required":["received","id"],"type":"object"}before
—after
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":true,"properties":{"accepts":{"anyOf":[{"items":{"additionalProperties":{},"type":"object"},"type":"array"},{"type":"null"}],"description":"Only on an unpaid call: the x402 payment options"},"reasons":{"anyOf":[{"description":"Why the verdict is what it is","items":{"additionalProperties":true,"properties":{"code":{"description":"Reason code, e.g. SPENDER_FLAGGED, UNLIMITED_ALLOWANCE, TOKEN_HONEYPOT","type":"string"},"severity":{"description":"info, warn or critical","type":"string"},"subject":{"description":"The address or item the reason is about","type":"string"}},"required":["code"],"type":"object"},"type":"array"},{"type":"null"}],"description":"Why the verdict is what it is"},"receipt":{"anyOf":[{"additionalProperties":{},"description":"Signed receipt (EIP-191) binding the verdict to your arguments","type":"object"},{"type":"null"}],"description":"Signed receipt (EIP-191) binding the verdict to your arguments"},"verdict":{"anyOf":[{"description":"green: go ahead; orange: ask the user; red: do not sign or buy","enum":["green","orange","red"],"type":"string"},{"type":"null"}],"description":"green: go ahead; orange: ask the user; red: do not sign or buy (absent on the payment requirement)"},"version":{"type":["string","null"]}},"type":"object"}Changed the definition of "presign_check", "presign_check_explain" and "presign_quick_check"
⟨62 unchanged words⟩ (honeypot, fake look-alike, high tax). On the XRP Ledger (type xrpl, the unsigned tx JSON): account takeovers (SetRegularKey, SignerListSet, disabling the master key), fake RLUSD, partial payments, missing destination tags, trust-line and issuer risks, and DEX offers far below market. Only proceed on green; on orange ask your ⟨27 unchanged words⟩
⟨18 unchanged words⟩ ,"chainId":{"description":"EVM chain id, required for approval, transaction and signature: 1, 10, 56, 137, 8453, ⟨9 unchanged words⟩ 0x-prefixed calldata","type":"string"},"network":{"description":"xrpl: xrpl:0 (mainnet, default) or xrpl:1 (testnet)","enum":["xrpl:0","xrpl:1"],"type":"string"},"origin":{"description":"optional: the site ⟨41 unchanged words⟩ token contract","type":"string"},"
Changed the definition of "presign_check", "presign_check_explain" and "presign_quick_check"
⟨62 unchanged words⟩ (honeypot, fake look-alike, high tax). On the XRP Ledger (type xrpl, the unsigned tx JSON): account takeovers (SetRegularKey, SignerListSet, disabling the master key), fake RLUSD, partial payments, missing destination tags, trust-line and issuer risks, and DEX offers far below market. Only proceed on green; on orange ask your ⟨27 unchanged words⟩
⟨18 unchanged words⟩ ,"chainId":{"description":"EVM chain id, required for approval, transaction and signature: 1, 10, 56, 137, 8453, ⟨9 unchanged words⟩ 0x-prefixed calldata","type":"string"},"network":{"description":"xrpl: xrpl:0 (mainnet, default) or xrpl:1 (testnet)","enum":["xrpl:0","xrpl:1"],"type":"string"},"origin":{"description":"optional: the site ⟨41 unchanged words⟩ token contract","type":"string"},"
Changed the definition of "token_quick_verdict" and "token_verdict"
⟨30 unchanged words⟩ ,"arbitrum","optimism","polygon","bsc","xrpl"],"type":"string"}},"required": ⟨4 unchanged words⟩
⟨30 unchanged words⟩ ,"arbitrum","optimism","polygon","bsc","xrpl"],"type":"string"}},"required": ⟨4 unchanged words⟩
Changed the definition of "token_quick_verdict" and "token_verdict"
⟨30 unchanged words⟩ ,"arbitrum","optimism","polygon","bsc","xrpl"],"type":"string"}},"required": ⟨4 unchanged words⟩
⟨30 unchanged words⟩ ,"arbitrum","optimism","polygon","bsc","xrpl"],"type":"string"}},"required": ⟨4 unchanged words⟩
Certificate recorded, valid to 2026-12-27
Authorization not required
Added "feedback" (6 tools before, 7 now)
Send feedback (free) — Report a bug, a missing feature or anything else about this service, in a structured way. Free. A person reads every report; nothing is run or changed automatically.
Added "feedback" (6 tools before, 7 now)
Send feedback (free) — Report a bug, a missing feature or anything else about this service, in a structured way. Free. A person reads every report; nothing is run or changed automatically.
First tool surface recorded: 6 tools (server version 1.2.0)
https://presign-guard.fizzl.eu/mcp (mcp_streamable_http) — from mcp_registry
Changed the definition of "presign_check", "presign_check_explain", "token_verdict" and 1 more
⟨77 unchanged words⟩ never sign on red. Same as POST /v1/check. The answer carries a signed receipt (EIP-191, bound to your arguments) that proves later which verdict you got.
⟨30 unchanged words⟩ en or nl). Same as POST /v1/check/explain. The answer carries a signed receipt (EIP-191, bound to your arguments) that proves later which verdict you got.
Added "wallet_approvals" (5 tools before, 6 now)
Wallet approval audit ($0.02 via x402) — Paid ($0.02 USDC via x402 on Base or Solana): audit the open token approvals of an EVM wallet (base, ethereum, arbitrum, optimism, polygon, bsc), for example your agent's own wallet as a periodic check. Get back green/orange/red, a grade, a one-line summary and every ERC-20 allowance with its spender: flagged malicious (red), a plain wallet, on a doubt list, an unverified contract or an unlimited allowance to a spender not on the GoPlus trust list (orange), plus which ones to revoke and a revoke.cash link. NFT approvals are not covered. Same as GET /v1/approvals.
Certificate recorded, valid to 2026-12-20
Authorization not required
Unknown → Live
First tool surface recorded: 5 tools (server version 1.1.0)
https://presign-guard.onrender.com/mcp (mcp_streamable_http) — from mcp_registry, with the record
Showing the latest 23 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
⟨43 unchanged words⟩ 0x-prefixed calldata","type":"string"},"from":{"description":"transaction, optional: your wallet address; the transaction is then simulated (what really leaves and arrives; orange HIDDEN_APPROVAL, SIMULATION_NFT_OUT, SIMULATION_FAILS)","type":"string"},"intent":{"description":"optional: what you ⟨161 unchanged words⟩ native value in wei","type":"string"},"x402":{"additionalProperties":{},"description":"optional, EIP-3009 payments only: the x402 payment requirements you are paying ({ accepted: { scheme, network, amount, asset, payTo, maxTimeoutSeconds, extra } }, one entry of the 402's accepts); red when the signature pays more, someone else, another token or chain","type":"object"}},"required":["type"],"type":"object"}
⟨43 unchanged words⟩ 0x-prefixed calldata","type":"string"},"intent":{"description":"optional: what you are trying to do, in one sentence (e.g. \"swap 10 USDC for ETH on Uniswap\"); orange INTENT_MISMATCH when signing would do more or something else","maxLength":500,"type":"string"},"network":{"description":"xrpl: xrpl:0 ⟨135 unchanged words⟩
⟨43 unchanged words⟩ 0x-prefixed calldata","type":"string"},"intent":{"description":"optional: what you are trying to do, in one sentence (e.g. \"swap 10 USDC for ETH on Uniswap\"); orange INTENT_MISMATCH when signing would do more or something else","maxLength":500,"type":"string"},"network":{"description":"xrpl: xrpl:0 ⟨135 unchanged words⟩
before
—after
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":true,"properties":{"accepts":{"anyOf":[{"items":{"additionalProperties":{},"type":"object"},"type":"array"},{"type":"null"}],"description":"Only on an unpaid call: the x402 payment options"},"explanation":{"anyOf":[{"additionalProperties":false,"properties":{"lang":{"type":"string"},"text":{"type":"string"}},"required":["lang","text"],"type":"object"},{"type":"null"}],"description":"Plain-language explanation for a person"},"reasons":{"anyOf":[{"description":"Why the verdict is what it is","items":{"additionalProperties":true,"properties":{"code":{"description":"Reason code, e.g. SPENDER_FLAGGED, UNLIMITED_ALLOWANCE, TOKEN_HONEYPOT","type":"string"},"severity":{"description":"info, warn or critical","type":"string"},"subject":{"description":"The address or item the reason is about","type":"string"}},"required":["code"],"type":"object"},"type":"array"},{"type":"null"}],"description":"Why the verdict is what it is"},"receipt":{"anyOf":[{"additionalProperties":{},"description":"Signed receipt (EIP-191) binding the verdict to your arguments","type":"object"},{"type":"null"}],"description":"Signed receipt (EIP-191) binding the verdict to your arguments"},"verdict":{"anyOf":[{"description":"green: go ahead; orange: ask the user; red: do not sign or buy","enum":["green","orange","red"],"type":"string"},{"type":"null"}],"description":"green: go ahead; orange: ask the user; red: do not sign or buy (absent on the payment requirement)"},"version":{"type":["string","null"]}},"type":"object"}before
—after
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":true,"properties":{"note":{"type":"string"},"verdict":{"description":"green: go ahead; orange: ask the user; red: do not sign or buy","enum":["green","orange","red"],"type":"string"}},"required":["verdict"],"type":"object"}before
—after
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":true,"properties":{"grade":{"description":"SAFE, CAUTION, RISKY or AVOID","type":"string"},"note":{"type":"string"},"verdict":{"description":"green: go ahead; orange: ask the user; red: do not sign or buy","enum":["green","orange","red"],"type":"string"}},"required":["verdict"],"type":"object"}before
—after
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":true,"properties":{"accepts":{"anyOf":[{"items":{"additionalProperties":{},"type":"object"},"type":"array"},{"type":"null"}],"description":"Only on an unpaid call: the x402 payment options"},"grade":{"description":"SAFE, CAUTION, RISKY or AVOID","type":["string","null"]},"one_liner":{"description":"One-line summary","type":["string","null"]},"reasons":{"anyOf":[{"description":"Why the verdict is what it is","items":{"additionalProperties":true,"properties":{"code":{"description":"Reason code, e.g. SPENDER_FLAGGED, UNLIMITED_ALLOWANCE, TOKEN_HONEYPOT","type":"string"},"severity":{"description":"info, warn or critical","type":"string"},"subject":{"description":"The address or item the reason is about","type":"string"}},"required":["code"],"type":"object"},"type":"array"},{"type":"null"}],"description":"Why the verdict is what it is"},"receipt":{"anyOf":[{"additionalProperties":{},"description":"Signed receipt (EIP-191) binding the verdict to your arguments","type":"object"},{"type":"null"}],"description":"Signed receipt (EIP-191) binding the verdict to your arguments"},"verdict":{"anyOf":[{"description":"green: go ahead; orange: ask the user; red: do not sign or buy","enum":["green","orange","red"],"type":"string"},{"type":"null"}],"description":"green: go ahead; orange: ask the user; red: do not sign or buy (absent on the payment requirement)"},"version":{"type":["string","null"]}},"type":"object"}before
—after
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":true,"properties":{"accepts":{"anyOf":[{"items":{"additionalProperties":{},"type":"object"},"type":"array"},{"type":"null"}],"description":"Only on an unpaid call: the x402 payment options"},"approvals":{"anyOf":[{"items":{"additionalProperties":{},"type":"object"},"type":"array"},{"type":"null"}],"description":"Every open ERC-20 allowance with its spender"},"grade":{"description":"SAFE, CAUTION, RISKY or AVOID","type":["string","null"]},"one_liner":{"description":"One-line summary","type":["string","null"]},"reasons":{"anyOf":[{"description":"Why the verdict is what it is","items":{"additionalProperties":true,"properties":{"code":{"description":"Reason code, e.g. SPENDER_FLAGGED, UNLIMITED_ALLOWANCE, TOKEN_HONEYPOT","type":"string"},"severity":{"description":"info, warn or critical","type":"string"},"subject":{"description":"The address or item the reason is about","type":"string"}},"required":["code"],"type":"object"},"type":"array"},{"type":"null"}],"description":"Why the verdict is what it is"},"receipt":{"anyOf":[{"additionalProperties":{},"description":"Signed receipt (EIP-191) binding the verdict to your arguments","type":"object"},{"type":"null"}],"description":"Signed receipt (EIP-191) binding the verdict to your arguments"},"revokeUrl":{"description":"revoke.cash link for this wallet","type":["string","null"]},"verdict":{"anyOf":[{"description":"green: go ahead; orange: ask the user; red: do not sign or buy","enum":["green","orange","red"],"type":"string"},{"type":"null"}],"description":"green: go ahead; orange: ask the user; red: do not sign or buy (absent on the payment requirement)"},"version":{"type":["string","null"]}},"type":"object"}before
—after
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":true,"properties":{"accepts":{"anyOf":[{"items":{"additionalProperties":{},"type":"object"},"type":"array"},{"type":"null"}],"description":"Only on an unpaid call: the x402 payment options"},"explanation":{"anyOf":[{"additionalProperties":false,"properties":{"lang":{"type":"string"},"text":{"type":"string"}},"required":["lang","text"],"type":"object"},{"type":"null"}],"description":"Plain-language explanation for a person"},"reasons":{"anyOf":[{"description":"Why the verdict is what it is","items":{"additionalProperties":true,"properties":{"code":{"description":"Reason code, e.g. SPENDER_FLAGGED, UNLIMITED_ALLOWANCE, TOKEN_HONEYPOT","type":"string"},"severity":{"description":"info, warn or critical","type":"string"},"subject":{"description":"The address or item the reason is about","type":"string"}},"required":["code"],"type":"object"},"type":"array"},{"type":"null"}],"description":"Why the verdict is what it is"},"receipt":{"anyOf":[{"additionalProperties":{},"description":"Signed receipt (EIP-191) binding the verdict to your arguments","type":"object"},{"type":"null"}],"description":"Signed receipt (EIP-191) binding the verdict to your arguments"},"verdict":{"anyOf":[{"description":"green: go ahead; orange: ask the user; red: do not sign or buy","enum":["green","orange","red"],"type":"string"},{"type":"null"}],"description":"green: go ahead; orange: ask the user; red: do not sign or buy (absent on the payment requirement)"},"version":{"type":["string","null"]}},"type":"object"}before
—after
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":true,"properties":{"note":{"type":"string"},"verdict":{"description":"green: go ahead; orange: ask the user; red: do not sign or buy","enum":["green","orange","red"],"type":"string"}},"required":["verdict"],"type":"object"}before
—after
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":true,"properties":{"grade":{"description":"SAFE, CAUTION, RISKY or AVOID","type":"string"},"note":{"type":"string"},"verdict":{"description":"green: go ahead; orange: ask the user; red: do not sign or buy","enum":["green","orange","red"],"type":"string"}},"required":["verdict"],"type":"object"}before
—after
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":true,"properties":{"accepts":{"anyOf":[{"items":{"additionalProperties":{},"type":"object"},"type":"array"},{"type":"null"}],"description":"Only on an unpaid call: the x402 payment options"},"grade":{"description":"SAFE, CAUTION, RISKY or AVOID","type":["string","null"]},"one_liner":{"description":"One-line summary","type":["string","null"]},"reasons":{"anyOf":[{"description":"Why the verdict is what it is","items":{"additionalProperties":true,"properties":{"code":{"description":"Reason code, e.g. SPENDER_FLAGGED, UNLIMITED_ALLOWANCE, TOKEN_HONEYPOT","type":"string"},"severity":{"description":"info, warn or critical","type":"string"},"subject":{"description":"The address or item the reason is about","type":"string"}},"required":["code"],"type":"object"},"type":"array"},{"type":"null"}],"description":"Why the verdict is what it is"},"receipt":{"anyOf":[{"additionalProperties":{},"description":"Signed receipt (EIP-191) binding the verdict to your arguments","type":"object"},{"type":"null"}],"description":"Signed receipt (EIP-191) binding the verdict to your arguments"},"verdict":{"anyOf":[{"description":"green: go ahead; orange: ask the user; red: do not sign or buy","enum":["green","orange","red"],"type":"string"},{"type":"null"}],"description":"green: go ahead; orange: ask the user; red: do not sign or buy (absent on the payment requirement)"},"version":{"type":["string","null"]}},"type":"object"}before
—after
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":true,"properties":{"accepts":{"anyOf":[{"items":{"additionalProperties":{},"type":"object"},"type":"array"},{"type":"null"}],"description":"Only on an unpaid call: the x402 payment options"},"approvals":{"anyOf":[{"items":{"additionalProperties":{},"type":"object"},"type":"array"},{"type":"null"}],"description":"Every open ERC-20 allowance with its spender"},"grade":{"description":"SAFE, CAUTION, RISKY or AVOID","type":["string","null"]},"one_liner":{"description":"One-line summary","type":["string","null"]},"reasons":{"anyOf":[{"description":"Why the verdict is what it is","items":{"additionalProperties":true,"properties":{"code":{"description":"Reason code, e.g. SPENDER_FLAGGED, UNLIMITED_ALLOWANCE, TOKEN_HONEYPOT","type":"string"},"severity":{"description":"info, warn or critical","type":"string"},"subject":{"description":"The address or item the reason is about","type":"string"}},"required":["code"],"type":"object"},"type":"array"},{"type":"null"}],"description":"Why the verdict is what it is"},"receipt":{"anyOf":[{"additionalProperties":{},"description":"Signed receipt (EIP-191) binding the verdict to your arguments","type":"object"},{"type":"null"}],"description":"Signed receipt (EIP-191) binding the verdict to your arguments"},"revokeUrl":{"description":"revoke.cash link for this wallet","type":["string","null"]},"verdict":{"anyOf":[{"description":"green: go ahead; orange: ask the user; red: do not sign or buy","enum":["green","orange","red"],"type":"string"},{"type":"null"}],"description":"green: go ahead; orange: ask the user; red: do not sign or buy (absent on the payment requirement)"},"version":{"type":["string","null"]}},"type":"object"}⟨18 unchanged words⟩ ,"chainId":{"description":"EVM chain id, required for approval, transaction and signature: 1, 10, 56, 137, 8453, ⟨23 unchanged words⟩ ,"nl"],"type":"string"},"network":{"description":"xrpl: xrpl:0 (mainnet, default) or xrpl:1 (testnet)","enum":["xrpl:0","xrpl:1"],"type":"string"},"origin":{"description":"optional: the site ⟨41 unchanged words⟩ token contract","type":"string"},"tx":{"additionalProperties":{},"description":"xrpl: the unsigned transaction JSON (TransactionType, Account, Destination, Amount, …)","type":"object"},"type":{"description":"What the agent is about tosignsign; xrpl = an unsigned XRP Ledger transaction in tx","enum":["approval","transaction","signature","xrpl"],"type":"string"},"typedData":{ ⟨25 unchanged words⟩ type":"string"}},"required":["type","chainId"],"type":"object"}
Free: the green/orange/red verdict only, for a transaction, token approvalor, EIP-712 signature or XRP Ledger transaction (type xrpl) your agent is about to sign. Limited to ⟨21 unchanged words⟩
⟨18 unchanged words⟩ ,"chainId":{"description":"EVM chain id, required for approval, transaction and signature: 1, 10, 56, 137, 8453, ⟨9 unchanged words⟩ 0x-prefixed calldata","type":"string"},"network":{"description":"xrpl: xrpl:0 (mainnet, default) or xrpl:1 (testnet)","enum":["xrpl:0","xrpl:1"],"type":"string"},"origin":{"description":"optional: the site ⟨41 unchanged words⟩ token contract","type":"string"},"tx":{"additionalProperties":{},"description":"xrpl: the unsigned transaction JSON (TransactionType, Account, Destination, Amount, …)","type":"object"},"type":{"description":"What the agent is about tosignsign; xrpl = an unsigned XRP Ledger transaction in tx","enum":["approval","transaction","signature","xrpl"],"type":"string"},"typedData":{ ⟨25 unchanged words⟩ type":"string"}},"required":["type","chainId"],"type":"object"}
⟨18 unchanged words⟩ ,"chainId":{"description":"EVM chain id, required for approval, transaction and signature: 1, 10, 56, 137, 8453, ⟨23 unchanged words⟩ ,"nl"],"type":"string"},"network":{"description":"xrpl: xrpl:0 (mainnet, default) or xrpl:1 (testnet)","enum":["xrpl:0","xrpl:1"],"type":"string"},"origin":{"description":"optional: the site ⟨41 unchanged words⟩ token contract","type":"string"},"tx":{"additionalProperties":{},"description":"xrpl: the unsigned transaction JSON (TransactionType, Account, Destination, Amount, …)","type":"object"},"type":{"description":"What the agent is about tosignsign; xrpl = an unsigned XRP Ledger transaction in tx","enum":["approval","transaction","signature","xrpl"],"type":"string"},"typedData":{ ⟨25 unchanged words⟩ type":"string"}},"required":["type","chainId"],"type":"object"}
Free: the green/orange/red verdict only, for a transaction, token approvalor, EIP-712 signature or XRP Ledger transaction (type xrpl) your agent is about to sign. Limited to ⟨21 unchanged words⟩
⟨18 unchanged words⟩ ,"chainId":{"description":"EVM chain id, required for approval, transaction and signature: 1, 10, 56, 137, 8453, ⟨9 unchanged words⟩ 0x-prefixed calldata","type":"string"},"network":{"description":"xrpl: xrpl:0 (mainnet, default) or xrpl:1 (testnet)","enum":["xrpl:0","xrpl:1"],"type":"string"},"origin":{"description":"optional: the site ⟨41 unchanged words⟩ token contract","type":"string"},"tx":{"additionalProperties":{},"description":"xrpl: the unsigned transaction JSON (TransactionType, Account, Destination, Amount, …)","type":"object"},"type":{"description":"What the agent is about tosignsign; xrpl = an unsigned XRP Ledger transaction in tx","enum":["approval","transaction","signature","xrpl"],"type":"string"},"typedData":{ ⟨25 unchanged words⟩ type":"string"}},"required":["type","chainId"],"type":"object"}
⟨78 unchanged words⟩ 24h volume, age). Same as GET /v1/token. The answer carries a signed receipt (EIP-191, bound to your arguments) that proves later which verdict you got.
⟨86 unchanged words⟩ approvals are not covered. Same as GET /v1/approvals. The answer carries a signed receipt (EIP-191, bound to your arguments) that proves later which verdict you got.