Skip to main content
Glama

Server Details

Safe to sign? EVM, Solana, XRPL, Algorand txs, permits, tokens; OFAC wallet screen: green/orange/red

Ownership verified
Status
Healthy
Uptime
100.0% over 23 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
Fizzl13/presign-guard
GitHub Stars
1

TDQS

A4.2/5.0

Scored across 7 tools

Disambiguation5/5

Each tool targets a distinct resource and depth: presign checks (quick/full/explain), token checks (quick/full), wallet approvals, and feedback. The apparent overlaps are intentional free-vs-paid tiers with explicit cross-references, so an agent can reliably pick the right one.

Naming Consistency4/5

All names use snake_case and follow a domain-prefix pattern (presign_*, token_*, wallet_*), making the set highly readable. Minor deviations: the standalone 'feedback' tool and slightly inconsistent modifier ordering (presign_quick_check vs presign_check_explain).

Tool Count5/5

Seven tools is well-scoped for a pre-signature and token security service, covering the core surfaces without bloat. Each tool earns its place, and the free/paid tiering is clearly delineated.

Completeness4/5

The surface covers EVM and XRPL presign checks, EVM/Solana token verdicts, EVM wallet approval audits, and a feedback channel. Minor gaps remain (NFT approvals explicitly excluded, no Solana wallet approval audit, no XRPL token verdict), but agents can work around them.

Available Tools

8 tools
feedbackSend feedback (free)Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNobug, feature (something missing) or other
contactNoOptional: how to reach you about it
messageYesWhat happened or what you need
endpointNoOptional: the route or tool it is about, e.g. /v1/token

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesReport id, to refer to it later
noteNo
typeNo
serviceNo
receivedYestrue: a person will read it
presign_checkPre-sign risk check ($0.01 via x402)
Read-only
Inspect

Paid ($0.01 USDC via x402 on Base or Solana): call this before you sign. Send the transaction, token approval or EIP-712 signature (Permit, Permit2, EIP-3009 x402 payment, Seaport) your agent is about to sign; get back green, orange or red with reason codes: who gets access, whether the spender or recipient is flagged, sanctioned (OFAC SDN) or unverified, unlimited allowances, and the token itself (honeypot, fake look-alike, high tax). On Solana (type solana, the base64 wire transaction): every instruction decoded and the transaction simulated (token account takeovers, System Assign, unlimited delegates, durable nonces, hidden owner or delegate changes). 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. On Algorand (type algorand, base64 msgpack transaction or group in transactions): rekeys, closing the account or an asset to someone else, clawbacks, fake USDC, app update/delete/clear, simulated. Only proceed on green; on orange ask your user; 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNotransaction: the target contract
txNoxrpl: the unsigned transaction JSON (TransactionType, Account, Destination, Amount, …)
dataNotransaction: 0x-prefixed calldata
fromNotransaction or message, optional: your wallet address; the transaction is then simulated (what really leaves and arrives; orange HIDDEN_APPROVAL, SIMULATION_NFT_OUT, SIMULATION_FAILS) and its recipients are compared with who this wallet paid before (red ADDRESS_POISONING for a look-alike)
typeYesWhat the agent is about to sign; message = a plain personal_sign / eth_sign message in message; solana = a Solana transaction in transaction; xrpl = an unsigned XRP Ledger transaction in tx; algorand = an Algorand transaction in transaction, or a group in transactions
x402Nooptional, 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
tokenNoapproval: the token contract
valueNotransaction: native value in wei
amountNoapproval: amount in base units (0 = revoke)
intentNooptional: 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
methodNomessage: how it is signed (default personal_sign); eth_sign is always red
originNooptional: the site asking for the signature or transaction (URL or hostname); a domain under 30 days old is orange
chainIdNoEVM chain id, required for approval, transaction and signature: 1, 10, 56, 137, 8453, 42161 (8453 = Base); optional for message
messageNomessage: 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
networkNoxrpl: xrpl:0 (mainnet, default) or xrpl:1 (testnet)
spenderNoapproval: who gets the allowance
typedDataNosignature: the exact eth_signTypedData_v4 payload (Permit, Permit2, EIP-3009 x402 payment, Seaport)
transactionNosolana: the base64 wire transaction about to be signed; decoded and simulated (red SOLANA_TOKEN_ACCOUNT_TAKEOVER, SOLANA_ACCOUNT_ASSIGN; orange SOLANA_UNLIMITED_DELEGATE, SOLANA_DURABLE_NONCE, HIDDEN_APPROVAL, SIMULATION_FAILS). algorand: one base64 msgpack transaction (unsigned or signed); red ALGORAND_REKEY, ALGORAND_CLOSE_ACCOUNT, ALGORAND_ASSET_CLOSE, ALGORAND_FAKE_STABLECOIN; simulated
transactionsNoalgorand: an atomic group, each a base64 msgpack transaction; send the whole group so every transaction is checked

Output Schema

ParametersJSON Schema
NameRequiredDescription
acceptsNoOnly on an unpaid call: the x402 payment options
reasonsNoWhy the verdict is what it is
receiptNoSigned receipt (EIP-191) binding the verdict to your arguments
verdictNogreen: go ahead; orange: ask the user; red: do not sign or buy (absent on the payment requirement)
versionNo
presign_check_explainPre-sign risk check with explanation ($0.03 via x402)
Read-only
Inspect

