{"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-sepolia","asset":"USDC","price_per_call":"$0.05","how":"Call a paid endpoint without payment to receive HTTP 402 with exact payment requirements, sign, retry. Clients: x402-fetch (JS), x402 (Python)."},"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/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 /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 4 tools as function-calling declarations (OpenAI tools / Gemini functionDeclarations) mapped to REST — for frameworks without MCP"}},"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"},"mcp":{"tools":["get_quote","create_offramp_session","create_onramp_session","get_order_status"],"remote":{"transport":"streamable-http","url":"https://fiatdock.com/mcp","note":"stateless; paid tools 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"}}}