Skip to content

Assay: settlement verification

by fomox.io · remote · no sign-in to list tools · v1.0.0 · published by io.fomox

Verify crypto payments really settled and how much arrived. 20 chains. Read only, no API key.

Final · 2Changes · 2

6 tools: 2 do something that can't be undone, 2 change things and 2 only read.

Scanned Oct 21, 2026

No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http assay https://fomox.io/api/assay/mcp

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

6 tools

Can't be undone 2Claude Code: ask
  • evaluate_spend_policyCheck a proposed payment against spending limits that live OUTSIDE your context, where no instruction in a prompt, a message or a web page can change them.No findings

    Why it is in this group

    • The name "evaluate_spend_policy" says "evaluate": a word for a change.
    • The input addresses people (input.action.to): what it sends cannot be taken back.
    Description, as the server wrote it
    Check a proposed payment against spending limits that live OUTSIDE your context, where no instruction in a prompt, a message or a web page can change them. Returns a signed allow or deny with reasons. Use this before executing any transfer on behalf of a user. It enforces velocity caps, per-action ceilings, recipient allowlists and asset allowlists. Because the rules are held server side and signed, an attacker who takes over your reasoning still cannot raise your limits. IMPORTANT: this is ADVISORY. Assay holds no keys and cannot stop a transaction. Verify the signature and enforce the decision wherever you sign. Create a policy first with the /v1/policy endpoint.
  • verify_paymentCheck whether a crypto payment really settled and how much was ACTUALLY delivered, which is often not the amount the transaction claims.No findings

    Why it is in this group

    • The name "verify_payment" says "payment": a word that usually means money moves, which cannot be taken back.
    • The input addresses people (input.expect.to): what it sends cannot be taken back.
    Description, as the server wrote it
    Check whether a crypto payment really settled and how much was ACTUALLY delivered, which is often not the amount the transaction claims. Use this before crediting anyone for an incoming payment. Returns `delivered` (what truly moved), `claimed` (what the transaction says), `mismatch` (true when they disagree), and `warnings` naming the specific trap with a remedy. `ok` is true ONLY when the payment is final and meets everything you asserted in `expect`; anything uncertain returns ok:false, so it is safe to gate a credit on `ok`. Chains: xrp, hedera, algorand, solana, ethereum, base, arbitrum, optimism, polygon, bnb, avalanche, linea, scroll, zksync, blast, mantle, celo, gnosis, bitcoin, litecoin. Pass `expect` whenever you can. Without it this reports what happened; with it, it tells you whether to pay. Read only: this never moves funds and never holds keys.
Changes things 2Claude Code: ask
  • check_sandbox_answerScore your decision on a sandbox case.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Score your decision on a sandbox case. Tell it whether you would have credited the payment and for how much, and it replies with whether that was correct and, if not, exactly what the error would have cost you in real units. This is the fastest way to find out whether your payment handling is actually safe.
  • run_sandbox_casePractise on a payment designed to deceive you, with no money at risk.No findings

    Why it is in this group

    • The name "run_sandbox_case" says "run": a word for a change.
    Description, as the server wrote it
    Practise on a payment designed to deceive you, with no money at risk. Returns a verification result shaped exactly like a real one for one of 19 adversarial cases. Decide whether you would credit it, then call check_sandbox_answer to find out whether you were right and what the mistake would have cost. Use this to test any agent or integration that handles incoming crypto payments BEFORE it handles real money.
Only reads 2Claude Code: allow
  • list_chainsList every chain this service can verify, with the confirmation depth each needs before a payment is treated as final, and how deeply it can be verified.No findings

    Why it is in this group

    • The name "list_chains" says "list": a word for reading.
    Description, as the server wrote it
    List every chain this service can verify, with the confirmation depth each needs before a payment is treated as final, and how deeply it can be verified. Call this if you are unsure whether a chain is supported or what to pass as `chain`.
  • list_failure_modesList every known way a blockchain payment can appear successful while being worth less than it claims, or nothing at all.No findings

    Why it is in this group

    • The name "list_failure_modes" says "list": a word for reading.
    Description, as the server wrote it
    List every known way a blockchain payment can appear successful while being worth less than it claims, or nothing at all. Each entry explains what the chain does, what it costs you when you get it wrong, and the one-line fix. Useful when writing or reviewing code that credits users for incoming crypto payments. Every chain has its own dialect but they are all the same few lies, and the mitigation is always the same: never trust the stated amount, reconstruct what actually moved.

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

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

claude mcp add --transport http assay https://fomox.io/api/assay/mcp

Run in a terminal.

Claude Code permissions

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

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__assay__list_chains",
      "mcp__assay__list_failure_modes"
    ],
    "ask": [
      "mcp__assay__verify_payment",
      "mcp__assay__evaluate_spend_policy",
      "mcp__assay__run_sandbox_case",
      "mcp__assay__check_sandbox_answer"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as assay. Review it before you use it.