One call. Your agent signs with its own wallet. CoW Protocol solvers fill in ~15 seconds against all Base liquidity. Non-custodial, MEV-protected, 25 bps.
import { MCPClient } from "@anthropic-ai/mcp"; const mcp = new MCPClient("https://floor-mcp.up.railway.app/sse"); // 1. prepare const order = await mcp.call("prepare_trade", { sell_token: "USDC", buy_token: "WETH", sell_amount: "1000", trader_address: wallet.address, }); // 2. sign locally β FLOOR never sees your key const sig = await wallet.signTypedData(order.typedData); // 3. submit to CoW solvers await mcp.call("submit_signed_trade", { order, signature: sig });
# 1. prepare β POST /a2a, JSON-RPC tasks/send { "jsonrpc": "2.0", "id": 1, "method": "tasks/send", "params": { "skill_id": "prepare_trade", "input": { "sell_token": "USDC", "buy_token": "WETH", "sell_amount": "1000", "trader_address": "0x..." } } } // returns typedData β sign locally with your wallet # 2. submit β same endpoint, skill_id "submit_signed_trade"
# 1. prepare $ curl -X POST .../v1/prepare_trade \ -H "Content-Type: application/json" \ -d '{"sell_token":"USDC","buy_token":"WETH", "sell_amount":"1000","trader_address":"0x..."}' # 2. sign typedData with your wallet (locally) # 3. submit signed order via JSON-RPC $ curl -X POST .../a2a -d '{"method":"tasks/send", "params":{"skill_id":"submit_signed_trade",...}}'
# Call paid endpoint without payment $ curl -i -X POST .../v1/quote HTTP/1.1 402 Payment Required {"x402Version":1,"accepts":[{ "asset":"USDC", "network":"base", "maxAmountRequired":"10000", "payTo":"0xE6f2...bfd3" }]} # Pay $0.01 USDC, retry with signed X-PAYMENT header $ curl -X POST .../v1/quote -H "X-PAYMENT: <signed>" HTTP/1.1 200 OK { "quote": { ... } }