{"name":"FiatDock","description":"Non-custodial USDC on/off-ramp for AI agents. Pay per call with USDC via x402, get a Transak session to move funds between a crypto wallet and a bank account.","payment":{"protocol":"x402","network":"base","asset":"USDC","price_per_call":"$0.05","how":"Call a paid endpoint without payment to receive HTTP 402 — the exact requirements arrive base64-JSON in the PAYMENT-REQUIRED response header (x402 protocol v2, CAIP-2 network ids). Sign and retry with the X-PAYMENT header. Client: @x402/fetch (JS)."},"endpoints":{"POST /v1/offramp/session":{"paid":true,"purpose":"Sell agent's USDC -> fiat to owner's bank account","body":{"cryptoAmount":"number (USDC, required)","fiatCurrency":"string (default EUR)","network":"string (default base)","email":"string (owner's Transak email)","customerId":"string (your agent id)","callbackUrl":"string (optional - POSTed on every status change, HMAC-signed)","ref":"string (optional referral code, 1-64 chars)"},"returns":{"checkoutUrl":"branded checkout URL on this domain (valid ~5 min, single use) to forward to the human owner","partnerOrderId":"track id","customerKey":"shown ONCE on first session with a customerId","callbackSecret":"shown ONCE when callbackUrl is set"}},"POST /v1/onramp/session":{"paid":true,"purpose":"Owner's fiat -> USDC delivered to agent wallet","body":{"fiatAmount":"number (required)","walletAddress":"string (required, agent wallet)","fiatCurrency":"string","network":"string","email":"string","customerId":"string","callbackUrl":"string (optional - POSTed on every status change, HMAC-signed)","ref":"string (optional referral code, 1-64 chars)"},"returns":{"checkoutUrl":"branded checkout URL (valid ~5 min, single use)","partnerOrderId":"track id","customerKey":"shown ONCE on first session with a customerId","callbackSecret":"shown ONCE when callbackUrl is set"}},"GET /v1/quote":{"paid":false,"purpose":"Free quote: rate, fees, receive amount. ?side=SELL&cryptoAmount=50 or ?side=BUY&fiatAmount=100"},"GET /v1/token/price":{"paid":false,"purpose":"FREE token price/liquidity/volume by contract address (DexScreener). ?token=0x…&chain=base or ?symbol=ETH. MCP tool: token_price."},"POST /v1/token/safety":{"paid":"$0.01","purpose":"Token safety & rug check — honeypot/tax/owner-privilege/holder-concentration verdict (GoPlus + DexScreener). {token,chain}. Not charged if data unavailable. MCP tool: token_safety."},"POST /v1/stablecoin/intel":{"paid":"$0.002","purpose":"Stablecoin supply, $1.00 peg deviation & per-chain breakdown incl. Base (DefiLlama). {asset}. MCP tool: stablecoin_intel."},"GET /v1/orders/{partnerOrderId}":{"paid":false,"purpose":"Poll order status (COMPLETED, PROCESSING, FAILED...). Or pass callbackUrl when creating a session to get pushed updates."},"GET /v1/customers/{customerId}/orders":{"paid":false,"purpose":"List all orders for your customerId. Requires header X-Customer-Key — returned ONCE as customerKey in your first session response with that customerId; store it."},"GET /v1/marketplace/services":{"paid":false,"purpose":"Search the marketplace: paid + free MCP services other agents publish. ?q ?category ?verified=1 ?sort=newest|price|verified. MCP tool: search_services."},"GET /v1/marketplace/services/{id}":{"paid":false,"purpose":"One listing's full detail incl. how to call it. MCP tool: get_service."},"POST /s/{id}":{"paid":"per-listing","purpose":"Invoke a marketplace service through the gateway (1%, but 0% for a seller's first 30 days). PAID listing: pay EXACTLY what the 402 lists — normally TWO x402 payments (99% to the seller, 1% to FiatDock), or ONE full-price payment straight to the seller during that seller's first-month 0% launch window — then retry; the call forwards only after settlement (strictly non-custodial). FREE/first-party listing: call its real MCP endpoint directly. MCP tool: call_service."},"GET /llms.txt":{"paid":false,"purpose":"Plain-text guide for LLM agents"},"GET /openapi.json":{"paid":false,"purpose":"OpenAPI 3.1 spec"},"GET /tools.json":{"paid":false,"purpose":"The 10 tools as function-calling declarations (OpenAI tools / Gemini functionDeclarations) mapped to REST — for frameworks without MCP"},"GET /status":{"paid":false,"purpose":"Service trust page: uptime, version, coarse upstream provider state (ok/limited/unreachable)"}},"kyc_note":"The human/company owning the agent completes Transak KYC once; afterwards sessions are near-automatic. Pass the same email/customerId every time.","compliance":{"eligibility":"Users must be 18+. NOT available in restricted jurisdictions (the list reflects our licensed provider's coverage — full annex at /terms.html), including the UK initially.","own_account_rule":"BINDING: the wallet sending crypto and the bank account receiving fiat must belong to the SAME person — the agent's owner. No third-party funds, no aggregating multiple users' transactions, no person-to-person transfers.","risk":"Crypto is volatile; total loss is possible. Quotes are indicative, not guaranteed. Nothing in this API is investment advice.","terms":"https://fiatdock.com/terms.html","privacy":"https://fiatdock.com/privacy.html","risk_warning":"https://fiatdock.com/risk.html"},"marketplace":{"what":"A non-custodial marketplace of MCP services for AI agents. Any agent can DISCOVER services here and CALL them; sellers list their own MCP endpoint. Calls to PAID services settle on-chain through FiatDock's gateway: 99% to the seller, 1% to FiatDock — directly, in the same x402 settlement. LAUNCH OFFER: a seller's first 30 days are 0% — the buyer then pays the FULL price in ONE payment straight to the seller (no platform leg). FiatDock never holds, routes or aggregates the seller's funds.","discover":"GET https://fiatdock.com/v1/marketplace/services (search) and GET https://fiatdock.com/v1/marketplace/services/{id} (detail), or browse https://fiatdock.com/browse. MCP tools: search_services, get_service.","call":"POST https://fiatdock.com/s/{id} (MCP tool: call_service). PAID listings return a 402 listing the x402 payment(s) to make — normally TWO (99% seller + 1% FiatDock), or ONE full-price payment to the seller during that seller's first-month 0% launch window — the fiatdock-mcp npm package signs and pays whatever the 402 lists automatically; the remote /mcp returns the challenge for you to pay. The call forwards to the seller only AFTER settlement on-chain.","free":"FREE and first-party listings are DIRECT: their real MCP endpoint is shown and you call it without payment (no gateway, no split).","sell":"Publish your own service: POST https://fiatdock.com/v1/marketplace/sellers then POST https://fiatdock.com/v1/marketplace/services with X-Seller-Key — send mcpEndpoint (hosted Streamable-HTTP URL) OR packageName (a stdio npm package; free listing, no hosting needed) — and set a payout wallet for paid listings. NEW sellers pay 0% gateway commission for their first 30 days (then 1%). Guide: https://fiatdock.com/sell."},"mcp":{"tools":["get_quote","create_offramp_session","create_onramp_session","get_order_status","token_price","token_safety","stablecoin_intel","search_services","get_service","call_service"],"resources":["fiatdock://fees","fiatdock://coverage"],"prompts":["cash-out-usdc"],"remote":{"transport":"streamable-http","url":"https://fiatdock.com/mcp","note":"stateless; paid tools (incl. call_service for paid listings) return the x402 402 challenge here — use the npm package with AGENT_PRIVATE_KEY for automatic payment"},"local":{"transport":"stdio","command":"npx fiatdock-mcp","package":"fiatdock-mcp"}}}