{"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)"},"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)"},"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"}},"kyc_note":"The human/company owning the agent completes Transak KYC once; afterwards sessions are near-automatic. Pass the same email/customerId every time.","mcp":{"transport":"stdio","command":"node mcp/server.js","tools":["get_quote","create_offramp_session","create_onramp_session","get_order_status"]}}