{"name":"com.fiatdock/fiatdock-mcp","slug":"fiatdock-mcp","title":"FiatDock","description":"Cash out an AI agent's USDC to a real bank account (non-custodial). Plus Base data + a marketplace","url":"https://mcp.market/server/fiatdock-mcp","rating":null,"grade":"A","score":86,"certified":false,"status":"active","category":"finance","tags":["finance","ai"],"presence":{"score":39,"stars":1,"forks":0,"downloads_week":342,"last_push_at":"2026-09-16T13:11:54.000Z","license":"MIT"},"uptime":{"percent":100,"checks":1,"ok":1,"last_checked_at":"2026-09-19T15:36:22.619Z","last_ok_at":"2026-09-19T15:36:22.619Z","latency_ms":1592},"claimed":false,"transport":"mixed","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/fiatdock/fiatdock","website":"https://fiatdock.com","version":"1.9.0","remotes":[{"type":"streamable-http","url":"https://fiatdock.com/mcp"}],"packages":[{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"fiatdock-mcp","version":"1.9.0","runtimeHint":"npx","transport":{"type":"stdio"},"environmentVariables":[{"description":"FiatDock API base URL","default":"https://fiatdock.com","name":"FIATDOCK_URL"},{"description":"Install only the tool groups you need, so unused tools don't take up your agent's context: 'ramp' (4 tools: quotes, USDC<->bank sessions, order status), 'data' (11 tools: token price/safety/report, gas, balances, tx status, address intelligence), 'marketplace' (3 tools: search, inspect and pay for other agents' MCP services). Comma-separate to combine, e.g. 'ramp,marketplace'. Default: all 18. An unrecognised value serves all tools rather than none.","default":"all","name":"FIATDOCK_TOOLS"},{"description":"Agent wallet key that auto-pays the x402 fee for paid tools ($0.001-$0.05 depending on the tool, plus whatever a marketplace seller charges). Optional: the five free tools (get_quote, get_order_status, token_price, search_services, get_service) work without it. Use a dedicated low-balance wallet.","isSecret":true,"name":"AGENT_PRIVATE_KEY"},{"description":"Price-bait guard for call_service: refuse to pay if a paid gateway call's total x402 charge exceeds this many USD. Optional (default: no ceiling); overridable per call via the maxPriceUsd argument.","name":"FIATDOCK_MAX_PRICE_USD"}]}],"tools":[{"name":"address_intel","description":"PAID ($0.005 USDC via x402). Enrich ANY Base address in one call before you trust it: EOA vs contract (and whether it's an ERC-20, with its name/symbol/decimals), account nonce, ETH + USDC balance, and a KEYLESS GoPlus security verdict (phishing / sanctioned / mixer / money-laundering / blacklist and more) — the loop input for triaging a counterparty, payout target or approval spender. Without payment this returns the 402 challenge; the fiatdock-mcp npm package pays automatically. A bad address returns 400; if Base RPC or GoPlus is unavailable it returns 502 — neither is charged.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"address":{"type":"string","description":"A 40-hex EVM address (0x…) on Base to enrich"},"payment":{"type":"string","description":"Base64 of a single x402 v2 PaymentPayload (EIP-3009 transferWithAuthorization on Base USDC). OMIT it on the first call: the 402 you get back carries `howToPay.payloadTemplate` — the exact envelope to fill in — plus the price and the EIP-712 domain. Send it on the second call to complete the purchase; it is forwarded as the PAYMENT-SIGNATURE header, never as body data. Nothing is charged for the 402 itself, and a call that fails after payment settles nothing."}},"required":["address"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"block_number","description":"PAID ($0.001 USDC via x402). The latest Base block number plus its timestamp — a freshness/liveness probe for agents that need to know the chain head. Without payment this returns the 402 challenge; the fiatdock-mcp npm package pays automatically. On any RPC failure the call returns 4xx/5xx and is NOT charged.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"payment":{"type":"string","description":"Base64 of a single x402 v2 PaymentPayload (EIP-3009 transferWithAuthorization on Base USDC). OMIT it on the first call: the 402 you get back carries `howToPay.payloadTemplate` — the exact envelope to fill in — plus the price and the EIP-712 domain. Send it on the second call to complete the purchase; it is forwarded as the PAYMENT-SIGNATURE header, never as body data. Nothing is charged for the 402 itself, and a call that fails after payment settles nothing."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"call_service","description":"Invoke a listed FiatDock service. PAID listings go THROUGH the gateway (POST /s/:id) so the non-custodial split is enforced — normally TWO payments (99% seller + 1% FiatDock), or ONE full-price payment to the seller during that seller's first-month 0% launch window. TO BUY: call once WITHOUT `payment` to get the 402 challenge and step-by-step instructions, sign it with your own wallet, then call again with the same id/args plus `payment` set to the base64 x402 payload — the gateway settles on-chain directly to the seller and returns their response. No wallet? `npx fiatdock-mcp` with AGENT_PRIVATE_KEY signs automatically. FREE / first-party listings are forwarded to their real MCP endpoint directly (no payment). Pass the service's expected request body as `args`.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","description":"Listing id (svc_…) to invoke, from search_services"},"args":{"type":"object","additionalProperties":{},"description":"JSON payload to send to the service (e.g. an MCP JSON-RPC request body) — shape is defined by that service"},"payment":{"type":"string","description":"Base64 x402 v2 PaymentPayload signed by YOUR wallet, satisfying every entry in the 402's `accepts`. Omit on the first call to receive the challenge; send it on the second call to complete the purchase. Sent to the gateway as the X-PAYMENT header — FiatDock never holds the funds."}},"required":["id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"create_offramp_session","description":"Convert the agent's USDC to fiat in the owner's OWN bank account. Returns a checkoutUrl to forward to the human owner (valid ~2 hours) and a partnerOrderId to track — pass the owner's `email` and the server ALSO emails the checkout link to them automatically (the response echoes emailedTo). Paid endpoint ($0.01 USDC via x402) — without payment this returns the 402 challenge; use the fiatdock-mcp npm package with AGENT_PRIVATE_KEY for automatic payment. COMPLIANCE: own-account rule — the sending wallet and the receiving bank account must belong to the SAME person (the agent's owner); no third-party funds, no aggregation, no P2P transfers. 18+; served worldwide via our licensed provider across ~160 countries — EUR bank transfer in the SEPA zone (incl. Portugal), card/Apple Pay/Google Pay elsewhere — excluding US persons, sanctioned countries and the UK (NOT the UK). Crypto is volatile; not investment advice.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"cryptoAmount":{"type":"number","description":"USDC amount to sell"},"fiatCurrency":{"type":"string","description":"e.g. EUR, default EUR"},"network":{"type":"string","description":"USDC network, default base"},"walletAddress":{"type":"string","description":"Optional SELL source wallet (0x…, EIP-55 checked) — pre-fills the widget; required with walletCode/walletHash"},"email":{"type":"string","description":"Owner's account email. If provided, the checkout link is ALSO emailed to this address automatically (you still receive it in checkoutUrl); the response echoes emailedTo to confirm"},"customerId":{"type":"string","description":"Stable agent/customer id"},"callbackUrl":{"type":"string","description":"Optional public https URL stored for a future provider with status webhooks — the current provider sends none, so no push will arrive and no callback secret is issued. Poll get_order_status instead"},"walletCode":{"type":"string","description":"Optional Mt Pelerin address lock, part 1: 4-digit code (1000-9999). Requires walletHash + walletAddress"},"walletHash":{"type":"string","description":"Optional Mt Pelerin address lock, part 2: base64 signature of 'MtPelerin-<code>' by the agent's OWN wallet key (never shared with us). Requires walletCode"},"ref":{"type":"string","description":"Optional referral code (1-64 chars: letters, digits, _ or -)"},"provider":{"type":"string","enum":["mtpelerin"],"description":"Licensed fiat provider. `mtpelerin` is the only provider on this server and the default — omit this field. It settles by SEPA bank transfer across the SEPA zone (incl. Portugal); its order status is not push-updated. Any other value returns 400 (no other provider is configured on this server)."},"payment":{"type":"string","description":"Base64 of a single x402 v2 PaymentPayload (EIP-3009 transferWithAuthorization on Base USDC). OMIT it on the first call: the 402 you get back carries `howToPay.payloadTemplate` — the exact envelope to fill in — plus the price and the EIP-712 domain. Send it on the second call to complete the purchase; it is forwarded as the PAYMENT-SIGNATURE header, never as body data. Nothing is charged for the 402 itself, and a call that fails after payment settles nothing."}},"required":["cryptoAmount"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"create_onramp_session","description":"Buy USDC with the owner's OWN fiat and deliver it to the agent's wallet (address locked). Returns checkoutUrl + partnerOrderId. Paid endpoint ($0.01 USDC via x402) — without payment this returns the 402 challenge; use the fiatdock-mcp npm package with AGENT_PRIVATE_KEY for automatic payment. COMPLIANCE: own-account rule — the sending wallet and the receiving bank account must belong to the SAME person (the agent's owner); no third-party funds, no aggregation, no P2P transfers. 18+; served worldwide via our licensed provider across ~160 countries — EUR bank transfer in the SEPA zone (incl. Portugal), card/Apple Pay/Google Pay elsewhere — excluding US persons, sanctioned countries and the UK (NOT the UK). Crypto is volatile; not investment advice.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"fiatAmount":{"type":"number","description":"Fiat amount to spend"},"walletAddress":{"type":"string","description":"Agent wallet that receives USDC (0x…, EIP-55 checked)"},"fiatCurrency":{"type":"string","description":"e.g. EUR, default EUR"},"network":{"type":"string","description":"USDC network, default base"},"email":{"type":"string","description":"Owner's account email. If provided, the checkout link is ALSO emailed to this address automatically (you still receive it in checkoutUrl); the response echoes emailedTo to confirm"},"customerId":{"type":"string","description":"Stable agent/customer id"},"callbackUrl":{"type":"string","description":"Optional public https URL stored for a future provider with status webhooks — the current provider sends none, so no push will arrive and no callback secret is issued. Poll get_order_status instead"},"walletCode":{"type":"string","description":"Optional Mt Pelerin address lock, part 1: 4-digit code (1000-9999). Requires walletHash"},"walletHash":{"type":"string","description":"Optional Mt Pelerin address lock, part 2: base64 signature of 'MtPelerin-<code>' by the agent's OWN wallet key (never shared with us). Locks the widget to walletAddress. Requires walletCode"},"ref":{"type":"string","description":"Optional referral code (1-64 chars: letters, digits, _ or -)"},"provider":{"type":"string","enum":["mtpelerin"],"description":"Licensed fiat provider. `mtpelerin` is the only provider on this server and the default — omit this field. It settles by SEPA bank transfer across the SEPA zone (incl. Portugal); its order status is not push-updated. Any other value returns 400 (no other provider is configured on this server)."},"payment":{"type":"string","description":"Base64 of a single x402 v2 PaymentPayload (EIP-3009 transferWithAuthorization on Base USDC). OMIT it on the first call: the 402 you get back carries `howToPay.payloadTemplate` — the exact envelope to fill in — plus the price and the EIP-712 domain. Send it on the second call to complete the purchase; it is forwarded as the PAYMENT-SIGNATURE header, never as body data. Nothing is charged for the 402 itself, and a call that fails after payment settles nothing."}},"required":["fiatAmount","walletAddress"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"eth_balance","description":"PAID ($0.001 USDC via x402). The native ETH balance of any address on Base, in wei and ETH. Without payment this returns the 402 challenge; the fiatdock-mcp npm package pays automatically. An invalid address returns 400 and is NOT charged; on any RPC failure it returns 5xx and is NOT charged.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"address":{"type":"string","description":"A 40-hex EVM address (0x…) to read the ETH balance of"},"payment":{"type":"string","description":"Base64 of a single x402 v2 PaymentPayload (EIP-3009 transferWithAuthorization on Base USDC). OMIT it on the first call: the 402 you get back carries `howToPay.payloadTemplate` — the exact envelope to fill in — plus the price and the EIP-712 domain. Send it on the second call to complete the purchase; it is forwarded as the PAYMENT-SIGNATURE header, never as body data. Nothing is charged for the 402 itself, and a call that fails after payment settles nothing."}},"required":["address"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"gas_price","description":"PAID ($0.001 USDC via x402). The current Base gas price in wei and gwei. A gas-aware agent samples it before submitting a tx. Without payment this returns the 402 challenge; the fiatdock-mcp npm package pays automatically. On any RPC failure the call returns 4xx/5xx and is NOT charged.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"payment":{"type":"string","description":"Base64 of a single x402 v2 PaymentPayload (EIP-3009 transferWithAuthorization on Base USDC). OMIT it on the first call: the 402 you get back carries `howToPay.payloadTemplate` — the exact envelope to fill in — plus the price and the EIP-712 domain. Send it on the second call to complete the purchase; it is forwarded as the PAYMENT-SIGNATURE header, never as body data. Nothing is charged for the 402 itself, and a call that fails after payment settles nothing."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_order_status","description":"Check the status of an on/off-ramp order by partnerOrderId.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"partnerOrderId":{"type":"string","description":"Order id returned when the session was created"}},"required":["partnerOrderId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_quote","description":"Free quote before paying: the exchange rate and exactly how much lands in the bank (or wallet) NET of every provider fee — that net figure is the number to decide on. Executable estimate, not a locked rate. side=SELL (USDC->fiat) or BUY (fiat->USDC).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"side":{"type":"string","enum":["SELL","BUY"],"default":"SELL","description":"SELL = USDC to fiat, BUY = fiat to USDC"},"cryptoAmount":{"type":"number","description":"USDC amount (required for SELL)"},"fiatAmount":{"type":"number","description":"Fiat amount (for BUY)"},"fiatCurrency":{"type":"string","description":"e.g. EUR, default EUR"},"network":{"type":"string","description":"USDC network, default base"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_service","description":"Full detail for one FiatDock marketplace listing, including how to call it: PAID listings route through the gateway via call_service (the 99/1 split is enforced); FREE/first-party listings expose their real MCP endpoint to call directly. Read-only, free.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","description":"Listing id (svc_…) from search_services"},"includeSchemas":{"type":"boolean","description":"Include `toolSchemas` — the callable SHAPE of each tool on the seller's server ({ tool: { props: {name: type}, required: [...] } }), which is what you need to fill in `arguments` before paying. Names and types only; no seller free text. Set this before your first paid call."}},"required":["id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"search_services","description":"Find paid + free MCP services other agents have published on the FiatDock marketplace. Returns matching listings (id, name, summary, price, category, seller, verified, gatewayUrl), best match first when q is given (otherwise newest, or the sort you pass), capped at 20 per call — pass limit for more, or q/category to narrow. Use get_service for full detail and call_service to invoke one. Read-only, free.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"q":{"type":"string","description":"Free-text relevance search over the listing name, summary, description, tags, category AND the tool names the seller's own MCP server reports (ADR-0067). Multi-word queries are SCORED, not matched literally: results come back best-first, and a listing must carry at least half your words to appear at all"},"category":{"type":"string","description":"Filter by category slug: data, search, finance, dev, productivity, ai, web, other"},"verifiedOnly":{"type":"boolean","description":"Only verified listings (KYC'd seller or first-party)"},"sort":{"type":"string","enum":["newest","price","verified"],"description":"Sort order (default newest; first-party listings are always featured first)"},"limit":{"type":"integer","minimum":1,"maximum":50,"description":"How many listings to return, 1-50 (default 20). The cap exists because this result is injected into your context: the whole catalog is ~2.6 KB per listing and doubles on the wire, so an uncapped answer costs six figures of tokens and leaves you unable to make the call that buys anything. Narrow with q/category before raising this"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"stablecoin_intel","description":"PAID ($0.002 USDC via x402). Supply, peg health and per-chain breakdown for USDC and other stablecoins: total circulating supply, deviation from the $1.00 peg, peg mechanism, the amount circulating on Base (with its share of total) and the top chains by supply (DefiLlama). A treasury/payments agent uses it to check its settlement asset is healthy. Without payment this returns the 402 challenge; the fiatdock-mcp npm package pays automatically.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"asset":{"type":"string","description":"Stablecoin symbol (default USDC), e.g. USDC, USDT, DAI, USDe"},"payment":{"type":"string","description":"Base64 of a single x402 v2 PaymentPayload (EIP-3009 transferWithAuthorization on Base USDC). OMIT it on the first call: the 402 you get back carries `howToPay.payloadTemplate` — the exact envelope to fill in — plus the price and the EIP-712 domain. Send it on the second call to complete the purchase; it is forwarded as the PAYMENT-SIGNATURE header, never as body data. Nothing is charged for the 402 itself, and a call that fails after payment settles nothing."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"token_metadata","description":"PAID ($0.002 USDC via x402). Name, symbol, decimals and total supply for any ERC-20 contract on Base — the identity fields an agent needs before pricing or safety-checking a token. Without payment this returns the 402 challenge; the fiatdock-mcp npm package pays automatically. A non-ERC-20 / bad address returns 4xx and is NOT charged; on any RPC failure it returns 5xx and is NOT charged.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"token":{"type":"string","description":"An ERC-20 contract address (0x…, 40 hex) on Base"},"payment":{"type":"string","description":"Base64 of a single x402 v2 PaymentPayload (EIP-3009 transferWithAuthorization on Base USDC). OMIT it on the first call: the 402 you get back carries `howToPay.payloadTemplate` — the exact envelope to fill in — plus the price and the EIP-712 domain. Send it on the second call to complete the purchase; it is forwarded as the PAYMENT-SIGNATURE header, never as body data. Nothing is charged for the 402 itself, and a call that fails after payment settles nothing."}},"required":["token"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"token_price","description":"FREE real-time price snapshot for any EVM token by contract address: USD price, 5m/1h/6h/24h change, liquidity, 24h volume, market cap/FDV and the most-liquid DEX pair (DexScreener). Or pass a major symbol (ETH/BTC) for a Coinbase spot price. Read-only, free.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"token":{"type":"string","description":"ERC-20 contract address (0x…) — preferred"},"chain":{"type":"string","description":"Chain slug: base (default), ethereum, polygon, arbitrum, optimism, bsc, avalanche"},"symbol":{"type":"string","description":"Major asset symbol (e.g. ETH, BTC) — used when no contract address is given"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"token_report","description":"PAID ($0.05 USDC via x402). The full picture on an ERC-20 in ONE call: live price, liquidity, 24h volume, market cap/FDV and the most-liquid DEX pair (DexScreener) TOGETHER with the complete safety verdict — honeypot / buy&sell tax / owner privileges / holder concentration / LP-locked / CEX listing (GoPlus). One payment instead of chaining token_price + token_safety. Without payment this returns the 402 challenge; the fiatdock-mcp npm package pays automatically. A bad address returns 400; no liquidity/security data returns 404; an upstream outage or partial scan returns 502 — none is charged. Not financial advice.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"token":{"type":"string","description":"ERC-20 contract address (0x…) to report on"},"chain":{"type":"string","description":"Chain slug: base (default), ethereum, polygon, arbitrum, optimism, bsc, avalanche"},"payment":{"type":"string","description":"Base64 of a single x402 v2 PaymentPayload (EIP-3009 transferWithAuthorization on Base USDC). OMIT it on the first call: the 402 you get back carries `howToPay.payloadTemplate` — the exact envelope to fill in — plus the price and the EIP-712 domain. Send it on the second call to complete the purchase; it is forwarded as the PAYMENT-SIGNATURE header, never as body data. Nothing is charged for the 402 itself, and a call that fails after payment settles nothing."}},"required":["token"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"token_safety","description":"PAID ($0.01 USDC via x402). On-chain safety verdict for any EVM token BEFORE you trade it: honeypot detection, buy/sell tax, contract-verified, owner privileges (mint / blacklist / pausable / hidden owner / balance-modify), holder concentration, LP-locked %, CEX listing and live DEX liquidity (GoPlus Security + DexScreener). Returns verdict safe|caution|danger with the exact risks. Without payment this returns the 402 challenge; the fiatdock-mcp npm package (AGENT_PRIVATE_KEY) pays automatically. Not financial advice.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"token":{"type":"string","description":"ERC-20 contract address (0x…) to screen"},"chain":{"type":"string","description":"Chain slug: base (default), ethereum, polygon, arbitrum, optimism, bsc, avalanche"},"payment":{"type":"string","description":"Base64 of a single x402 v2 PaymentPayload (EIP-3009 transferWithAuthorization on Base USDC). OMIT it on the first call: the 402 you get back carries `howToPay.payloadTemplate` — the exact envelope to fill in — plus the price and the EIP-712 domain. Send it on the second call to complete the purchase; it is forwarded as the PAYMENT-SIGNATURE header, never as body data. Nothing is charged for the 402 itself, and a call that fails after payment settles nothing."}},"required":["token"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"tx_status","description":"PAID ($0.001 USDC via x402). Confirmation status of a Base transaction — success/failed, block, confirmations, gas used, from/to. An unconfirmed/unknown tx returns 404 (and is NOT charged), so an agent can poll safely. Without payment this returns the 402 challenge; the fiatdock-mcp npm package pays automatically. On any RPC failure it returns 5xx and is NOT charged.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"txHash":{"type":"string","description":"A 64-hex transaction hash (0x…) on Base"},"payment":{"type":"string","description":"Base64 of a single x402 v2 PaymentPayload (EIP-3009 transferWithAuthorization on Base USDC). OMIT it on the first call: the 402 you get back carries `howToPay.payloadTemplate` — the exact envelope to fill in — plus the price and the EIP-712 domain. Send it on the second call to complete the purchase; it is forwarded as the PAYMENT-SIGNATURE header, never as body data. Nothing is charged for the 402 itself, and a call that fails after payment settles nothing."}},"required":["txHash"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"usdc_balance","description":"PAID ($0.001 USDC via x402). The USDC balance of any address on Base (the settlement asset for x402), in atomic units and USDC. Without payment this returns the 402 challenge; the fiatdock-mcp npm package pays automatically. An invalid address returns 400 and is NOT charged; on any RPC failure it returns 5xx and is NOT charged.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"address":{"type":"string","description":"A 40-hex EVM address (0x…) to read the USDC balance of"},"payment":{"type":"string","description":"Base64 of a single x402 v2 PaymentPayload (EIP-3009 transferWithAuthorization on Base USDC). OMIT it on the first call: the 402 you get back carries `howToPay.payloadTemplate` — the exact envelope to fill in — plus the price and the EIP-712 domain. Send it on the second call to complete the purchase; it is forwarded as the PAYMENT-SIGNATURE header, never as body data. Nothing is charged for the 402 itself, and a call that fails after payment settles nothing."}},"required":["address"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}],"scan":{"score":86,"grade":"A","scanned_at":"2026-09-19T10:14:29.120Z","report":{"scannerVersion":"0.1.3","scannedAt":"2026-09-19T10:14:29.079Z","components":{"code":{"score":25,"max":25,"notes":["2 source files scanned"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 1672ms"]},"poisoning":{"score":15,"max":15,"notes":["18 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 3 write-action tools with no auth"]},"maintenance":{"score":15,"max":15,"notes":["last push 3 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","website matches verified namespace"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"}],"inputs":{"probes":[{"url":"https://fiatdock.com/mcp","reachable":true,"authRequired":false,"latencyMs":1672,"serverInfo":{"name":"fiatdock","version":"1.9.1"}}],"packages":[{"registryType":"npm","identifier":"fiatdock-mcp","version":"1.9.0","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":5,"publishedAt":"2026-09-16T10:49:31.560Z","repositoryUrl":"git+https://github.com/fiatdock/fiatdock.git","weeklyDownloads":342}],"repo":{"found":true,"owner":"fiatdock","repo":"fiatdock","archived":false,"pushedAt":"2026-09-16T13:11:54Z","stars":1,"forks":0,"openIssues":5,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/292611153?v=4","ownerCreatedAt":"2026-06-10T23:48:55Z","license":"MIT"},"icon":{"url":null,"source":"none"},"presence":{"stars":1,"forks":0,"downloadsWeek":342,"license":"MIT","lastPushAt":"2026-09-16T13:11:54.000Z","score":39}}}},"grade_history":[],"reviews":[]}