Paid ($0.03 USDC via x402 on Base or Solana): the same verdict and reason codes as presign_check, plus a 3 to 5 sentence plain-language explanation a person can read before approving (lang 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNotransaction: the target contract
txNoxrpl: the unsigned transaction JSON (TransactionType, Account, Destination, Amount, …)
dataNotransaction: 0x-prefixed calldata
fromNotransaction or message, optional: your wallet address; the transaction is then simulated (what really leaves and arrives; orange HIDDEN_APPROVAL, SIMULATION_NFT_OUT, SIMULATION_FAILS) and its recipients are compared with who this wallet paid before (red ADDRESS_POISONING for a look-alike)
langNoLanguage of the explanation (default en)
typeYesWhat the agent is about to sign; message = a plain personal_sign / eth_sign message in message; solana = a Solana transaction in transaction; xrpl = an unsigned XRP Ledger transaction in tx; algorand = an Algorand transaction in transaction, or a group in transactions
x402Nooptional, 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
tokenNoapproval: the token contract
valueNotransaction: native value in wei
amountNoapproval: amount in base units (0 = revoke)
intentNooptional: 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
methodNomessage: how it is signed (default personal_sign); eth_sign is always red
originNooptional: the site asking for the signature or transaction (URL or hostname); a domain under 30 days old is orange
chainIdNoEVM chain id, required for approval, transaction and signature: 1, 10, 56, 137, 8453, 42161 (8453 = Base); optional for message
messageNomessage: 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
networkNoxrpl: xrpl:0 (mainnet, default) or xrpl:1 (testnet)
spenderNoapproval: who gets the allowance
typedDataNosignature: the exact eth_signTypedData_v4 payload (Permit, Permit2, EIP-3009 x402 payment, Seaport)
transactionNosolana: the base64 wire transaction about to be signed; decoded and simulated (red SOLANA_TOKEN_ACCOUNT_TAKEOVER, SOLANA_ACCOUNT_ASSIGN; orange SOLANA_UNLIMITED_DELEGATE, SOLANA_DURABLE_NONCE, HIDDEN_APPROVAL, SIMULATION_FAILS). algorand: one base64 msgpack transaction (unsigned or signed); red ALGORAND_REKEY, ALGORAND_CLOSE_ACCOUNT, ALGORAND_ASSET_CLOSE, ALGORAND_FAKE_STABLECOIN; simulated
transactionsNoalgorand: an atomic group, each a base64 msgpack transaction; send the whole group so every transaction is checked

Output Schema

ParametersJSON Schema
NameRequiredDescription
acceptsNoOnly on an unpaid call: the x402 payment options
reasonsNoWhy the verdict is what it is
receiptNoSigned receipt (EIP-191) binding the verdict to your arguments
verdictNogreen: go ahead; orange: ask the user; red: do not sign or buy (absent on the payment requirement)
versionNo
explanationNoPlain-language explanation for a person
presign_quick_checkQuick pre-sign verdict (free)
Read-only
Inspect

Free: the green/orange/red verdict only, for a transaction, token approval, EIP-712 signature, XRP Ledger transaction (type xrpl) or Algorand transaction (type algorand) your agent is about to sign. Limited to 10 calls per hour. For the reason codes and details use presign_check ($0.01); for a plain-language explanation presign_check_explain ($0.03).

ParametersJSON Schema
NameRequiredDescriptionDefault
toNotransaction: the target contract
txNoxrpl: the unsigned transaction JSON (TransactionType, Account, Destination, Amount, …)
dataNotransaction: 0x-prefixed calldata
fromNotransaction or message, optional: your wallet address; the transaction is then simulated (what really leaves and arrives; orange HIDDEN_APPROVAL, SIMULATION_NFT_OUT, SIMULATION_FAILS) and its recipients are compared with who this wallet paid before (red ADDRESS_POISONING for a look-alike)
typeYesWhat the agent is about to sign; message = a plain personal_sign / eth_sign message in message; solana = a Solana transaction in transaction; xrpl = an unsigned XRP Ledger transaction in tx; algorand = an Algorand transaction in transaction, or a group in transactions
x402Nooptional, 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
tokenNoapproval: the token contract
valueNotransaction: native value in wei
amountNoapproval: amount in base units (0 = revoke)
intentNooptional: 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
methodNomessage: how it is signed (default personal_sign); eth_sign is always red
originNooptional: the site asking for the signature or transaction (URL or hostname); a domain under 30 days old is orange
chainIdNoEVM chain id, required for approval, transaction and signature: 1, 10, 56, 137, 8453, 42161 (8453 = Base); optional for message
messageNomessage: 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
networkNoxrpl: xrpl:0 (mainnet, default) or xrpl:1 (testnet)
spenderNoapproval: who gets the allowance
typedDataNosignature: the exact eth_signTypedData_v4 payload (Permit, Permit2, EIP-3009 x402 payment, Seaport)
transactionNosolana: the base64 wire transaction about to be signed; decoded and simulated (red SOLANA_TOKEN_ACCOUNT_TAKEOVER, SOLANA_ACCOUNT_ASSIGN; orange SOLANA_UNLIMITED_DELEGATE, SOLANA_DURABLE_NONCE, HIDDEN_APPROVAL, SIMULATION_FAILS). algorand: one base64 msgpack transaction (unsigned or signed); red ALGORAND_REKEY, ALGORAND_CLOSE_ACCOUNT, ALGORAND_ASSET_CLOSE, ALGORAND_FAKE_STABLECOIN; simulated
transactionsNoalgorand: an atomic group, each a base64 msgpack transaction; send the whole group so every transaction is checked

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNo
verdictYesgreen: go ahead; orange: ask the user; red: do not sign or buy
screen_walletWallet sanctions screen ($0.01 via x402)A
Read-only
Inspect

Paid ($0.01 USDC via x402 on Base or Solana): call this before your agent pays an address, or before accepting money from one. Send any chain's wallet address (EVM 0x..., Solana, Tron, Bitcoin, XRP Ledger, Algorand, or another currency OFAC lists). Get back green/orange/red: red SANCTIONED_ADDRESS with the SDN entry (name, programs, currency) when the address is on the OFAC SDN list, red or orange when GoPlus reports theft, phishing, laundering or mixer use (EVM). Never pay or accept funds on red. The answer carries a signed receipt (EIP-191, bound to your arguments) that proves later which verdict you got.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesThe wallet address to screen, any chain: EVM (0x...), Solana, Tron, Bitcoin, XRP Ledger, Algorand, or another currency OFAC lists

Output Schema

ParametersJSON Schema
NameRequiredDescription
gradeNoSAFE, CAUTION, RISKY or AVOID
acceptsNoOnly on an unpaid call: the x402 payment options
reasonsNoWhy the verdict is what it is
receiptNoSigned receipt (EIP-191) binding the verdict to your arguments
verdictNogreen: go ahead; orange: ask the user; red: do not sign or buy (absent on the payment requirement)
versionNo
one_linerNoOne-line summary
sanctionsNoOFAC SDN result: listed, matches (name, programs, currency), published

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover readOnly/openWorld, yet the description adds substantial behavioral context: the $0.01 USDC x402 cost and chains, the green/orange/red verdict scale, the data sources (OFAC SDN, GoPlus for EVM only), the SANCTIONED_ADDRESS field contents, and the EIP-191 signed receipt bound to arguments. That is real disclosure well beyond the safety hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with cost, then the trigger condition, then the verdict semantics — a logical order with no filler. It is dense and long-ish, but nearly every clause (cost, chains, verdict tiers, receipt) carries information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a paid, single-parameter screening tool with an output schema, the description supplies everything needed to decide and invoke: cost, chains, verdict meanings, the action rule on red, and receipt provenance. Nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single address parameter, and the description's chain list (EVM, Solana, Tron, Bitcoin, XRP Ledger, Algorand, other OFAC currencies) duplicates what the schema already says. Baseline 3 applies since the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource — screen a wallet address for OFAC sanctions and risk — and frames the moment it matters ('before your agent pays an address, or before accepting money from one'). It is clearly a wallet-level screener distinct from the presign_check and token_verdict siblings that operate on transactions or tokens.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states clearly when to call it (pre-payment and pre-receipt) and gives an action rule ('Never pay or accept funds on red'). It does not name any sibling or explain when to prefer presign_check / wallet_approvals instead, so the routing guidance stops short of explicit alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

token_quick_verdictQuick token verdict (free)
Read-only
Inspect

Free: the green/orange/red verdict and grade only, for a Solana or EVM token your agent is about to buy, hold or accept. Limited to 10 free calls per hour (shared with presign_quick_check). For the reasons, one-line summary and market data use token_verdict ($0.01).

ParametersJSON Schema
NameRequiredDescriptionDefault
chainYesChain the token lives on
addressYesSolana mint address (base58), EVM token contract (0x...), XRPL token as CURRENCY.rIssuer, or Algorand asset id (e.g. 31566704)

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNo
gradeNoSAFE, CAUTION, RISKY or AVOID
verdictYesgreen: go ahead; orange: ask the user; red: do not sign or buy
token_verdictToken verdict ($0.01 via x402)
Read-only
Inspect

Paid ($0.01 USDC via x402 on Base or Solana): call this before your agent buys, holds or accepts a token. Send the chain (solana, base, ethereum, arbitrum, optimism, polygon, bsc, xrpl, algorand) and the token address, mint, CURRENCY.rIssuer or Algorand asset id; get back green/orange/red, a grade (SAFE, CAUTION, RISKY, AVOID), reason codes (mint or freeze authority still active, honeypot, tax or transfer fee, LP not locked, low liquidity, new token, concentrated holders, rugged), a one-line summary, and market data (price, liquidity, market cap, 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainYesChain the token lives on
addressYesSolana mint address (base58), EVM token contract (0x...), XRPL token as CURRENCY.rIssuer, or Algorand asset id (e.g. 31566704)

Output Schema

ParametersJSON Schema
NameRequiredDescription
gradeNoSAFE, CAUTION, RISKY or AVOID
acceptsNoOnly on an unpaid call: the x402 payment options
reasonsNoWhy the verdict is what it is
receiptNoSigned receipt (EIP-191) binding the verdict to your arguments
verdictNogreen: go ahead; orange: ask the user; red: do not sign or buy (absent on the payment requirement)
versionNo
one_linerNoOne-line summary
wallet_approvalsWallet approval audit ($0.02 via x402)
Read-only
Inspect

Paid ($0.02 USDC via x402 on Base or Solana): audit the open token approvals of a wallet on an EVM chain (base, ethereum, arbitrum, optimism, polygon, bsc) or on Solana, for example your agent's own wallet as a periodic check. Get back green/orange/red, a grade, a one-line summary and every approval with its spender. EVM, every ERC-20 allowance: 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), with a revoke.cash link. Solana, every SPL token delegation (Approve): a delegate on the OFAC SDN list (red), a delegate that is a plain wallet or an unlimited delegation (orange), with the token account to revoke on; Token-2022 tokens with a permanent delegate are listed too. NFT 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainYesChain to audit: an EVM chain (ERC-20 allowances) or solana (SPL token delegations)
addressYesWallet address (0x... on EVM, base58 on Solana)

Output Schema

ParametersJSON Schema
NameRequiredDescription
gradeNoSAFE, CAUTION, RISKY or AVOID
acceptsNoOnly on an unpaid call: the x402 payment options
reasonsNoWhy the verdict is what it is
receiptNoSigned receipt (EIP-191) binding the verdict to your arguments
verdictNogreen: go ahead; orange: ask the user; red: do not sign or buy (absent on the payment requirement)
versionNo
approvalsNoEvery open ERC-20 allowance (EVM) or SPL token delegation (Solana) with its spender
one_linerNoOne-line summary
revokeUrlNorevoke.cash link for this wallet (EVM; null on Solana)

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedwallet_approvals5 fields changed
      • changedInput schema / properties / address / description
        Previous value: -"Wallet address (0x...)"New value: +"Wallet address (0x... on EVM, base58 on Solana)"
      • changedInput schema / properties / chain / description
        Previous value: -"EVM chain to audit"New value: +"Chain to audit: an EVM chain (ERC-20 allowances) or solana (SPL token delegations)"
      • changedInput schema / properties / chain / enum
        Previous value: -[
        -  "base",
        -  "ethereum",
        -  "arbitrum",
        -  "optimism",
        -  "polygon",
        -  "bsc"
        -]New value: +[
        +  "base",
        +  "ethereum",
        +  "arbitrum",
        +  "optimism",
        +  "polygon",
        +  "bsc",
        +  "solana"
        +]
      • changedOutput schema / properties / approvals / description
        Previous value: -"Every open ERC-20 allowance with its spender"New value: +"Every open ERC-20 allowance (EVM) or SPL token delegation (Solana) with its spender"
      • changedOutput schema / properties / revokeUrl / description
        Previous value: -"revoke.cash link for this wallet"New value: +"revoke.cash link for this wallet (EVM; null on Solana)"
  2. 5 tool updates
    • Changedpresign_check1 field changed
      • changedOutput schema / properties / reasons / anyOf
        Previous value: -[
        -  {
        -    "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"
        -  }
        -]New value: +[
        +  {
        +    "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 (null or absent when it is about the whole request)",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        }
        +      },
        +      "required": [
        +        "code"
        +      ],
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedpresign_check_explain1 field changed
      • changedOutput schema / properties / reasons / anyOf
        Previous value: -[
        -  {
        -    "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"
        -  }
        -]New value: +[
        +  {
        +    "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 (null or absent when it is about the whole request)",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        }
        +      },
        +      "required": [
        +        "code"
        +      ],
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedscreen_wallet1 field changed
      • changedOutput schema / properties / reasons / anyOf
        Previous value: -[
        -  {
        -    "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"
        -  }
        -]New value: +[
        +  {
        +    "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 (null or absent when it is about the whole request)",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        }
        +      },
        +      "required": [
        +        "code"
        +      ],
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedtoken_verdict1 field changed
      • changedOutput schema / properties / reasons / anyOf
        Previous value: -[
        -  {
        -    "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"
        -  }
        -]New value: +[
        +  {
        +    "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 (null or absent when it is about the whole request)",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        }
        +      },
        +      "required": [
        +        "code"
        +      ],
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedwallet_approvals1 field changed
      • changedOutput schema / properties / reasons / anyOf
        Previous value: -[
        -  {
        -    "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"
        -  }
        -]New value: +[
        +  {
        +    "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 (null or absent when it is about the whole request)",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        }
        +      },
        +      "required": [
        +        "code"
        +      ],
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
  3. 1 tool update
    • Addedscreen_wallet
  4. 2 tool updates
    • Changedtoken_quick_verdict2 fields changed
      • changedInput schema / properties / address / description
        Previous value: -"Solana mint address (base58) or EVM token contract (0x...)"New value: +"Solana mint address (base58), EVM token contract (0x...), XRPL token as CURRENCY.rIssuer, or Algorand asset id (e.g. 31566704)"
      • changedInput schema / properties / chain / enum
        Previous value: -[
        -  "solana",
        -  "base",
        -  "ethereum",
        -  "arbitrum",
        -  "optimism",
        -  "polygon",
        -  "bsc",
        -  "xrpl"
        -]New value: +[
        +  "solana",
        +  "base",
        +  "ethereum",
        +  "arbitrum",
        +  "optimism",
        +  "polygon",
        +  "bsc",
        +  "xrpl",
        +  "algorand"
        +]
    • Changedtoken_verdict2 fields changed
      • changedInput schema / properties / address / description
        Previous value: -"Solana mint address (base58) or EVM token contract (0x...)"New value: +"Solana mint address (base58), EVM token contract (0x...), XRPL token as CURRENCY.rIssuer, or Algorand asset id (e.g. 31566704)"
      • changedInput schema / properties / chain / enum
        Previous value: -[
        -  "solana",
        -  "base",
        -  "ethereum",
        -  "arbitrum",
        -  "optimism",
        -  "polygon",
        -  "bsc",
        -  "xrpl"
        -]New value: +[
        +  "solana",
        +  "base",
        +  "ethereum",
        +  "arbitrum",
        +  "optimism",
        +  "polygon",
        +  "bsc",
        +  "xrpl",
        +  "algorand"
        +]
  5. 3 tool updates
    • Changedpresign_check5 fields changed
      • changedInput schema / properties / transaction / description
        Previous value: -"solana: the base64 wire transaction about to be signed; decoded and simulated (red SOLANA_TOKEN_ACCOUNT_TAKEOVER, SOLANA_ACCOUNT_ASSIGN; orange SOLANA_UNLIMITED_DELEGATE, SOLANA_DURABLE_NONCE, HIDDEN_APPROVAL, SIMULATION_FAILS)"New value: +"solana: the base64 wire transaction about to be signed; decoded and simulated (red SOLANA_TOKEN_ACCOUNT_TAKEOVER, SOLANA_ACCOUNT_ASSIGN; orange SOLANA_UNLIMITED_DELEGATE, SOLANA_DURABLE_NONCE, HIDDEN_APPROVAL, SIMULATION_FAILS). algorand: one base64 msgpack transaction (unsigned or signed); red ALGORAND_REKEY, ALGORAND_CLOSE_ACCOUNT, ALGORAND_ASSET_CLOSE, ALGORAND_FAKE_STABLECOIN; simulated"
      • changedInput schema / properties / transaction / maxLength
        Previous value: -2400New value: +12000
      • addedInput schema / properties / transactions
        Added value: +{
        +  "description": "algorand: an atomic group, each a base64 msgpack transaction; send the whole group so every transaction is checked",
        +  "items": {
        +    "maxLength": 12000,
        +    "type": "string"
        +  },
        +  "maxItems": 16,
        +  "type": "array"
        +}
      • changedInput schema / properties / type / description
        Previous value: -"What the agent is about to sign; message = a plain personal_sign / eth_sign message in message; solana = a Solana transaction in transaction; xrpl = an unsigned XRP Ledger transaction in tx"New value: +"What the agent is about to sign; message = a plain personal_sign / eth_sign message in message; solana = a Solana transaction in transaction; xrpl = an unsigned XRP Ledger transaction in tx; algorand = an Algorand transaction in transaction, or a group in transactions"
      • changedInput schema / properties / type / enum
        Previous value: -[
        -  "approval",
        -  "transaction",
        -  "signature",
        -  "message",
        -  "solana",
        -  "xrpl"
        -]New value: +[
        +  "approval",
        +  "transaction",
        +  "signature",
        +  "message",
        +  "solana",
        +  "xrpl",
        +  "algorand"
        +]
    • Changedpresign_check_explain5 fields changed
      • changedInput schema / properties / transaction / description
        Previous value: -"solana: the base64 wire transaction about to be signed; decoded and simulated (red SOLANA_TOKEN_ACCOUNT_TAKEOVER, SOLANA_ACCOUNT_ASSIGN; orange SOLANA_UNLIMITED_DELEGATE, SOLANA_DURABLE_NONCE, HIDDEN_APPROVAL, SIMULATION_FAILS)"New value: +"solana: the base64 wire transaction about to be signed; decoded and simulated (red SOLANA_TOKEN_ACCOUNT_TAKEOVER, SOLANA_ACCOUNT_ASSIGN; orange SOLANA_UNLIMITED_DELEGATE, SOLANA_DURABLE_NONCE, HIDDEN_APPROVAL, SIMULATION_FAILS). algorand: one base64 msgpack transaction (unsigned or signed); red ALGORAND_REKEY, ALGORAND_CLOSE_ACCOUNT, ALGORAND_ASSET_CLOSE, ALGORAND_FAKE_STABLECOIN; simulated"
      • changedInput schema / properties / transaction / maxLength
        Previous value: -2400New value: +12000
      • addedInput schema / properties / transactions
        Added value: +{
        +  "description": "algorand: an atomic group, each a base64 msgpack transaction; send the whole group so every transaction is checked",
        +  "items": {
        +    "maxLength": 12000,
        +    "type": "string"
        +  },
        +  "maxItems": 16,
        +  "type": "array"
        +}
      • changedInput schema / properties / type / description
        Previous value: -"What the agent is about to sign; message = a plain personal_sign / eth_sign message in message; solana = a Solana transaction in transaction; xrpl = an unsigned XRP Ledger transaction in tx"New value: +"What the agent is about to sign; message = a plain personal_sign / eth_sign message in message; solana = a Solana transaction in transaction; xrpl = an unsigned XRP Ledger transaction in tx; algorand = an Algorand transaction in transaction, or a group in transactions"
      • changedInput schema / properties / type / enum
        Previous value: -[
        -  "approval",
        -  "transaction",
        -  "signature",
        -  "message",
        -  "solana",
        -  "xrpl"
        -]New value: +[
        +  "approval",
        +  "transaction",
        +  "signature",
        +  "message",
        +  "solana",
        +  "xrpl",
        +  "algorand"
        +]
    • Changedpresign_quick_check5 fields changed
      • changedInput schema / properties / transaction / description
        Previous value: -"solana: the base64 wire transaction about to be signed; decoded and simulated (red SOLANA_TOKEN_ACCOUNT_TAKEOVER, SOLANA_ACCOUNT_ASSIGN; orange SOLANA_UNLIMITED_DELEGATE, SOLANA_DURABLE_NONCE, HIDDEN_APPROVAL, SIMULATION_FAILS)"New value: +"solana: the base64 wire transaction about to be signed; decoded and simulated (red SOLANA_TOKEN_ACCOUNT_TAKEOVER, SOLANA_ACCOUNT_ASSIGN; orange SOLANA_UNLIMITED_DELEGATE, SOLANA_DURABLE_NONCE, HIDDEN_APPROVAL, SIMULATION_FAILS). algorand: one base64 msgpack transaction (unsigned or signed); red ALGORAND_REKEY, ALGORAND_CLOSE_ACCOUNT, ALGORAND_ASSET_CLOSE, ALGORAND_FAKE_STABLECOIN; simulated"
      • changedInput schema / properties / transaction / maxLength
        Previous value: -2400New value: +12000
      • addedInput schema / properties / transactions
        Added value: +{
        +  "description": "algorand: an atomic group, each a base64 msgpack transaction; send the whole group so every transaction is checked",
        +  "items": {
        +    "maxLength": 12000,
        +    "type": "string"
        +  },
        +  "maxItems": 16,
        +  "type": "array"
        +}
      • changedInput schema / properties / type / description
        Previous value: -"What the agent is about to sign; message = a plain personal_sign / eth_sign message in message; solana = a Solana transaction in transaction; xrpl = an unsigned XRP Ledger transaction in tx"New value: +"What the agent is about to sign; message = a plain personal_sign / eth_sign message in message; solana = a Solana transaction in transaction; xrpl = an unsigned XRP Ledger transaction in tx; algorand = an Algorand transaction in transaction, or a group in transactions"
      • changedInput schema / properties / type / enum
        Previous value: -[
        -  "approval",
        -  "transaction",
        -  "signature",
        -  "message",
        -  "solana",
        -  "xrpl"
        -]New value: +[
        +  "approval",
        +  "transaction",
        +  "signature",
        +  "message",
        +  "solana",
        +  "xrpl",
        +  "algorand"
        +]
  6. 3 tool updates
    • Changedpresign_check7 fields changed
      • changedInput schema / properties / chainId / description
        Previous value: -"EVM chain id, required for approval, transaction and signature: 1, 10, 56, 137, 8453, 42161 (8453 = Base)"New value: +"EVM chain id, required for approval, transaction and signature: 1, 10, 56, 137, 8453, 42161 (8453 = Base); optional for message"
      • changedInput schema / properties / from / description
        Previous value: -"transaction, optional: your wallet address; the transaction is then simulated (what really leaves and arrives; orange HIDDEN_APPROVAL, SIMULATION_NFT_OUT, SIMULATION_FAILS)"New value: +"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) and its recipients are compared with who this wallet paid before (red ADDRESS_POISONING for a look-alike)"
      • addedInput schema / properties / message
        Added value: +{
        +  "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"
        +}
      • addedInput schema / properties / method
        Added value: +{
        +  "description": "message: how it is signed (default personal_sign); eth_sign is always red",
        +  "enum": [
        +    "personal_sign",
        +    "eth_sign"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / transaction
        Added value: +{
        +  "description": "solana: the base64 wire transaction about to be signed; decoded and simulated (red SOLANA_TOKEN_ACCOUNT_TAKEOVER, SOLANA_ACCOUNT_ASSIGN; orange SOLANA_UNLIMITED_DELEGATE, SOLANA_DURABLE_NONCE, HIDDEN_APPROVAL, SIMULATION_FAILS)",
        +  "maxLength": 2400,
        +  "type": "string"
        +}
      • changedInput schema / properties / type / description
        Previous value: -"What the agent is about to sign; xrpl = an unsigned XRP Ledger transaction in tx"New value: +"What the agent is about to sign; message = a plain personal_sign / eth_sign message in message; solana = a Solana transaction in transaction; xrpl = an unsigned XRP Ledger transaction in tx"
      • changedInput schema / properties / type / enum
        Previous value: -[
        -  "approval",
        -  "transaction",
        -  "signature",
        -  "xrpl"
        -]New value: +[
        +  "approval",
        +  "transaction",
        +  "signature",
        +  "message",
        +  "solana",
        +  "xrpl"
        +]
    • Changedpresign_check_explain7 fields changed
      • changedInput schema / properties / chainId / description
        Previous value: -"EVM chain id, required for approval, transaction and signature: 1, 10, 56, 137, 8453, 42161 (8453 = Base)"New value: +"EVM chain id, required for approval, transaction and signature: 1, 10, 56, 137, 8453, 42161 (8453 = Base); optional for message"
      • changedInput schema / properties / from / description
        Previous value: -"transaction, optional: your wallet address; the transaction is then simulated (what really leaves and arrives; orange HIDDEN_APPROVAL, SIMULATION_NFT_OUT, SIMULATION_FAILS)"New value: +"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) and its recipients are compared with who this wallet paid before (red ADDRESS_POISONING for a look-alike)"
      • addedInput schema / properties / message
        Added value: +{
        +  "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"
        +}
      • addedInput schema / properties / method
        Added value: +{
        +  "description": "message: how it is signed (default personal_sign); eth_sign is always red",
        +  "enum": [
        +    "personal_sign",
        +    "eth_sign"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / transaction
        Added value: +{
        +  "description": "solana: the base64 wire transaction about to be signed; decoded and simulated (red SOLANA_TOKEN_ACCOUNT_TAKEOVER, SOLANA_ACCOUNT_ASSIGN; orange SOLANA_UNLIMITED_DELEGATE, SOLANA_DURABLE_NONCE, HIDDEN_APPROVAL, SIMULATION_FAILS)",
        +  "maxLength": 2400,
        +  "type": "string"
        +}
      • changedInput schema / properties / type / description
        Previous value: -"What the agent is about to sign; xrpl = an unsigned XRP Ledger transaction in tx"New value: +"What the agent is about to sign; message = a plain personal_sign / eth_sign message in message; solana = a Solana transaction in transaction; xrpl = an unsigned XRP Ledger transaction in tx"
      • changedInput schema / properties / type / enum
        Previous value: -[
        -  "approval",
        -  "transaction",
        -  "signature",
        -  "xrpl"
        -]New value: +[
        +  "approval",
        +  "transaction",
        +  "signature",
        +  "message",
        +  "solana",
        +  "xrpl"
        +]
    • Changedpresign_quick_check7 fields changed
      • changedInput schema / properties / chainId / description
        Previous value: -"EVM chain id, required for approval, transaction and signature: 1, 10, 56, 137, 8453, 42161 (8453 = Base)"New value: +"EVM chain id, required for approval, transaction and signature: 1, 10, 56, 137, 8453, 42161 (8453 = Base); optional for message"
      • changedInput schema / properties / from / description
        Previous value: -"transaction, optional: your wallet address; the transaction is then simulated (what really leaves and arrives; orange HIDDEN_APPROVAL, SIMULATION_NFT_OUT, SIMULATION_FAILS)"New value: +"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) and its recipients are compared with who this wallet paid before (red ADDRESS_POISONING for a look-alike)"
      • addedInput schema / properties / message
        Added value: +{
        +  "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"
        +}
      • addedInput schema / properties / method
        Added value: +{
        +  "description": "message: how it is signed (default personal_sign); eth_sign is always red",
        +  "enum": [
        +    "personal_sign",
        +    "eth_sign"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / transaction
        Added value: +{
        +  "description": "solana: the base64 wire transaction about to be signed; decoded and simulated (red SOLANA_TOKEN_ACCOUNT_TAKEOVER, SOLANA_ACCOUNT_ASSIGN; orange SOLANA_UNLIMITED_DELEGATE, SOLANA_DURABLE_NONCE, HIDDEN_APPROVAL, SIMULATION_FAILS)",
        +  "maxLength": 2400,
        +  "type": "string"
        +}
      • changedInput schema / properties / type / description
        Previous value: -"What the agent is about to sign; xrpl = an unsigned XRP Ledger transaction in tx"New value: +"What the agent is about to sign; message = a plain personal_sign / eth_sign message in message; solana = a Solana transaction in transaction; xrpl = an unsigned XRP Ledger transaction in tx"
      • changedInput schema / properties / type / enum
        Previous value: -[
        -  "approval",
        -  "transaction",
        -  "signature",
        -  "xrpl"
        -]New value: +[
        +  "approval",
        +  "transaction",
        +  "signature",
        +  "message",
        +  "solana",
        +  "xrpl"
        +]
  7. 3 tool updates
    • Changedpresign_check2 fields changed
      • addedInput schema / properties / from
        Added value: +{
        +  "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"
        +}
      • addedInput schema / properties / x402
        Added value: +{
        +  "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"
        +}
    • Changedpresign_check_explain2 fields changed
      • addedInput schema / properties / from
        Added value: +{
        +  "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"
        +}
      • addedInput schema / properties / x402
        Added value: +{
        +  "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"
        +}
    • Changedpresign_quick_check2 fields changed
      • addedInput schema / properties / from
        Added value: +{
        +  "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"
        +}
      • addedInput schema / properties / x402
        Added value: +{
        +  "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"
        +}
  8. 3 tool updates
    • Changedpresign_check1 field changed
      • addedInput schema / properties / intent
        Added value: +{
        +  "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"
        +}
    • Changedpresign_check_explain1 field changed
      • addedInput schema / properties / intent
        Added value: +{
        +  "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"
        +}
    • Changedpresign_quick_check1 field changed
      • addedInput schema / properties / intent
        Added value: +{
        +  "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"
        +}
  9. 7 tool updates
    • Changedfeedback1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$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"
        +}
    • Changedpresign_check1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$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"
        +}
    • Changedpresign_check_explain1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$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"
        +}
    • Changedpresign_quick_check1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$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"
        +}
    • Changedtoken_quick_verdict1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$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"
        +}
    • Changedtoken_verdict1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$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"
        +}
    • Changedwallet_approvals1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$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"
        +}
  10. 3 tool updates
    • Changedpresign_check6 fields changed
      • changedInput schema / properties / chainId / description
        Previous value: -"EVM chain id: 1, 10, 56, 137, 8453, 42161 (8453 = Base)"New value: +"EVM chain id, required for approval, transaction and signature: 1, 10, 56, 137, 8453, 42161 (8453 = Base)"
      • addedInput schema / properties / network
        Added value: +{
        +  "description": "xrpl: xrpl:0 (mainnet, default) or xrpl:1 (testnet)",
        +  "enum": [
        +    "xrpl:0",
        +    "xrpl:1"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / tx
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "xrpl: the unsigned transaction JSON (TransactionType, Account, Destination, Amount, …)",
        +  "type": "object"
        +}
      • changedInput schema / properties / type / description
        Previous value: -"What the agent is about to sign"New value: +"What the agent is about to sign; xrpl = an unsigned XRP Ledger transaction in tx"
      • changedInput schema / properties / type / enum
        Previous value: -[
        -  "approval",
        -  "transaction",
        -  "signature"
        -]New value: +[
        +  "approval",
        +  "transaction",
        +  "signature",
        +  "xrpl"
        +]
      • changedInput schema / required
        Previous value: -[
        -  "type",
        -  "chainId"
        -]New value: +[
        +  "type"
        +]
    • Changedpresign_check_explain6 fields changed
      • changedInput schema / properties / chainId / description
        Previous value: -"EVM chain id: 1, 10, 56, 137, 8453, 42161 (8453 = Base)"New value: +"EVM chain id, required for approval, transaction and signature: 1, 10, 56, 137, 8453, 42161 (8453 = Base)"
      • addedInput schema / properties / network
        Added value: +{
        +  "description": "xrpl: xrpl:0 (mainnet, default) or xrpl:1 (testnet)",
        +  "enum": [
        +    "xrpl:0",
        +    "xrpl:1"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / tx
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "xrpl: the unsigned transaction JSON (TransactionType, Account, Destination, Amount, …)",
        +  "type": "object"
        +}
      • changedInput schema / properties / type / description
        Previous value: -"What the agent is about to sign"New value: +"What the agent is about to sign; xrpl = an unsigned XRP Ledger transaction in tx"
      • changedInput schema / properties / type / enum
        Previous value: -[
        -  "approval",
        -  "transaction",
        -  "signature"
        -]New value: +[
        +  "approval",
        +  "transaction",
        +  "signature",
        +  "xrpl"
        +]
      • changedInput schema / required
        Previous value: -[
        -  "type",
        -  "chainId"
        -]New value: +[
        +  "type"
        +]
    • Changedpresign_quick_check6 fields changed
      • changedInput schema / properties / chainId / description
        Previous value: -"EVM chain id: 1, 10, 56, 137, 8453, 42161 (8453 = Base)"New value: +"EVM chain id, required for approval, transaction and signature: 1, 10, 56, 137, 8453, 42161 (8453 = Base)"
      • addedInput schema / properties / network
        Added value: +{
        +  "description": "xrpl: xrpl:0 (mainnet, default) or xrpl:1 (testnet)",
        +  "enum": [
        +    "xrpl:0",
        +    "xrpl:1"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / tx
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "xrpl: the unsigned transaction JSON (TransactionType, Account, Destination, Amount, …)",
        +  "type": "object"
        +}
      • changedInput schema / properties / type / description
        Previous value: -"What the agent is about to sign"New value: +"What the agent is about to sign; xrpl = an unsigned XRP Ledger transaction in tx"
      • changedInput schema / properties / type / enum
        Previous value: -[
        -  "approval",
        -  "transaction",
        -  "signature"
        -]New value: +[
        +  "approval",
        +  "transaction",
        +  "signature",
        +  "xrpl"
        +]
      • changedInput schema / required
        Previous value: -[
        -  "type",
        -  "chainId"
        -]New value: +[
        +  "type"
        +]
  11. 2 tool updates
    • Changedtoken_quick_verdict1 field changed
      • changedInput schema / properties / chain / enum
        Previous value: -[
        -  "solana",
        -  "base",
        -  "ethereum",
        -  "arbitrum",
        -  "optimism",
        -  "polygon",
        -  "bsc"
        -]New value: +[
        +  "solana",
        +  "base",
        +  "ethereum",
        +  "arbitrum",
        +  "optimism",
        +  "polygon",
        +  "bsc",
        +  "xrpl"
        +]
    • Changedtoken_verdict1 field changed
      • changedInput schema / properties / chain / enum
        Previous value: -[
        -  "solana",
        -  "base",
        -  "ethereum",
        -  "arbitrum",
        -  "optimism",
        -  "polygon",
        -  "bsc"
        -]New value: +[
        +  "solana",
        +  "base",
        +  "ethereum",
        +  "arbitrum",
        +  "optimism",
        +  "polygon",
        +  "bsc",
        +  "xrpl"
        +]
  12. 1 tool update
    • Addedfeedback
  13. 1 tool update
    • Addedwallet_approvals
  14. 3 tool updates
    • Changedpresign_check1 field changed
      • addedInput schema / properties / origin
        Added value: +{
        +  "description": "optional: the site asking for the signature or transaction (URL or hostname); a domain under 30 days old is orange",
        +  "type": "string"
        +}
    • Changedpresign_check_explain1 field changed
      • addedInput schema / properties / origin
        Added value: +{
        +  "description": "optional: the site asking for the signature or transaction (URL or hostname); a domain under 30 days old is orange",
        +  "type": "string"
        +}
    • Changedpresign_quick_check1 field changed
      • addedInput schema / properties / origin
        Added value: +{
        +  "description": "optional: the site asking for the signature or transaction (URL or hostname); a domain under 30 days old is orange",
        +  "type": "string"
        +}
  15. 2 tool updates
    • Addedtoken_quick_verdict
    • Addedtoken_verdict
  16. 3 tool updates
    • First observedpresign_check
    • First observedpresign_check_explain
    • First observedpresign_quick_check

Publisher details

Operator
Fizzl · Publisher source
Vendor relationship
First-party · Publisher source
Trust center
Not applicable
Restrictions
No account or API key. Paid tools are paid per call in USDC with x402 inside the MCP call; free tools are rate-limited. · Publisher source

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Non-custodial agent wallet with a transaction preflight that decodes an unsigned EVM tx and flags drain patterns (unlimited/large approval, approve-all, token & NFT transferFrom, proxy upgrade, on-chain permit, approvals hidden in multicall) before signing.
    9
    235 PyPI
    1
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables MCP clients to screen blockchain addresses and evaluate payment counterparties before funds move, returning clear/caution/risky verdicts, risk scores, and clickable evidence across EVM chains, Tron, and Solana. It also supports anti-blind-signing checks, x402 payment-requirement verification, identity/control baselines, and signed evidence bundles, with free tools and optional paid compliance tools.
    15
    280 npm
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    Crypto compliance tools for AI-agent payments: screen any address for sanctions, frozen-stablecoin and hacker/mixer exposure across 8+ chains, trace fund taint, and get an allow/review/decline decision before settlement. Free keyless address checks; deeper endpoints are x402-payable.
    280 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.