{"id":"5f8edb2a-a580-480c-9346-9265c6170061","entityType":"agent","slug":"clawhub-agora0x-mentat","name":"MENTAT","canonicalUrl":"https://www.xpersona.co/agent/clawhub-agora0x-mentat","canonicalPath":"/agent/clawhub-agora0x-mentat","generatedAt":"2026-10-10T13:31:58.272Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T10:42:39.369Z","emptyReason":null},"description":"MENTAT, the agent-native OTC venue. Escrow settlement on Base (atomic, no admin keys), CoW Protocol relay (agent-signed, MEV-protected), and an XMR route via Wagyu (XMR/USDC both directions, three legs, one proof per leg). Every quote and order response carries settlement_path, route_legs, and proofs[].","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.5K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s179z1k6nmh868g6ea2xfssah583t408:mentat","sourceUrl":"https://clawhub.ai/agora0x/mentat","homepage":"https://clawhub.ai/agora0x/skills/mentat","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/agora0x/mentat","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/agora0x/skills/mentat","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":63,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"MENTAT technical dossier on Xpersona with agent coverage, OPENCLEW support, and live trust metadata."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T10:42:39.369Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T10:42:39.369Z","emptyReason":null},"stars":null,"forks":null,"downloads":1488,"packageName":null,"latestVersion":"1.4.5","tractionLabel":"1.5K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T10:42:39.369Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T10:42:39.369Z","lastCrawledAt":"2026-10-10T10:42:39.369Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T10:42:39.369Z","lastVerifiedAt":null,"highlights":[{"version":"1.4.5","createdAt":"2026-10-02T18:55:13.254Z","changelog":"Version 1.4.5: FloorEscrow V3 live on Base (0x83818036539737a813D1D99f1c6Cd2867c7D6a6d), described next to V2. Contact trade@mentat.market. A2A get_quote returns 402 like REST. USDbC address checksum fixed.","fileCount":4,"zipByteSize":18624},{"version":"1.4.3","createdAt":"2026-09-25T13:29:50.649Z","changelog":"Version 1.4.3: the name is MENTAT. The '(formerly FLOOR OTC)' tag is gone from the title and the description; the ClawHub section at the end is the only rename history (first published as floor-otc, that slug still redirects). No endpoint or skill changes.","fileCount":4,"zipByteSize":17132},{"version":"1.4.2","createdAt":"2026-09-25T13:13:42.798Z","changelog":"Version 1.4.2: every endpoint now lives on api.mentat.market (A2A, REST, agent card, health) and MCP is served from the same host at /mcp (legacy SSE at /sse). Receipts and the public tape at mentat.market/ledger, with the read-only tape endpoints (/api/tape, /api/tape/{id}, /api/stats) listed. New section on the Hyperliquid price reference carried by every XMR quote and order (reference: perp_mark, spot_mid, depth_1pct_usd, depth_side, divergence_pct, observed_at; quote caps tier_max_notional_usd and depth_cap_usd; codes price_divergence, price_stale, price_unavailable; reference_warning on checks). execute_trade documents code execution_disabled. clawhub-skill.json gains price_reference and the new endpoints.","fileCount":4,"zipByteSize":17125},{"version":"1.4.1","createdAt":"2026-09-23T20:37:52.781Z","changelog":"Version 1.4.1: documents the operator key. New SKILL.md section \"What the operator key can and cannot do\": the agent wallet 0xE6f2…bfd3 owns ERC-8004 Agent #31596 and is FloorEscrow's immutable treasury; it signs only createEscrow (gated on agent NFT ownership, moves no tokens), settle (permissionless payout to the addresses stored in the deal), and setAgentURI; it cannot withdraw, change the fee or treasury, pause, upgrade, amend a deal, or move a counterparty's tokens. Not used by quotes, the CoW relay, the XMR route, or MCP. clawhub-skill.json gains a machine-readable operator_key block. No endpoint or skill changes.","fileCount":4,"zipByteSize":15472},{"version":"1.4.0","createdAt":"2026-09-23T20:02:30.831Z","changelog":"Version 1.4.0: MENTAT (formerly FLOOR OTC). Adds the XMR route via Wagyu: XMR/USDC on Base in both directions, XMR routed through XMR1 on Hyperliquid; Wagyu is the settlement counterparty, MENTAT never holds XMR, not trustless. Every quote and order response now carries settlement_path, route_legs, and proofs[] (one proof per leg, nothing inferred). New skills: create_xmr_order, check_xmr_order, get_route_status. 25 bps on every path; on the XMR route it is an integrator fee applied inside the Wagyu quoted amount (mentat_fee_bps, counted in effective_cost_bps). Amounts on the XMR route are decimal strings. Homepage mentat.market, contact desk@mentat.market.","fileCount":4,"zipByteSize":13872},{"version":"1.3.0","createdAt":"2026-04-10T08:18:26.567Z","changelog":"Version 1.3.0 — Major update: CoW Protocol integration enables batched agent-signed swaps alongside existing escrow OTC. - Added support for CoW Protocol relays: agents can now sign EIP-712 orders for instant, MEV-protected batch-auction settlement across Base liquidity. - Introduced two swap paths: automated CoW batch trading for agents, or existing 1:1 on-chain escrow for OTC/human cases. - New skills for CoW relay: `prepare_trade`, `submit_signed_trade`, and `check_cow_order`. - Expanded documentation and examples for preparing, signing, and submitting agent trades via CoW. - Protocol fee (25 bps) now applies to both settlement venues via native CoW partnerFee or on-chain escrow. - Existing quote, trade, and price endpoints remain available; no authentication required.","fileCount":4,"zipByteSize":8322},{"version":"1.2.0","createdAt":"2026-04-10T05:59:42.680Z","changelog":"- Added MCP (SSE) endpoint: `https://zesty-solace-production-13de.up.railway.app/sse` - No other functional changes detected.","fileCount":3,"zipByteSize":4008},{"version":"1.1.0","createdAt":"2026-04-02T09:40:03.041Z","changelog":"floor-otc 1.1.0 changelog - Updated on-chain escrow contract to V2 (`0x9EC9d882C93F52621CBD0d146D3F2e0929E53AA7`) with immutable protocol fee. - New pricing model: zero spread, real CoinGecko rates; protocol fee of 25 bps (0.25%) applied to each side at settlement. - Removed previous spread tiers. - Documentation updates reflecting new pricing, contract details, and clearer skill descriptions.","fileCount":3,"zipByteSize":3943}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s179z1k6nmh868g6ea2xfssah583t408:mentat","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s179z1k6nmh868g6ea2xfssah583t408:mentat` in an isolated environment before connecting it to live workloads.","No published capability contract is available yet, so validate auth and request/response behavior manually.","Review the upstream CLAWHUB listing at https://clawhub.ai/agora0x/mentat before using production credentials."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-agora0x-mentat/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-agora0x-mentat/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-agora0x-mentat/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-agora0x-mentat/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-agora0x-mentat/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-agora0x-mentat/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T13:31:58.265Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-agora0x-mentat/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-agora0x-mentat/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-agora0x-mentat/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-agora0x-mentat/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T10:42:39.369Z","emptyReason":null},"readme":"Skill: MENTAT\n\nOwner: agora0x\n\nSummary: MENTAT, the agent-native OTC venue. Escrow settlement on Base (atomic, no admin keys), CoW Protocol relay (agent-signed, MEV-protected), and an XMR route via Wagyu (XMR/USDC both directions, three legs, one proof per leg). Every quote and order response carries settlement_path, route_legs, and proofs[].\n\nTags: agent-economy:1.0.0, base:1.0.0, crypto:1.0.0, defi:1.0.0, erc-8004:1.0.0, escrow:1.0.0, latest:1.4.5, otc:1.0.0, swap:1.0.0, tokens:1.0.0, trading:1.0.0, web3:1.0.0\n\nVersion history:\n\nv1.4.5 | 2026-10-02T18:55:13.254Z | user\n\nVersion 1.4.5: FloorEscrow V3 live on Base (0x83818036539737a813D1D99f1c6Cd2867c7D6a6d), described next to V2. Contact trade@mentat.market. A2A get_quote returns 402 like REST. USDbC address checksum fixed.\n\nv1.4.3 | 2026-09-25T13:29:50.649Z | user\n\nVersion 1.4.3: the name is MENTAT. The '(formerly FLOOR OTC)' tag is gone from the title and the description; the ClawHub section at the end is the only rename history (first published as floor-otc, that slug still redirects). No endpoint or skill changes.\n\nv1.4.2 | 2026-09-25T13:13:42.798Z | user\n\nVersion 1.4.2: every endpoint now lives on api.mentat.market (A2A, REST, agent card, health) and MCP is served from the same host at /mcp (legacy SSE at /sse). Receipts and the public tape at mentat.market/ledger, with the read-only tape endpoints (/api/tape, /api/tape/{id}, /api/stats) listed. New section on the Hyperliquid price reference carried by every XMR quote and order (reference: perp_mark, spot_mid, depth_1pct_usd, depth_side, divergence_pct, observed_at; quote caps tier_max_notional_usd and depth_cap_usd; codes price_divergence, price_stale, price_unavailable; reference_warning on checks). execute_trade documents code execution_disabled. clawhub-skill.json gains price_reference and the new endpoints.\n\nv1.4.1 | 2026-09-23T20:37:52.781Z | user\n\nVersion 1.4.1: documents the operator key. New SKILL.md section \"What the operator key can and cannot do\": the agent wallet 0xE6f2…bfd3 owns ERC-8004 Agent #31596 and is FloorEscrow's immutable treasury; it signs only createEscrow (gated on agent NFT ownership, moves no tokens), settle (permissionless payout to the addresses stored in the deal), and setAgentURI; it cannot withdraw, change the fee or treasury, pause, upgrade, amend a deal, or move a counterparty's tokens. Not used by quotes, the CoW relay, the XMR route, or MCP. clawhub-skill.json gains a machine-readable operator_key block. No endpoint or skill changes.\n\nv1.4.0 | 2026-09-23T20:02:30.831Z | user\n\nVersion 1.4.0: MENTAT (formerly FLOOR OTC). Adds the XMR route via Wagyu: XMR/USDC on Base in both directions, XMR routed through XMR1 on Hyperliquid; Wagyu is the settlement counterparty, MENTAT never holds XMR, not trustless. Every quote and order response now carries settlement_path, route_legs, and proofs[] (one proof per leg, nothing inferred). New skills: create_xmr_order, check_xmr_order, get_route_status. 25 bps on every path; on the XMR route it is an integrator fee applied inside the Wagyu quoted amount (mentat_fee_bps, counted in effective_cost_bps). Amounts on the XMR route are decimal strings. Homepage mentat.market, contact desk@mentat.market.\n\nv1.3.0 | 2026-04-10T08:18:26.567Z | user\n\nVersion 1.3.0 — Major update: CoW Protocol integration enables batched agent-signed swaps alongside existing escrow OTC.\n\n- Added support for CoW Protocol relays: agents can now sign EIP-712 orders for instant, MEV-protected batch-auction settlement across Base liquidity.\n- Introduced two swap paths: automated CoW batch trading for agents, or existing 1:1 on-chain escrow for OTC/human cases.\n- New skills for CoW relay: `prepare_trade`, `submit_signed_trade`, and `check_cow_order`.\n- Expanded documentation and examples for preparing, signing, and submitting agent trades via CoW.\n- Protocol fee (25 bps) now applies to both settlement venues via native CoW partnerFee or on-chain escrow.\n- Existing quote, trade, and price endpoints remain available; no authentication required.\n\nv1.2.0 | 2026-04-10T05:59:42.680Z | user\n\n- Added MCP (SSE) endpoint: `https://zesty-solace-production-13de.up.railway.app/sse`  \n- No other functional changes detected.\n\nv1.1.0 | 2026-04-02T09:40:03.041Z | user\n\nfloor-otc 1.1.0 changelog\n\n- Updated on-chain escrow contract to V2 (`0x9EC9d882C93F52621CBD0d146D3F2e0929E53AA7`) with immutable protocol fee.\n- New pricing model: zero spread, real CoinGecko rates; protocol fee of 25 bps (0.25%) applied to each side at settlement.\n- Removed previous spread tiers.\n- Documentation updates reflecting new pricing, contract details, and clearer skill descriptions.\n\nv1.0.0 | 2026-03-29T09:18:05.705Z | user\n\n- Initial release of FLOOR OTC, a trustless OTC escrow for token swaps on Base Mainnet.\n- Provides live price quotes, trade execution through on-chain escrows, and trade status checking.\n- Atomic settlement with no middleman or admin keys.\n- Supports key tokens including USDC, USDbC, DAI, and WETH for escrow trades; additional tokens supported for quotes.\n- Tiered trade spreads based on size; CoinGecko-based real-time pricing.\n- Open REST and JSON-RPC (A2A) endpoints; no authentication required.\n\nArchive index:\n\nArchive v1.4.5: 4 files, 18624 bytes\n\nFiles: clawhub-skill.json (31572b), skill-card.md (2006b), SKILL.md (21729b), _meta.json (125b)\n\nFile v1.4.5:SKILL.md\n\n---\r\nname: mentat\r\ndescription: MENTAT, the agent-native OTC venue. Escrow settlement on Base (atomic, no admin keys), CoW Protocol relay (agent-signed, MEV-protected), and an XMR route via Wagyu (XMR/USDC both directions, three legs, one proof per leg). Every quote and order response carries settlement_path, route_legs, and proofs[].\r\nversion: 1.4.5\r\nmetadata:\r\n  openclaw:\r\n    requires:\r\n      bins:\r\n        - curl\r\n    emoji: \"🟩\"\r\n    homepage: https://mentat.market\r\n---\r\n\r\n# MENTAT — the agent-native OTC venue\r\n\r\nDisciplined intelligence. MENTAT settles token swaps for agents three ways, and every fill carries whatever its chain can prove.\r\n\r\n| settlement_path | What settles | Trust model | Proofs |\r\n|---|---|---|---|\r\n| `escrow` | 1:1 swap through a FloorEscrow contract on Base, 25 bps fee. V2 is behind `execute_trade`: both sides deposit, one atomic settlement. V3 is behind web deals (mentat.market/new and deal links): the maker funds the deal, the taker's fill settles it in one transaction. | Trustless: no owner, no pause, no upgrade. | V2: `escrow_create_tx`, then deposits and settlement on the contract page. V3: the fill transaction (`DealSettled`). |\r\n| `cow_relay` | The calling agent signs an EIP-712 order; MENTAT relays it to CoW Protocol's batch auction on Base. 25 bps partner fee inside the signed appData. | Non-custodial: MENTAT never holds funds. | `cow_order_uid`, then one `settlement_tx` per batch that filled it. |\r\n| `wagyu_route` | XMR in or out. XMR is routed through XMR1 on Hyperliquid by Wagyu, the settlement counterparty. MENTAT never holds XMR. 25 bps integrator fee applied inside Wagyu's quoted amount. | **Not trustless.** You rely on Wagyu to deliver; the route gives you a proof per leg instead. | `deposit_tx` (Monero hash on XMR legs), one `fill_tx` per Hyperliquid fill hash, `payout_tx`. |\r\n\r\nERC-8004 Agent #31596 on Base Mainnet. Contact: trade@mentat.market.\r\n\r\n## Response contract\r\n\r\nEvery quote and order response carries:\r\n\r\n- `settlement_path`: `escrow`, `cow_relay`, `wagyu_route`, or `quote_only` (a price with no executable path).\r\n- `route_legs[]`: the legs of that path, each `{ leg, name, chain, chain_id, proof_kind, proofs }` where `proofs` says how many proofs the leg can carry (`one`, `one or many`, `zero, one, or many`).\r\n- `proofs[]`: `{ chain, kind, hash, explorer_url }`, one entry per hash the chain has exposed so far. Empty on a quote. Nothing is inferred: a leg without a hash yet has no entry.\r\n\r\nAmounts on the XMR route are decimal strings. Never send a float.\r\n\r\n## Quick start\r\n\r\n### Quote (REST, x402-paid, $0.01 USDC on Base)\r\n\r\n```bash\r\ncurl -s \"https://api.mentat.market/api/quote?from=USDC&to=WETH&amount=1000\" | jq\r\n```\r\n\r\n### Quote (JSON-RPC / A2A)\r\n\r\n```bash\r\ncurl -s -X POST https://api.mentat.market/a2a \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\"jsonrpc\":\"2.0\",\"method\":\"tasks/send\",\"params\":{\"skill_id\":\"get_quote\",\"arguments\":{\"from_token\":\"USDC\",\"to_token\":\"WETH\",\"amount\":1000}},\"id\":1}'\r\n```\r\n\r\nQuotes are x402-paid on both surfaces: an unpaid `get_quote` over A2A answers HTTP 402 with the payment terms, the same as the REST endpoint, and the paid call is `GET /api/quote` with an x402 payment header.\r\n\r\n### Live prices (free)\r\n\r\n```bash\r\ncurl -s \"https://api.mentat.market/api/prices\" | jq\r\n```\r\n\r\n## XMR route (settlement_path `wagyu_route`)\r\n\r\nPairs: XMR ↔ USDC on Base, both directions. Minimums are direction-aware: **sell XMR from $25, buy XMR from $500** (below $500 a buy loses most of its value to Hyperliquid size rounding). Maximum $5,000 per order. MENTAT earns a 25 bps integrator fee on every order, applied inside Wagyu's quoted amount: it is already included in `to_amount`, reported by Wagyu as `integrator_fee`, and counted in `effective_cost_bps`, the all-in number.\r\n\r\n### 1. Quote 0.1 XMR → USDC\r\n\r\n```bash\r\ncurl -s -X POST https://api.mentat.market/a2a \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\"jsonrpc\":\"2.0\",\"method\":\"tasks/send\",\"params\":{\"skill_id\":\"get_quote\",\"arguments\":{\"from_token\":\"XMR\",\"to_token\":\"USDC\",\"amount\":\"0.1\",\"to_address\":\"0xYourBaseAddress\"}},\"id\":1}'\r\n```\r\n\r\nResponse (abridged):\r\n\r\n```json\r\n{\r\n  \"quote\": {\r\n    \"venue\": \"wagyu\",\r\n    \"settlement_path\": \"wagyu_route\",\r\n    \"counterparty\": \"Wagyu (wagyu.xyz)\",\r\n    \"custody\": \"MENTAT never holds XMR. Wagyu is the settlement counterparty; XMR in and out is routed through XMR1 on Hyperliquid. Not trustless.\",\r\n    \"from_token\": \"XMR\", \"to_token\": \"USDC\",\r\n    \"from_chain\": \"monero\", \"to_chain\": \"base\",\r\n    \"from_amount\": \"0.1\", \"to_amount\": \"50.409916\",\r\n    \"from_amount_atomic\": \"100000000000\", \"to_amount_atomic\": \"50409916\",\r\n    \"from_amount_usd\": \"51.45\", \"effective_cost_bps\": 169,\r\n    \"mentat_fee_bps\": 25, \"mentat_fee_note\": \"Included in to_amount; reported by Wagyu as integrator_fee; counted in effective_cost_bps.\",\r\n    \"integrator_fee\": { \"feePercent\": 0.25, \"feeAmountUsd\": 0.13, \"feeAddress\": \"0xMentatFeeAddress\" },\r\n    \"tool_used\": \"stargateV2\", \"estimated_time_seconds\": 623,\r\n    \"direction\": \"sell\", \"min_notional_usd\": 25, \"max_notional_usd\": 5000,\r\n    \"tier_max_notional_usd\": 5000, \"depth_cap_usd\": 184516,\r\n    \"valid_for_seconds\": 30,\r\n    \"reference\": { \"source\": \"hyperliquid\", \"perp_mark\": 551.08, \"spot_mid\": 550.98, \"depth_1pct_usd\": 369032, \"depth_side\": \"asks\", \"divergence_pct\": 0.02, \"observed_at\": \"2026-09-23T20:30:00.000Z\" },\r\n    \"route_legs\": [\r\n      { \"leg\": 1, \"name\": \"source\", \"chain\": \"monero\", \"chain_id\": 0, \"proof_kind\": \"deposit_tx\", \"proofs\": \"one\" },\r\n      { \"leg\": 2, \"name\": \"hyperliquid_swap\", \"chain\": \"hyperliquid\", \"chain_id\": 1337, \"proof_kind\": \"fill_tx\", \"proofs\": \"zero, one, or many\" },\r\n      { \"leg\": 3, \"name\": \"destination\", \"chain\": \"base\", \"chain_id\": 8453, \"proof_kind\": \"payout_tx\", \"proofs\": \"one\" }\r\n    ],\r\n    \"proofs\": [],\r\n    \"note\": \"An estimate, not a funding instruction. Create an order to receive the exact deposit address, amount, and expiry.\"\r\n  }\r\n}\r\n```\r\n\r\nA quote is an estimate. Only the created order's deposit address, amount, and expiry are the funding instruction.\r\n\r\n### The price reference (Hyperliquid)\r\n\r\nEvery XMR quote is checked against Hyperliquid before Wagyu is asked, and every XMR quote and order response carries the reading in `reference`:\r\n\r\n```json\r\n\"reference\": { \"source\": \"hyperliquid\", \"perp_mark\": 551.08, \"spot_mid\": 550.98, \"depth_1pct_usd\": 369032, \"depth_side\": \"asks\", \"divergence_pct\": 0.02, \"observed_at\": \"2026-09-23T20:30:00.000Z\" }\r\n```\r\n\r\n- `perp_mark` is the XMR perpetual mark price; `spot_mid` is the XMR1/USDC spot mid (pair `@260`). A quote is refused with code `price_divergence` when they disagree by more than 1%, `price_stale` when either reading is older than 60 seconds, and `price_unavailable` when Hyperliquid cannot be read. Nothing is quoted from a single or stale source.\r\n- `depth_1pct_usd` is the resting size within 1% of mid on the side the order hits (`depth_side`: bids when selling XMR, asks when buying). The per-order cap is the smaller of the tier cap and half of that depth; quotes report both as `tier_max_notional_usd` and `depth_cap_usd`, and `above_maximum` says which one bound.\r\n- A created order carries the quote-time `reference`. `check_xmr_order` re-reads the live one and, if the live check would refuse, adds `reference_warning` to the response; an existing order is never failed by it.\r\n\r\n### 2. Create the order\r\n\r\n`to_address` is required (Base address for USDC, Monero address for XMR). `refund_address` on the source chain is optional.\r\n\r\n```bash\r\ncurl -s -X POST https://api.mentat.market/a2a \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\"jsonrpc\":\"2.0\",\"method\":\"tasks/send\",\"params\":{\"skill_id\":\"create_xmr_order\",\"arguments\":{\"from_token\":\"XMR\",\"to_token\":\"USDC\",\"amount\":\"0.1\",\"to_address\":\"0xYourBaseAddress\"}},\"id\":1}'\r\n```\r\n\r\nREST equivalent: `POST /api/xmr/orders` with the same JSON body. The response's `order.deposit` is the funding instruction and `order.next_steps` spells it out. Send exactly that amount to that address before `order.expires_at`.\r\n\r\n### 3. Check the order: three legs, one proof each\r\n\r\nThe destination address is the read proof. An `order_id` with the wrong `to_address` is simply not found.\r\n\r\n```bash\r\ncurl -s -X POST https://api.mentat.market/a2a \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\"jsonrpc\":\"2.0\",\"method\":\"tasks/send\",\"params\":{\"skill_id\":\"check_xmr_order\",\"arguments\":{\"order_id\":\"ord_1\",\"to_address\":\"0xYourBaseAddress\"}},\"id\":1}'\r\n```\r\n\r\nREST equivalent: `GET /api/xmr/orders/{order_id}?to_address=0x...`. A completed order (abridged):\r\n\r\n```json\r\n{\r\n  \"order\": {\r\n    \"order_id\": \"ord_1\",\r\n    \"settlement_path\": \"wagyu_route\",\r\n    \"status\": \"completed\",\r\n    \"from_token\": \"XMR\", \"to_token\": \"USDC\",\r\n    \"deposit\": { \"address\": \"4AdUnd...\", \"chain\": \"monero\", \"token\": \"XMR\", \"amount\": \"0.1\" },\r\n    \"to_address\": \"0xYourBaseAddress\",\r\n    \"expected_output\": \"50.409916\", \"actual_output\": \"50.38\",\r\n    \"mentat_fee_bps\": 25, \"mentat_fee_usd\": \"0.13\",\r\n    \"legs\": {\r\n      \"source\": { \"state\": \"done\", \"confirmations\": 10, \"required_confirmations\": 10, \"tx_hash\": \"6f1d...c2a9\" },\r\n      \"hyperliquid\": { \"state\": \"done\", \"fill_count\": 2, \"receipts_status\": \"complete\", \"tx_hashes\": [\"0xbc50...e7ee\"] },\r\n      \"destination\": { \"state\": \"done\", \"tx_hash\": \"0x9a3b...41d0\" }\r\n    },\r\n    \"proofs\": [\r\n      { \"chain\": \"monero\", \"kind\": \"deposit_tx\", \"hash\": \"6f1d...c2a9\", \"explorer_url\": \"https://xmrchain.net/tx/6f1d...c2a9\" },\r\n      { \"chain\": \"hyperliquid\", \"kind\": \"fill_tx\", \"hash\": \"0xbc50...e7ee\", \"explorer_url\": \"https://app.hyperliquid.xyz/explorer/tx/0xbc50...e7ee\" },\r\n      { \"chain\": \"base\", \"kind\": \"payout_tx\", \"hash\": \"0x9a3b...41d0\", \"explorer_url\": \"https://basescan.org/tx/0x9a3b...41d0\" }\r\n    ],\r\n    \"status_check\": { \"skill\": \"check_xmr_order\", \"arguments\": { \"order_id\": \"ord_1\", \"to_address\": \"0xYourBaseAddress\" } }\r\n  }\r\n}\r\n```\r\n\r\nSeveral Hyperliquid fills can share one transaction hash; `proofs[]` lists each distinct hash once. Fill hashes are appended as Wagyu saves them, including after `completed`, so poll until `legs.hyperliquid.receipts_status` is `complete`.\r\n\r\n### The paused state\r\n\r\nWhen Wagyu answers 503 unavailable, MENTAT pauses the route instead of retrying. Quotes and order creation answer:\r\n\r\n```json\r\n{ \"error\": \"XMR routing paused\", \"code\": \"routing_paused\", \"routing_paused\": true, \"until\": \"2026-09-14T12:05:00.000Z\", \"retry_after_seconds\": 300 }\r\n```\r\n\r\nREST returns HTTP 503 for it. `get_route_status` (or free `GET /api/routes`) reports `paused`, `until`, and `reason`. Other machine codes: `below_minimum` / `above_maximum` (MENTAT's floor and cap, with the numbers), `no_route` (nearby sizes were tried; change the amount), `amount_below_minimum` (venue minimum), `invalid_request` (never retried), `rate_limited`, `create_uncertain` (creation got no answer and could not be verified: nothing was retried, do not send funds), `price_unavailable` / `price_stale` / `price_divergence` (the Hyperliquid reference refused the quote; see above).\r\n\r\n## CoW relay (settlement_path `cow_relay`)\r\n\r\nStep 1, ask MENTAT to build the order:\r\n\r\n```bash\r\ncurl -s -X POST https://api.mentat.market/a2a \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\"jsonrpc\":\"2.0\",\"method\":\"tasks/send\",\"params\":{\"skill_id\":\"prepare_trade\",\"arguments\":{\"sell_token\":\"USDC\",\"buy_token\":\"WETH\",\"sell_amount\":1000,\"trader_address\":\"0xYourAgentWallet\"}},\"id\":1}'\r\n```\r\n\r\nYou get back `typed_data` (EIP-712 domain, types, message), `app_data` (MENTAT's partnerFee document and hash), `quote_summary`, `preflight` (balance and relayer allowance), and `relayer.approve_calldata` if the GPv2VaultRelayer still needs an approval.\r\n\r\nStep 2, sign locally:\r\n\r\n```js\r\nconst signature = await wallet.signTypedData(typed_data.domain, typed_data.types, typed_data.message);\r\n```\r\n\r\nStep 3, submit through MENTAT:\r\n\r\n```bash\r\ncurl -s -X POST https://api.mentat.market/a2a \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\"jsonrpc\":\"2.0\",\"method\":\"tasks/send\",\"params\":{\"skill_id\":\"submit_signed_trade\",\"arguments\":{\"order\":{...},\"signature\":\"0x...\",\"trader_address\":\"0xYourAgentWallet\"}},\"id\":1}'\r\n```\r\n\r\nReturns `order_uid` (the first proof) and `explorer_url`. `check_cow_order` adds one `settlement_tx` proof per batch that filled the order.\r\n\r\n## Escrow (settlement_path `escrow`)\r\n\r\nTwo FloorEscrow contracts are live on Base. `execute_trade` and `check_trade` use V2; web deals use V3.\r\n\r\n### FloorEscrow V2: `execute_trade`\r\n\r\n```bash\r\ncurl -s -X POST https://api.mentat.market/a2a \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\"jsonrpc\":\"2.0\",\"method\":\"tasks/send\",\"params\":{\"skill_id\":\"execute_trade\",\"arguments\":{\"from_token\":\"USDC\",\"to_token\":\"DAI\",\"amount\":1000}},\"id\":1}'\r\n```\r\n\r\nReturns the deal, `proofs[0]` as the `escrow_create_tx`, and next steps. `check_trade` reads the deal state from the V2 contract. A deployment can keep A2A execution switched off; then `execute_trade` answers code `execution_disabled` with the V2 escrow address, and the Telegram bot or the contract itself is the way to open a deal.\r\n\r\n### FloorEscrow V3: web deals\r\n\r\nFloorEscrow V3 (`0x83818036539737a813D1D99f1c6Cd2867c7D6a6d`, live on Base since block 52006064) settles the deals people post on the web. No skill calls it: maker and taker use their own wallets.\r\n\r\n- Post at `https://mentat.market/new`. The maker approves exactly the amount plus the 25 bps fee and calls `createDeal`; the deal is funded in that same transaction and gets a link, `https://mentat.market/deal/{id}`.\r\n- Fill from the deal link. The page reads every term from the chain (`deals(dealId)`). `fill(dealId)` pulls the taker's side and pays out every leg in the same transaction: the taker receives the full stated amount, the maker receives the ask, the fee goes to the treasury.\r\n- Only the maker can cancel, any time before a fill, and gets back the deposit including the fee. After expiry a deal can no longer be filled.\r\n- A deal is not listed on MENTAT, but every deal is public on-chain: anyone with the link can fill it at the stated price.\r\n\r\n## What the operator key can and cannot do\r\n\r\nMENTAT's servers hold one Ethereum key, the operator key: the agent wallet `0xE6f26F05C956D1833A1DAaaAD57CD0a1E626bfd3`. On-chain it is the owner of ERC-8004 Agent #31596 (`ownerOf(31596)` on the Identity Registry) and the immutable `treasury` of the FloorEscrow V2 contract (`treasury()`; `feeBps()` = 25). It signs three kinds of transaction and nothing else:\r\n\r\n| Contract | Function | Gate in the contract | Effect |\r\n|---|---|---|---|\r\n| FloorEscrow V2 `0x9EC9…3AA7` | `createEscrow(tradeId, buyer, seller, tokenBuy, tokenSell, amountBuy, amountSell, agentId, duration)` | `identityRegistry.ownerOf(agentId) == msg.sender` | Records the terms of a deal (`execute_trade`, and the Telegram bot's escrow flow). Moves no tokens. Terms are final once written, `duration` is capped at 7 days, a `tradeId` cannot be reused. |\r\n| FloorEscrow V2 | `settle(tradeId)` | none: anyone may call; status must be `BothDeposited` | Pays 25 bps of each side to the immutable treasury and the rest to the counterparty named in the deal. The caller chooses nothing. The Telegram bot calls it as soon as both deposits land. |\r\n| Identity Registry `0x8004…a432` | `setAgentURI(31596, uri)` | ERC-721 owner of the agent NFT | Updates Agent #31596's metadata (the same operator script minted the agent once with `register`). No skill triggers it. |\r\n\r\nLike any address it can also call `refund(tradeId)` (after expiry only; full refund to whoever deposited, no fee) and `getTrade(tradeId)` (read). `depositBuyer` / `depositSeller` accept only the buyer or seller named in the deal and pull tokens from `msg.sender` alone, so the key can deposit only its own tokens, and only where it is itself the named party (the Telegram bot names it as buyer of the deals it opens).\r\n\r\nThe key cannot withdraw or sweep anything from the escrow (no such function exists), change the fee or the treasury (both `immutable`), pause, upgrade, or kill the contract (no owner, no proxy, no admin role), amend or cancel a deal before it expires, deposit or move a counterparty's tokens (approvals go to the contract, never to the key), settle early, or send a settlement anywhere but the addresses stored in the deal. A leaked key could open junk deals, rewrite the agent's metadata or transfer the agent NFT, and spend the wallet's own balance (gas, collected fees, x402 receipts); tokens sitting in escrow would still move only where the contract rules send them.\r\n\r\nFloorEscrow V3 (`0x8381…6a6d`, web deals) gives the key no special role. It has no operator-gated function: the maker alone creates, funds and cancels a deal, any taker fills it, and its fee recipient is a separate immutable address (`treasury()`), not this key.\r\n\r\nNo other server code uses the key. `get_quote`, `check_trade`, `get_prices`, and `get_route_status` only read. The CoW relay never signs: the trader signs, MENTAT forwards the signed order to api.cow.fi. The XMR route talks to Wagyu over HTTPS with an API credential (`WAGYU_INTEGRATOR_KEY`), signs no transaction, and never holds XMR. The MCP endpoint exposes the same skills through the same handlers and holds no key of its own. Without `PRIVATE_KEY`, or with A2A execution switched off, `execute_trade` answers with an error (`execution_disabled`) and the V2 escrow address to call directly; everything else is unaffected.\r\n\r\n## Skills\r\n\r\n| Skill | Path | What it does |\r\n|---|---|---|\r\n| `get_quote` | any | Live quote. XMR pairs answer through the Wagyu route with `settlement_path: \"wagyu_route\"` and the Hyperliquid `reference`. |\r\n| `get_prices` | — | CoinGecko prices for the escrow and CoW pairs. XMR is priced live at quote time. |\r\n| `create_xmr_order` | `wagyu_route` | Durable XMR order; returns the funding instruction. |\r\n| `check_xmr_order` | `wagyu_route` | Three legs and `proofs[]`; needs `order_id` + `to_address`. |\r\n| `get_route_status` | `wagyu_route` | Live or paused, with the pause deadline and reason. |\r\n| `prepare_trade` | `cow_relay` | Build the EIP-712 order for the agent to sign. |\r\n| `submit_signed_trade` | `cow_relay` | Relay the signed order to the CoW order book. |\r\n| `check_cow_order` | `cow_relay` | Order state plus settlement transaction proofs. |\r\n| `execute_trade` | `escrow` | Create an escrow deal on Base (FloorEscrow V2). |\r\n| `check_trade` | `escrow` | Read a FloorEscrow V2 deal by id. |\r\n\r\n## Supported tokens (Base Mainnet)\r\n\r\n| Token | Address |\r\n|-------|---------|\r\n| USDC | `0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913` |\r\n| USDbC | `0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA` |\r\n| DAI | `0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb` |\r\n| WETH | `0x4200000000000000000000000000000000000006` |\r\n| XMR | native Monero, routed via Wagyu (XMR1 `0xbB2057659bD378D17E2E151BB04bdcaA00000000` on Hyperliquid spot) |\r\n\r\nQuotes only: ETH, BTC, WBTC, UNI, LINK, AAVE.\r\n\r\n## Pricing\r\n\r\nQuotes are at real market rates. MENTAT charges 25 bps on every fill, on every path: escrow (immutable in the contract; V2 deducts it from each side on settlement, V3 charges it on top of the maker's side), CoW relay (`partnerFee` inside the appData the trader signs), and the XMR route (a 0.25% integrator fee applied inside Wagyu's quoted amount, so it is already in `to_amount` and reported by Wagyu as `integrator_fee`). On the XMR route `effective_cost_bps` is the all-in number: Wagyu's own costs plus MENTAT's fee.\r\n\r\n## Endpoints\r\n\r\n- Agent card: `https://api.mentat.market/.well-known/agent.json`\r\n- A2A (JSON-RPC): `POST https://api.mentat.market/a2a`\r\n- REST quote (x402): `GET https://api.mentat.market/api/quote?from=XMR&to=USDC&amount=0.1&to_address=0x...`\r\n- REST XMR orders (free): `POST /api/xmr/orders`, `GET /api/xmr/orders/{id}?to_address=0x...`\r\n- Route status (free): `GET https://api.mentat.market/api/routes`\r\n- Prices (free): `GET https://api.mentat.market/api/prices`\r\n- MCP (streamable HTTP): `https://api.mentat.market/mcp` (legacy SSE at `/sse` + `/messages`)\r\n- Public tape (free, read-only): `GET https://api.mentat.market/api/tape?limit=50` (every fill on every path, newest first, keyset `cursor`), `GET https://api.mentat.market/api/tape/{id}` (one receipt), `GET https://api.mentat.market/api/stats` (24h and all-time per path)\r\n- Health: `GET https://api.mentat.market/health`\r\n- Telegram: `https://t.me/FloorOTCbot`\r\n- Web: `https://mentat.market` · public tape and receipts: `https://mentat.market/ledger` (one receipt per fill at `/ledger/{id}`)\r\n- Web deals (FloorEscrow V3): post at `https://mentat.market/new`; a deal lives at `https://mentat.market/deal/{id}`\r\n\r\n## On-chain\r\n\r\n- Network: Base Mainnet (chain ID 8453)\r\n- FloorEscrow V2 (`execute_trade`, `check_trade`, the Telegram bot): `0x9EC9d882C93F52621CBD0d146D3F2e0929E53AA7` (verified on Basescan)\r\n- FloorEscrow V3 (web deals at mentat.market/new and deal links): `0x83818036539737a813D1D99f1c6Cd2867c7D6a6d` (verified on Basescan, deployed at block 52006064)\r\n- CoW Settlement: `0x9008D19f58AAbD9eD0D60971565AA8510560ab41`\r\n- CoW VaultRelayer (approve sell tokens here): `0xC92E8bdf79f0507f65a392b0ab4667716BFE0110`\r\n- Identity Registry (ERC-8004): `0x8004A169FB4a3325136EB29fA0ceB6D2e539a432`, Agent ID 31596\r\n\r\nNo authentication. Quotes cost $0.01 USDC via x402; order status, route status, and prices are free.\r\n\r\n## ClawHub\r\n\r\nThis skill was published as `floor-otc`. ClawHub supports renaming an owned skill (`clawhub skill rename floor-otc mentat`, or `POST /api/v1/skills/floor-otc/rename` with `{\"newSlug\":\"mentat\"}`); the previous slug is kept as a redirect alias, so `floor-otc` keeps resolving here.\n\nFile v1.4.5:_meta.json\n\n{\n  \"ownerId\": \"kn7aae8wkdvhpxxqf0kkwfm6ps83t95a\",\n  \"slug\": \"mentat\",\n  \"version\": \"1.4.5\",\n  \"publishedAt\": 1790967313254\n}\n\nFile v1.4.5:skill-card.md\n\n## Description:\n\nMENTAT guides agents through token swaps using Base escrow, signed CoW orders, and Wagyu-routed XMR trades, with settlement evidence for each path.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[agora0x](https://clawhub.ai/user/agora0x)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nAgents and developers use MENTAT to request token-swap quotes, prepare or submit trades, and track settlement across Base escrow, CoW Protocol, and an XMR route.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Paid quotes and trade execution can incur fees or move funds.\n\nMitigation: Check addresses, amounts, fees, and payment terms before authorizing a quote, signature, deposit, or trade.\n\nRisk: CoW orders require a signature from the trader's wallet.\n\nMitigation: Review the full order and signed data before signing with your own wallet.\n\nRisk: The XMR route relies on Wagyu as a settlement counterparty and is not trustless.\n\nMitigation: Assess counterparty risk and use the created order's exact deposit address, amount, and expiry rather than a quote to fund it.\n\n## Reference(s):\n\n- [MENTAT homepage](https://mentat.market)\n- [MENTAT agent card](https://api.mentat.market/.well-known/agent.json)\n- [ClawHub skill listing](https://clawhub.ai/agora0x/skills/mentat)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, JSON responses]\n\n**Output Format:** [Markdown with curl examples and JSON response examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Quotes and orders describe settlement paths, route legs, and available transaction proofs.]\n\n## Skill Version(s):\n\n1.4.5 (source: release metadata and skill frontmatter)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.4.5:clawhub-skill.json\n\n{\r\n  \"name\": \"mentat\",\r\n  \"display_name\": \"MENTAT\",\r\n  \"description\": \"MENTAT: the agent-native OTC venue. Three settlement paths on one response contract: escrow on Base (atomic, no admin keys), CoW Protocol relay (agent-signed EIP-712 orders, MEV-protected, non-custodial), and an XMR route via Wagyu (XMR in/out routed through XMR1 on Hyperliquid; Wagyu is the settlement counterparty; MENTAT never holds XMR; not trustless). Every quote and order response carries settlement_path, route_legs, and proofs[]: one proof per leg, whatever its chain can prove.\",\r\n  \"tagline\": \"disciplined intelligence\",\r\n  \"version\": \"1.4.5\",\r\n  \"previous_slug\": \"floor-otc\",\r\n  \"author\": \"Agora0x\",\r\n  \"license\": \"MIT-0\",\r\n  \"contact\": \"trade@mentat.market\",\r\n  \"tags\": [\r\n    \"otc\",\r\n    \"trading\",\r\n    \"escrow\",\r\n    \"defi\",\r\n    \"swap\",\r\n    \"base\",\r\n    \"erc-8004\",\r\n    \"web3\",\r\n    \"tokens\",\r\n    \"agent-economy\",\r\n    \"cow-protocol\",\r\n    \"batch-auction\",\r\n    \"mev-protected\",\r\n    \"eip-712\",\r\n    \"relay\",\r\n    \"xmr\",\r\n    \"monero\",\r\n    \"wagyu\",\r\n    \"hyperliquid\",\r\n    \"proofs\"\r\n  ],\r\n  \"homepage\": \"https://mentat.market\",\r\n  \"receipts\": \"https://mentat.market/ledger\",\r\n  \"agent_id\": 31596,\r\n  \"registry\": \"ERC-8004 Base Mainnet\",\r\n  \"registry_address\": \"0x8004A169FB4a3325136EB29fA0ceB6D2e539a432\",\r\n  \"chain\": \"base\",\r\n  \"chain_id\": 8453,\r\n  \"escrow_contract\": \"0x9EC9d882C93F52621CBD0d146D3F2e0929E53AA7\",\r\n  \"escrow_contracts\": {\r\n    \"v2\": {\r\n      \"name\": \"FloorEscrow V2\",\r\n      \"address\": \"0x9EC9d882C93F52621CBD0d146D3F2e0929E53AA7\",\r\n      \"used_by\": \"execute_trade, check_trade and the Telegram bot\"\r\n    },\r\n    \"v3\": {\r\n      \"name\": \"FloorEscrow V3\",\r\n      \"address\": \"0x83818036539737a813D1D99f1c6Cd2867c7D6a6d\",\r\n      \"deploy_block\": 52006064,\r\n      \"used_by\": \"web deals: a maker posts at https://mentat.market/new and shares the deal link https://mentat.market/deal/{id}\",\r\n      \"flow\": \"The maker funds the deal when creating it; the taker's fill settles both legs in one transaction; only the maker can cancel. A deal is not listed on MENTAT, but it is public on-chain and anyone with the link can fill it at the stated price. No skill calls V3: maker and taker use their own wallets.\",\r\n      \"post\": \"https://mentat.market/new\",\r\n      \"deal_link\": \"https://mentat.market/deal/{id}\"\r\n    }\r\n  },\r\n  \"cow_settlement\": \"0x9008D19f58AAbD9eD0D60971565AA8510560ab41\",\r\n  \"cow_vault_relayer\": \"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110\",\r\n  \"endpoints\": {\r\n    \"agent_card\": \"https://api.mentat.market/.well-known/agent.json\",\r\n    \"a2a\": \"https://api.mentat.market/a2a\",\r\n    \"rest_quote\": \"https://api.mentat.market/api/quote\",\r\n    \"rest_xmr_orders\": \"https://api.mentat.market/api/xmr/orders\",\r\n    \"rest_routes\": \"https://api.mentat.market/api/routes\",\r\n    \"rest_prices\": \"https://api.mentat.market/api/prices\",\r\n    \"health\": \"https://api.mentat.market/health\",\r\n    \"telegram\": \"https://t.me/FloorOTCbot\",\r\n    \"mcp\": \"https://api.mentat.market/mcp\",\r\n    \"mcp_sse\": \"https://api.mentat.market/sse\",\r\n    \"rest_tape\": \"https://api.mentat.market/api/tape\",\r\n    \"rest_tape_receipt\": \"https://api.mentat.market/api/tape/{id}\",\r\n    \"rest_stats\": \"https://api.mentat.market/api/stats\",\r\n    \"ledger\": \"https://mentat.market/ledger\",\r\n    \"llms_txt\": \"https://mentat.market/llms.txt\",\r\n    \"web_new_deal\": \"https://mentat.market/new\",\r\n    \"web_deal\": \"https://mentat.market/deal/{id}\"\r\n  },\r\n  \"supported_tokens\": [\r\n    {\r\n      \"symbol\": \"USDC\",\r\n      \"address\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\r\n      \"decimals\": 6\r\n    },\r\n    {\r\n      \"symbol\": \"USDbC\",\r\n      \"address\": \"0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA\",\r\n      \"decimals\": 6\r\n    },\r\n    {\r\n      \"symbol\": \"DAI\",\r\n      \"address\": \"0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb\",\r\n      \"decimals\": 18\r\n    },\r\n    {\r\n      \"symbol\": \"WETH\",\r\n      \"address\": \"0x4200000000000000000000000000000000000006\",\r\n      \"decimals\": 18\r\n    },\r\n    {\r\n      \"symbol\": \"XMR\",\r\n      \"chain\": \"monero\",\r\n      \"decimals\": 12,\r\n      \"settlement_path\": \"wagyu_route\",\r\n      \"note\": \"Routed via Wagyu through XMR1 (0xbB2057659bD378D17E2E151BB04bdcaA00000000, Hyperliquid spot). Pairs: XMR/USDC on Base, both directions.\"\r\n    }\r\n  ],\r\n  \"protocol_fee_bps\": 25,\r\n  \"protocol_fee_note\": \"0.25% on every fill, on every path. CoW relay: routed by solvers via partnerFee in the appData the trader signs. Escrow: immutable in the contract; V2 deducts it from each side on settlement, V3 charges it on top of the maker's side. XMR route: a 25 bps integrator fee applied inside Wagyu's quoted amount, already included in to_amount and reported by Wagyu as integrator_fee; effective_cost_bps is the all-in number.\",\r\n  \"response_contract\": {\r\n    \"settlement_path\": \"escrow | cow_relay | wagyu_route | quote_only\",\r\n    \"route_legs\": \"[{ leg, name, chain, chain_id, proof_kind, proofs }]\",\r\n    \"proofs\": \"[{ chain, kind, hash, explorer_url }] — one entry per hash the chain has exposed; empty on a quote; never inferred\"\r\n  },\r\n  \"venues\": {\r\n    \"cow_relay\": {\r\n      \"settlement_path\": \"cow_relay\",\r\n      \"type\": \"off-chain order book + on-chain batch auction\",\r\n      \"settlement\": \"~30s by CoW solvers\",\r\n      \"custody\": \"non-custodial — MENTAT never holds funds\",\r\n      \"trustless\": true,\r\n      \"mev_protection\": true,\r\n      \"proofs\": [\r\n        \"cow_order_uid\",\r\n        \"settlement_tx (one per filling batch)\"\r\n      ],\r\n      \"skills\": [\r\n        \"prepare_trade\",\r\n        \"submit_signed_trade\",\r\n        \"check_cow_order\"\r\n      ]\r\n    },\r\n    \"escrow\": {\r\n      \"settlement_path\": \"escrow\",\r\n      \"type\": \"1:1 on-chain escrow (FloorEscrow contracts on Base)\",\r\n      \"contracts\": \"see escrow_contracts: V2 behind execute_trade and check_trade, V3 behind web deals (mentat.market/new and deal links)\",\r\n      \"settlement\": \"V2: atomic once both parties have deposited. V3: the taker's fill deposits and settles in one transaction\",\r\n      \"custody\": \"smart contract escrow, no admin keys\",\r\n      \"trustless\": true,\r\n      \"proofs\": [\r\n        \"escrow_create_tx\"\r\n      ],\r\n      \"skills\": [\r\n        \"execute_trade\",\r\n        \"check_trade\"\r\n      ]\r\n    },\r\n    \"wagyu_route\": {\r\n      \"settlement_path\": \"wagyu_route\",\r\n      \"type\": \"XMR in/out routed through XMR1 on Hyperliquid spot\",\r\n      \"counterparty\": \"Wagyu (wagyu.xyz)\",\r\n      \"custody\": \"MENTAT never holds XMR\",\r\n      \"trustless\": false,\r\n      \"pairs\": [\r\n        \"XMR/USDC on Base (both directions)\"\r\n      ],\r\n      \"minimums_usd\": {\r\n        \"sell_xmr\": 25,\r\n        \"buy_xmr\": 500\r\n      },\r\n      \"maximum_usd\": 5000,\r\n      \"fee_bps\": 25,\r\n      \"fee_note\": \"MENTAT earns a 25 bps integrator fee on every order, applied inside Wagyu's quoted amount: included in to_amount, reported by Wagyu as integrator_fee, counted in effective_cost_bps.\",\r\n      \"legs\": [\r\n        \"source chain (deposit_tx; Monero hash on XMR legs)\",\r\n        \"hyperliquid_swap (fill_tx, zero/one/many)\",\r\n        \"destination chain (payout_tx)\"\r\n      ],\r\n      \"paused_state\": \"A Wagyu 503 unavailable pauses the route; quotes and creates answer code routing_paused (HTTP 503 on REST) with until and retry_after_seconds.\",\r\n      \"skills\": [\r\n        \"get_quote\",\r\n        \"create_xmr_order\",\r\n        \"check_xmr_order\",\r\n        \"get_route_status\"\r\n      ],\r\n      \"price_reference\": \"hyperliquid (see price_reference)\",\r\n      \"refusal_codes\": [\r\n        \"routing_paused\",\r\n        \"below_minimum\",\r\n        \"above_maximum\",\r\n        \"no_route\",\r\n        \"amount_below_minimum\",\r\n        \"invalid_request\",\r\n        \"rate_limited\",\r\n        \"create_uncertain\",\r\n        \"price_divergence\",\r\n        \"price_stale\",\r\n        \"price_unavailable\"\r\n      ]\r\n    }\r\n  },\r\n  \"skills\": [\r\n    {\r\n      \"id\": \"get_quote\",\r\n      \"name\": \"Get OTC Quote\",\r\n      \"description\": \"Live quote at real market rates. XMR pairs (XMR/USDC on Base, both directions) answer through the Wagyu route with settlement_path wagyu_route, three route_legs, and an empty proofs[]. MENTAT charges 25 bps on every path; on the XMR route it is an integrator fee applied inside Wagyu's quoted amount (mentat_fee_bps, already in to_amount; effective_cost_bps is all-in). Direction-aware minimums: sell XMR from $25, buy XMR from $500. Code routing_paused while XMR routing is paused. Every XMR response carries the Hyperliquid price reference (reference: perp_mark, spot_mid, depth_1pct_usd, depth_side, divergence_pct, observed_at); quotes add tier_max_notional_usd and depth_cap_usd. Codes price_divergence, price_stale, price_unavailable when the reference refuses.\",\r\n      \"tags\": [\r\n        \"quote\",\r\n        \"swap\",\r\n        \"pricing\",\r\n        \"xmr\"\r\n      ],\r\n      \"input\": {\r\n        \"method\": \"REST GET (x402, $0.01 USDC) or JSON-RPC (unpaid, get_quote answers HTTP 402 with the payment terms)\",\r\n        \"rest\": \"GET /api/quote?from={from_token}&to={to_token}&amount={amount}&to_address={optional}\",\r\n        \"jsonrpc\": {\r\n          \"method\": \"tasks/send\",\r\n          \"params\": {\r\n            \"skill_id\": \"get_quote\",\r\n            \"arguments\": {\r\n              \"from_token\": \"string — token symbol (USDC, WETH, DAI, XMR, ...)\",\r\n              \"to_token\": \"string — token symbol\",\r\n              \"amount\": \"number, or a decimal string for XMR (never a float)\",\r\n              \"to_address\": \"string (optional) — destination address; lets the XMR route price destination costs\"\r\n            }\r\n          }\r\n        }\r\n      },\r\n      \"output\": {\r\n        \"quote\": {\r\n          \"settlement_path\": \"escrow | quote_only | wagyu_route\",\r\n          \"from_token\": \"string\",\r\n          \"to_token\": \"string\",\r\n          \"from_amount\": \"number | decimal string\",\r\n          \"to_amount\": \"number | decimal string\",\r\n          \"route_legs\": \"array\",\r\n          \"proofs\": \"[] on a quote\",\r\n          \"escrow_and_cow_pairs\": {\r\n            \"rate\": \"number\",\r\n            \"usd_value\": \"number\",\r\n            \"protocol_fee_bps\": 25,\r\n            \"escrow_contract\": \"address\",\r\n            \"valid_for_seconds\": 60\r\n          },\r\n          \"xmr_route\": {\r\n            \"counterparty\": \"Wagyu (wagyu.xyz)\",\r\n            \"custody\": \"MENTAT never holds XMR ... Not trustless.\",\r\n            \"from_amount_atomic\": \"string\",\r\n            \"to_amount_atomic\": \"string\",\r\n            \"effective_cost_bps\": \"number (all-in: Wagyu's costs plus MENTAT's fee)\",\r\n            \"mentat_fee_bps\": 25,\r\n            \"mentat_fee_note\": \"string\",\r\n            \"integrator_fee\": \"{ feePercent, feeAmountUsd, feeAddress } as reported by Wagyu\",\r\n            \"tool_used\": \"string\",\r\n            \"estimated_time_seconds\": \"number\",\r\n            \"direction\": \"sell | buy\",\r\n            \"min_notional_usd\": \"25 | 500\",\r\n            \"max_notional_usd\": 5000,\r\n            \"valid_for_seconds\": 30,\r\n            \"reference\": \"{ source: hyperliquid, perp_mark, spot_mid, depth_1pct_usd, depth_side, divergence_pct, observed_at }\",\r\n            \"tier_max_notional_usd\": 5000,\r\n            \"depth_cap_usd\": \"number — half of the 1% depth on the side the order hits\"\r\n          }\r\n        }\r\n      },\r\n      \"examples\": [\r\n        \"Get a quote for swapping 1000 USDC to WETH\",\r\n        \"Quote 0.1 XMR to USDC on Base\",\r\n        \"How much XMR do I get for 600 USDC?\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"create_xmr_order\",\r\n      \"name\": \"Create XMR Order (Wagyu route)\",\r\n      \"description\": \"Create a durable XMR order routed through Wagyu: XMR -> USDC on Base or USDC on Base -> XMR. Returns the venue's exact deposit address, amount, and expiry (the funding instruction), settlement_path wagyu_route, route_legs, and proofs[] (empty until each leg confirms). MENTAT earns a 25 bps integrator fee applied inside Wagyu's quoted amount (mentat_fee_bps). Wagyu is the settlement counterparty; MENTAT never holds XMR; not trustless.\",\r\n      \"tags\": [\r\n        \"xmr\",\r\n        \"monero\",\r\n        \"wagyu\",\r\n        \"hyperliquid\",\r\n        \"order\"\r\n      ],\r\n      \"input\": {\r\n        \"method\": \"JSON-RPC or REST POST\",\r\n        \"rest\": \"POST /api/xmr/orders (JSON body with the same arguments)\",\r\n        \"jsonrpc\": {\r\n          \"method\": \"tasks/send\",\r\n          \"params\": {\r\n            \"skill_id\": \"create_xmr_order\",\r\n            \"arguments\": {\r\n              \"from_token\": \"XMR | USDC\",\r\n              \"to_token\": \"USDC | XMR\",\r\n              \"amount\": \"decimal string — amount of from_token (e.g. \\\"0.1\\\")\",\r\n              \"to_address\": \"string — destination address on the destination chain (required)\",\r\n              \"refund_address\": \"string (optional) — refund address on the source chain\"\r\n            }\r\n          }\r\n        }\r\n      },\r\n      \"output\": {\r\n        \"order\": {\r\n          \"order_id\": \"string\",\r\n          \"settlement_path\": \"wagyu_route\",\r\n          \"status\": \"awaiting_deposit\",\r\n          \"deposit\": {\r\n            \"address\": \"string\",\r\n            \"chain\": \"monero | base\",\r\n            \"token\": \"XMR | USDC\",\r\n            \"amount\": \"decimal string\",\r\n            \"amount_atomic\": \"string\"\r\n          },\r\n          \"to_address\": \"string\",\r\n          \"expected_output\": \"decimal string\",\r\n          \"mentat_fee_bps\": 25,\r\n          \"mentat_fee_usd\": \"decimal string | null\",\r\n          \"expires_at\": \"ISO 8601\",\r\n          \"route_legs\": \"array\",\r\n          \"proofs\": \"[]\",\r\n          \"next_steps\": \"array of instructions\",\r\n          \"status_check\": \"{ skill: check_xmr_order, arguments: { order_id, to_address } }\",\r\n          \"reference\": \"the quote-time Hyperliquid reference\"\r\n        },\r\n        \"quote\": \"the quote the order was created from\"\r\n      },\r\n      \"examples\": [\r\n        \"Create an order: 0.1 XMR to USDC, pay out to 0xYourBaseAddress\",\r\n        \"Buy XMR with 600 USDC, deliver to 4AdUnd...\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"check_xmr_order\",\r\n      \"name\": \"Check XMR Order (Wagyu route)\",\r\n      \"description\": \"Status of an XMR order by order_id plus its to_address (the destination address is the read proof; a mismatch is not found). Returns the three legs (source-chain confirmations, Hyperliquid swap, destination delivery) and proofs[]: the Monero deposit tx hash, one fill_tx per Hyperliquid fill hash, and the destination payout tx hash. Fill hashes are appended as Wagyu saves them, including after completion.\",\r\n      \"tags\": [\r\n        \"xmr\",\r\n        \"status\",\r\n        \"proofs\",\r\n        \"wagyu\"\r\n      ],\r\n      \"input\": {\r\n        \"method\": \"JSON-RPC or REST GET\",\r\n        \"rest\": \"GET /api/xmr/orders/{order_id}?to_address={to_address}\",\r\n        \"jsonrpc\": {\r\n          \"method\": \"tasks/send\",\r\n          \"params\": {\r\n            \"skill_id\": \"check_xmr_order\",\r\n            \"arguments\": {\r\n              \"order_id\": \"string — from create_xmr_order\",\r\n              \"to_address\": \"string — the order's destination address\"\r\n            }\r\n          }\r\n        }\r\n      },\r\n      \"output\": {\r\n        \"order\": {\r\n          \"order_id\": \"string\",\r\n          \"settlement_path\": \"wagyu_route\",\r\n          \"status\": \"awaiting_deposit | processing | completed | refunded | failed | expired\",\r\n          \"stage\": \"string | null\",\r\n          \"action_required\": \"string | null\",\r\n          \"legs\": {\r\n            \"source\": {\r\n              \"state\": \"pending | observed | confirming | done\",\r\n              \"confirmations\": \"number\",\r\n              \"required_confirmations\": \"number\",\r\n              \"tx_hash\": \"string | null\"\r\n            },\r\n            \"hyperliquid\": {\r\n              \"state\": \"pending | trading | done\",\r\n              \"fill_count\": \"number\",\r\n              \"receipts_status\": \"pending | complete | incomplete\",\r\n              \"tx_hashes\": \"string[]\"\r\n            },\r\n            \"destination\": {\r\n              \"state\": \"pending | sending | done\",\r\n              \"tx_hash\": \"string | null\"\r\n            }\r\n          },\r\n          \"proofs\": \"[{ chain: monero|base|hyperliquid, kind: deposit_tx|fill_tx|payout_tx, hash, explorer_url }]\",\r\n          \"reference\": \"the live Hyperliquid reference\",\r\n          \"reference_warning\": \"string | absent — present when the live reference would refuse a new quote; the order itself is never failed by it\"\r\n        }\r\n      },\r\n      \"examples\": [\r\n        \"Check XMR order ord_... for 0xYourBaseAddress\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"get_route_status\",\r\n      \"name\": \"Route Status\",\r\n      \"description\": \"Whether XMR routing is live or paused (a Wagyu 503 unavailable pauses it), with the pause deadline and reason, plus the list of settlement paths.\",\r\n      \"tags\": [\r\n        \"status\",\r\n        \"xmr\",\r\n        \"routing\"\r\n      ],\r\n      \"input\": {\r\n        \"method\": \"REST GET or JSON-RPC\",\r\n        \"rest\": \"GET /api/routes\",\r\n        \"jsonrpc\": {\r\n          \"method\": \"tasks/send\",\r\n          \"params\": {\r\n            \"skill_id\": \"get_route_status\",\r\n            \"arguments\": {}\r\n          }\r\n        }\r\n      },\r\n      \"output\": {\r\n        \"settlement_paths\": [\r\n          \"escrow\",\r\n          \"cow_relay\",\r\n          \"wagyu_route\"\r\n        ],\r\n        \"routes\": {\r\n          \"wagyu_route\": {\r\n            \"paused\": \"boolean\",\r\n            \"until\": \"ISO 8601 | null\",\r\n            \"reason\": \"string | null\",\r\n            \"display\": \"XMR routing live | XMR routing paused\",\r\n            \"minimums_usd\": {\r\n              \"sell_xmr\": 25,\r\n              \"buy_xmr\": 500\r\n            }\r\n          }\r\n        }\r\n      },\r\n      \"examples\": [\r\n        \"Is XMR routing paused?\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"execute_trade\",\r\n      \"name\": \"Execute Escrow Trade\",\r\n      \"description\": \"Create an escrow deal on Base through the FloorEscrow V2 contract (settlement_path escrow). Both parties deposit, settlement is atomic, no admin keys. Returns the create tx as the first proof. A deployment may keep A2A execution switched off: then the answer is code execution_disabled with the V2 escrow address, and the Telegram bot or the contract is the way to open a deal. Web deals (mentat.market/new and deal links) settle through FloorEscrow V3 and need no skill.\",\r\n      \"tags\": [\r\n        \"trade\",\r\n        \"escrow\",\r\n        \"swap\",\r\n        \"settlement\"\r\n      ],\r\n      \"input\": {\r\n        \"method\": \"JSON-RPC\",\r\n        \"jsonrpc\": {\r\n          \"method\": \"tasks/send\",\r\n          \"params\": {\r\n            \"skill_id\": \"execute_trade\",\r\n            \"arguments\": {\r\n              \"from_token\": \"string — token symbol\",\r\n              \"to_token\": \"string — token symbol\",\r\n              \"amount\": \"number — amount of from_token\"\r\n            }\r\n          }\r\n        }\r\n      },\r\n      \"output\": {\r\n        \"trade\": {\r\n          \"trade_id\": \"bytes32\",\r\n          \"status\": \"Created\",\r\n          \"escrow_contract\": \"address\",\r\n          \"create_tx\": \"tx hash\",\r\n          \"basescan_url\": \"string\",\r\n          \"settlement_path\": \"escrow\",\r\n          \"route_legs\": \"array\",\r\n          \"proofs\": \"[{ chain: base, kind: escrow_create_tx, hash, explorer_url }]\",\r\n          \"next_steps\": \"Buyer and seller must approve + deposit tokens\"\r\n        },\r\n        \"quote\": \"same as get_quote output\",\r\n        \"error_codes\": [\r\n          \"execution_disabled\"\r\n        ]\r\n      },\r\n      \"examples\": [\r\n        \"Swap 1000 USDC for DAI through escrow\",\r\n        \"Execute trade: 5000 USDC to WETH\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"check_trade\",\r\n      \"name\": \"Check Escrow Trade\",\r\n      \"description\": \"On-chain status of a FloorEscrow V2 deal by its trade ID, with settlement_path, route_legs, and proofs[]. A FloorEscrow V3 web deal is read at mentat.market/deal/{id}.\",\r\n      \"tags\": [\r\n        \"status\",\r\n        \"trade\",\r\n        \"escrow\"\r\n      ],\r\n      \"input\": {\r\n        \"method\": \"JSON-RPC\",\r\n        \"jsonrpc\": {\r\n          \"method\": \"tasks/send\",\r\n          \"params\": {\r\n            \"skill_id\": \"check_trade\",\r\n            \"arguments\": {\r\n              \"trade_id\": \"bytes32 — the escrow trade ID\"\r\n            }\r\n          }\r\n        }\r\n      },\r\n      \"output\": {\r\n        \"trade\": {\r\n          \"trade_id\": \"bytes32\",\r\n          \"status\": \"Created | BuyerDeposited | SellerDeposited | BothDeposited | Settled | Expired | Refunded\",\r\n          \"buyer\": \"address\",\r\n          \"seller\": \"address\",\r\n          \"buy_token\": \"address\",\r\n          \"sell_token\": \"address\",\r\n          \"settlement_path\": \"escrow\",\r\n          \"route_legs\": \"array\",\r\n          \"proofs\": \"array\"\r\n        }\r\n      },\r\n      \"examples\": [\r\n        \"Check trade status for 0x8cb14ec9...\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"get_prices\",\r\n      \"name\": \"Get Live Prices\",\r\n      \"description\": \"Current CoinGecko prices for the escrow and CoW pairs. XMR is priced live by the Wagyu route at quote time.\",\r\n      \"tags\": [\r\n        \"prices\",\r\n        \"market\",\r\n        \"rates\"\r\n      ],\r\n      \"input\": {\r\n        \"method\": \"REST GET or JSON-RPC\",\r\n        \"rest\": \"GET /api/prices\",\r\n        \"jsonrpc\": {\r\n          \"method\": \"tasks/send\",\r\n          \"params\": {\r\n            \"skill_id\": \"get_prices\",\r\n            \"arguments\": {}\r\n          }\r\n        }\r\n      },\r\n      \"output\": {\r\n        \"prices\": {\r\n          \"TOKEN\": {\r\n            \"usd\": \"number\",\r\n            \"change_24h\": \"number\"\r\n          }\r\n        },\r\n        \"source\": \"coingecko\",\r\n        \"updated_at\": \"ISO 8601\"\r\n      },\r\n      \"examples\": [\r\n        \"What are the current token prices?\",\r\n        \"Get live crypto prices\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"prepare_trade\",\r\n      \"name\": \"Prepare CoW Order\",\r\n      \"description\": \"Build a CoW Protocol order for the calling agent's wallet to sign (settlement_path cow_relay). MENTAT returns the EIP-712 typed data, the appData document with MENTAT's 25 bps partnerFee baked in, a CoW quote, and a preflight check on the trader's sell-token balance and GPv2VaultRelayer allowance. The trader signs locally — MENTAT never custodies funds. The 25 bps fee is enforced because the appData hash is part of what the trader signs.\",\r\n      \"tags\": [\r\n        \"cow\",\r\n        \"swap\",\r\n        \"relay\",\r\n        \"eip-712\",\r\n        \"prepare\",\r\n        \"sign\"\r\n      ],\r\n      \"input\": {\r\n        \"method\": \"JSON-RPC\",\r\n        \"jsonrpc\": {\r\n          \"method\": \"tasks/send\",\r\n          \"params\": {\r\n            \"skill_id\": \"prepare_trade\",\r\n            \"arguments\": {\r\n              \"sell_token\": \"string — token symbol (USDC, USDT, USDbC, DAI, WETH)\",\r\n              \"buy_token\": \"string — token symbol\",\r\n              \"sell_amount\": \"number — amount of sell_token (human units)\",\r\n              \"trader_address\": \"string — 0x address of the calling agent's wallet\",\r\n              \"valid_for_seconds\": \"number (optional) — order validity window, default 1800\"\r\n            }\r\n          }\r\n        }\r\n      },\r\n      \"output\": {\r\n        \"order\": \"GPv2Order struct (sellToken, buyToken, receiver, sellAmount, buyAmount, validTo, appData, feeAmount, kind, partiallyFillable, sellTokenBalance, buyTokenBalance)\",\r\n        \"typed_data\": {\r\n          \"domain\": \"EIP-712 domain for Gnosis Protocol v2 on Base\",\r\n          \"types\": \"EIP-712 Order struct types\",\r\n          \"primaryType\": \"Order\",\r\n          \"message\": \"the order struct to sign\"\r\n        },\r\n        \"app_data\": {\r\n          \"hash\": \"bytes32 — keccak256 of the canonical appData JSON, signed inside the order\",\r\n          \"document\": \"the appData JSON object with MENTAT's partnerFee\",\r\n          \"full_string\": \"canonical JSON string — submit this with the signed order\"\r\n        },\r\n        \"quote_summary\": \"human-readable amounts, rate, validTo\",\r\n        \"partner_fee\": \"{ bps: 25, recipient: MENTAT treasury, note }\",\r\n        \"preflight\": \"{ balance, allowance, sufficient_balance, sufficient_allowance }\",\r\n        \"relayer\": \"{ address, approve_calldata, approve_to } — for one-time GPv2VaultRelayer approval if needed\",\r\n        \"next_steps\": \"array of human instructions\",\r\n        \"venue\": \"cow-protocol\",\r\n        \"settlement_path\": \"cow_relay\",\r\n        \"route_legs\": \"array\",\r\n        \"proofs\": \"[]\"\r\n      },\r\n      \"examples\": [\r\n        \"Prepare a CoW order to swap 1000 USDC for WETH from 0xMyAgent\",\r\n        \"Build a sell order: 0.5 WETH to USDC, trader 0xabc...\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"submit_signed_trade\",\r\n      \"name\": \"Submit Signed CoW Order\",\r\n      \"description\": \"Forward a trader-signed CoW order to the CoW order book on Base. MENTAT re-checks the appData hash matches MENTAT's partnerFee doc, validates the EIP-712 signature locally (rejects if recovered != trader_address), then POSTs to api.cow.fi. Returns the orderUid (first proof) and CoW explorer URL. Solvers fill in the next batch (~30s).\",\r\n      \"tags\": [\r\n        \"cow\",\r\n        \"swap\",\r\n        \"relay\",\r\n        \"submit\",\r\n        \"settle\"\r\n      ],\r\n      \"input\": {\r\n        \"method\": \"JSON-RPC\",\r\n        \"jsonrpc\": {\r\n          \"method\": \"tasks/send\",\r\n          \"params\": {\r\n            \"skill_id\": \"submit_signed_trade\",\r\n            \"arguments\": {\r\n              \"order\": \"GPv2Order struct from prepare_trade\",\r\n              \"signature\": \"string — 0x-prefixed 65-byte EIP-712 signature (132 hex chars)\",\r\n              \"trader_address\": \"string — must match the EIP-712 signer\"\r\n            }\r\n          }\r\n        }\r\n      },\r\n      \"output\": {\r\n        \"order_uid\": \"0x... — 56-byte CoW order UID\",\r\n        \"explorer_url\": \"https://explorer.cow.fi/base/orders/{uid}\",\r\n        \"status\": \"open\",\r\n        \"venue\": \"cow-protocol\",\r\n        \"settlement_path\": \"cow_relay\",\r\n        \"route_legs\": \"array\",\r\n        \"proofs\": \"[{ chain: base, kind: cow_order_uid, hash: order_uid, explorer_url }]\",\r\n        \"trader\": \"address\",\r\n        \"sell_token\": \"address\",\r\n        \"buy_token\": \"address\",\r\n        \"sell_amount\": \"uint256 string\",\r\n        \"buy_amount\": \"uint256 string\",\r\n        \"valid_to\": \"unix timestamp\",\r\n        \"partner_fee\": \"{ bps: 25, recipient }\"\r\n      },\r\n      \"examples\": [\r\n        \"Submit signed order with signature 0x... and trader 0xabc...\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"check_cow_order\",\r\n      \"name\": \"Check CoW Order\",\r\n      \"description\": \"Look up the live status of a CoW order by its 56-byte orderUid. Returns the order's state (open, fulfilled, cancelled, expired), executed sell/buy amounts, and proofs[] with one settlement_tx per batch that filled it.\",\r\n      \"tags\": [\r\n        \"cow\",\r\n        \"status\",\r\n        \"order\",\r\n        \"track\"\r\n      ],\r\n      \"input\": {\r\n        \"method\": \"JSON-RPC\",\r\n        \"jsonrpc\": {\r\n          \"method\": \"tasks/send\",\r\n          \"params\": {\r\n            \"skill_id\": \"check_cow_order\",\r\n            \"arguments\": {\r\n              \"order_uid\": \"string — 0x-prefixed 56-byte CoW order UID\"\r\n            }\r\n          }\r\n        }\r\n      },\r\n      \"output\": {\r\n        \"order_uid\": \"string\",\r\n        \"status\": \"open | fulfilled | cancelled | expired\",\r\n        \"executed_sell_amount\": \"uint256 string\",\r\n        \"executed_buy_amount\": \"uint256 string\",\r\n        \"sell_token\": \"address\",\r\n        \"buy_token\": \"address\",\r\n        \"from\": \"trader address\",\r\n        \"valid_to\": \"unix timestamp\",\r\n        \"explorer_url\": \"https://explorer.cow.fi/base/orders/{uid}\",\r\n        \"venue\": \"cow-protocol\",\r\n        \"settlement_path\": \"cow_relay\",\r\n        \"route_legs\": \"array\",\r\n        \"proofs\": \"[{ kind: cow_order_uid }, { kind: settlement_tx, hash, explorer_url }...]\"\r\n      },\r\n      \"examples\": [\r\n        \"Check CoW order 0x...\"\r\n      ]\r\n    }\r\n  ],\r\n  \"operator_key\": {\r\n    \"address\": \"0xE6f26F05C956D1833A1DAaaAD57CD0a1E626bfd3\",\r\n    \"roles\": [\r\n      \"owner of ERC-8004 Agent #31596 (ownerOf(31596) on the Identity Registry)\",\r\n      \"immutable treasury of FloorEscrow V2 (treasury(); feeBps() = 25)\"\r\n    ],\r\n    \"signs\": [\r\n      \"FloorEscrow V2 createEscrow: gated on identityRegistry.ownerOf(agentId) == msg.sender; records deal terms, moves no tokens, duration <= 7 days, tradeId not reusable\",\r\n      \"FloorEscrow V2 settle: permissionless, only when BothDeposited; 25 bps of each side to the immutable treasury, the rest to the counterparty named in the deal\",\r\n      \"IdentityRegistry.setAgentURI: agent metadata, operator script only\"\r\n    ],\r\n    \"can_like_anyone\": [\r\n      \"FloorEscrow V2 refund (after expiry, full refund to the depositor, no fee)\",\r\n      \"FloorEscrow V2 getTrade (read)\"\r\n    ],\r\n    \"floor_escrow_v3\": \"No special role. V3 has no operator-gated function: the maker alone creates, funds and cancels a deal, any taker fills it, and its fee recipient is a separate immutable address (treasury()), not this key.\",\r\n    \"cannot\": [\r\n      \"withdraw or sweep escrowed tokens (no such function)\",\r\n      \"change the fee or the treasury (immutable)\",\r\n      \"pause, upgrade, or kill the contract (no owner, no proxy, no admin role)\",\r\n      \"amend or cancel a deal before expiry\",\r\n      \"deposit or move a counterparty's tokens (depositBuyer/depositSeller pull from msg.sender only)\",\r\n      \"settle early or redirect a settlement\"\r\n    ],\r\n    \"not_used_by\": [\r\n      \"get_quote\",\r\n      \"check_trade\",\r\n      \"get_prices\",\r\n      \"get_route_status\",\r\n      \"cow_relay (the trader signs; MENTAT forwards to api.cow.fi)\",\r\n      \"wagyu_route (HTTPS API credential, no chain signing, MENTAT never holds XMR)\",\r\n      \"mcp (the same handlers on the same host; signs nothing itself)\"\r\n    ],\r\n    \"without_key\": \"Without PRIVATE_KEY, or with A2A execution switched off, execute_trade answers code execution_disabled with the V2 escrow address; everything else is unaffected.\"\r\n  },\r\n  \"authentication\": {\r\n    \"required\": false,\r\n    \"note\": \"No API key needed. Quotes cost $0.01 USDC via x402: the paid call is REST GET /api/quote with an x402 payment header, and an unpaid get_quote over JSON-RPC answers HTTP 402 with the payment terms. The other JSON-RPC skills, order status, route status, and prices are free. CoW relay requires the calling agent's own wallet to sign orders — MENTAT never holds keys for the trader. The XMR route needs a to_address on the destination chain; the same address is the read proof for check_xmr_order. Escrow execution (execute_trade) signs createEscrow with the operator key; operator_key states exactly what that key can and cannot do.\"\r\n  },\r\n  \"capabilities\": {\r\n    \"streaming\": false,\r\n    \"push_notifications\": false,\r\n    \"protocols\": [\r\n      \"google-a2a\",\r\n      \"json-rpc-2.0\",\r\n      \"rest\",\r\n      \"x402\",\r\n      \"mcp\",\r\n      \"cow-protocol\",\r\n      \"eip-712\",\r\n      \"erc-8004\"\r\n    ],\r\n    \"settlement_paths\": [\r\n      \"escrow\",\r\n      \"cow_relay\",\r\n      \"wagyu_route\"\r\n    ]\r\n  },\r\n  \"price_reference\": {\r\n    \"source\": \"hyperliquid\",\r\n    \"applies_to\": \"every XMR quote and order response (reference block)\",\r\n    \"fields\": {\r\n      \"perp_mark\": \"XMR perpetual mark price\",\r\n      \"spot_mid\": \"XMR1/USDC spot mid (pair @260)\",\r\n      \"depth_1pct_usd\": \"resting size within 1% of mid on the side the order hits\",\r\n      \"depth_side\": \"bids when selling XMR, asks when buying\",\r\n      \"divergence_pct\": \"perp mark vs spot mid\",\r\n      \"observed_at\": \"ISO 8601\"\r\n    },\r\n    \"quote_only_fields\": {\r\n      \"tier_max_notional_usd\": 5000,\r\n      \"depth_cap_usd\": \"half of depth_1pct_usd; the per-order cap is the smaller of the two\"\r\n    },\r\n    \"refusal_codes\": {\r\n      \"price_divergence\": \"perp mark and spot mid differ by more than 1%\",\r\n      \"price_stale\": \"a reading older than 60 seconds\",\r\n      \"price_unavailable\": \"Hyperliquid could not be read\"\r\n    },\r\n    \"on_orders\": \"a created order carries the quote-time reference; check_xmr_order re-reads the live one and adds reference_warning if it would refuse now, never failing the order\"\r\n  }\r\n}\n\nArchive v1.4.3: 4 files, 17132 bytes\n\nFiles: clawhub-skill.json (28908b), skill-card.md (2043b), SKILL.md (19494b), _meta.json (125b)\n\nFile v1.4.3:SKILL.md\n\n---\r\nname: mentat\r\ndescription: MENTAT, the agent-native OTC venue. Escrow settlement on Base (atomic, no admin keys), CoW Protocol relay (agent-signed, MEV-protected), and an XMR route via Wagyu (XMR/USDC both directions, three legs, one proof per leg). Every quote and order response carries settlement_path, route_legs, and proofs[].\r\nversion: 1.4.3\r\nmetadata:\r\n  openclaw:\r\n    requires:\r\n      bins:\r\n        - curl\r\n    emoji: \"🟩\"\r\n    homepage: https://mentat.market\r\n---\r\n\r\n# MENTAT — the agent-native OTC venue\r\n\r\nDisciplined intelligence. MENTAT settles token swaps for agents three ways, and every fill carries whatever its chain can prove.\r\n\r\n| settlement_path | What settles | Trust model | Proofs |\r\n|---|---|---|---|\r\n| `escrow` | 1:1 swap through the FloorEscrow contract on Base. Both sides deposit, one atomic settlement, 25 bps fee. | Trustless: no owner, no pause, no upgrade. | `escrow_create_tx`, then deposits and settlement on the contract page. |\r\n| `cow_relay` | The calling agent signs an EIP-712 order; MENTAT relays it to CoW Protocol's batch auction on Base. 25 bps partner fee inside the signed appData. | Non-custodial: MENTAT never holds funds. | `cow_order_uid`, then one `settlement_tx` per batch that filled it. |\r\n| `wagyu_route` | XMR in or out. XMR is routed through XMR1 on Hyperliquid by Wagyu, the settlement counterparty. MENTAT never holds XMR. 25 bps integrator fee applied inside Wagyu's quoted amount. | **Not trustless.** You rely on Wagyu to deliver; the route gives you a proof per leg instead. | `deposit_tx` (Monero hash on XMR legs), one `fill_tx` per Hyperliquid fill hash, `payout_tx`. |\r\n\r\nERC-8004 Agent #31596 on Base Mainnet. Contact: desk@mentat.market.\r\n\r\n## Response contract\r\n\r\nEvery quote and order response carries:\r\n\r\n- `settlement_path`: `escrow`, `cow_relay`, `wagyu_route`, or `quote_only` (a price with no executable path).\r\n- `route_legs[]`: the legs of that path, each `{ leg, name, chain, chain_id, proof_kind, proofs }` where `proofs` says how many proofs the leg can carry (`one`, `one or many`, `zero, one, or many`).\r\n- `proofs[]`: `{ chain, kind, hash, explorer_url }`, one entry per hash the chain has exposed so far. Empty on a quote. Nothing is inferred: a leg without a hash yet has no entry.\r\n\r\nAmounts on the XMR route are decimal strings. Never send a float.\r\n\r\n## Quick start\r\n\r\n### Quote (REST, x402-paid, $0.01 USDC on Base)\r\n\r\n```bash\r\ncurl -s \"https://api.mentat.market/api/quote?from=USDC&to=WETH&amount=1000\" | jq\r\n```\r\n\r\n### Quote (JSON-RPC / A2A)\r\n\r\n```bash\r\ncurl -s -X POST https://api.mentat.market/a2a \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\"jsonrpc\":\"2.0\",\"method\":\"tasks/send\",\"params\":{\"skill_id\":\"get_quote\",\"arguments\":{\"from_token\":\"USDC\",\"to_token\":\"WETH\",\"amount\":1000}},\"id\":1}'\r\n```\r\n\r\n### Live prices (free)\r\n\r\n```bash\r\ncurl -s \"https://api.mentat.market/api/prices\" | jq\r\n```\r\n\r\n## XMR route (settlement_path `wagyu_route`)\r\n\r\nPairs: XMR ↔ USDC on Base, both directions. Minimums are direction-aware: **sell XMR from $25, buy XMR from $500** (below $500 a buy loses most of its value to Hyperliquid size rounding). Maximum $5,000 per order. MENTAT earns a 25 bps integrator fee on every order, applied inside Wagyu's quoted amount: it is already included in `to_amount`, reported by Wagyu as `integrator_fee`, and counted in `effective_cost_bps`, the all-in number.\r\n\r\n### 1. Quote 0.1 XMR → USDC\r\n\r\n```bash\r\ncurl -s -X POST https://api.mentat.market/a2a \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\"jsonrpc\":\"2.0\",\"method\":\"tasks/send\",\"params\":{\"skill_id\":\"get_quote\",\"arguments\":{\"from_token\":\"XMR\",\"to_token\":\"USDC\",\"amount\":\"0.1\",\"to_address\":\"0xYourBaseAddress\"}},\"id\":1}'\r\n```\r\n\r\nResponse (abridged):\r\n\r\n```json\r\n{\r\n  \"quote\": {\r\n    \"venue\": \"wagyu\",\r\n    \"settlement_path\": \"wagyu_route\",\r\n    \"counterparty\": \"Wagyu (wagyu.xyz)\",\r\n    \"custody\": \"MENTAT never holds XMR. Wagyu is the settlement counterparty; XMR in and out is routed through XMR1 on Hyperliquid. Not trustless.\",\r\n    \"from_token\": \"XMR\", \"to_token\": \"USDC\",\r\n    \"from_chain\": \"monero\", \"to_chain\": \"base\",\r\n    \"from_amount\": \"0.1\", \"to_amount\": \"50.409916\",\r\n    \"from_amount_atomic\": \"100000000000\", \"to_amount_atomic\": \"50409916\",\r\n    \"from_amount_usd\": \"51.45\", \"effective_cost_bps\": 169,\r\n    \"mentat_fee_bps\": 25, \"mentat_fee_note\": \"Included in to_amount; reported by Wagyu as integrator_fee; counted in effective_cost_bps.\",\r\n    \"integrator_fee\": { \"feePercent\": 0.25, \"feeAmountUsd\": 0.13, \"feeAddress\": \"0xMentatFeeAddress\" },\r\n    \"tool_used\": \"stargateV2\", \"estimated_time_seconds\": 623,\r\n    \"direction\": \"sell\", \"min_notional_usd\": 25, \"max_notional_usd\": 5000,\r\n    \"tier_max_notional_usd\": 5000, \"depth_cap_usd\": 184516,\r\n    \"valid_for_seconds\": 30,\r\n    \"reference\": { \"source\": \"hyperliquid\", \"perp_mark\": 551.08, \"spot_mid\": 550.98, \"depth_1pct_usd\": 369032, \"depth_side\": \"asks\", \"divergence_pct\": 0.02, \"observed_at\": \"2026-09-23T20:30:00.000Z\" },\r\n    \"route_legs\": [\r\n      { \"leg\": 1, \"name\": \"source\", \"chain\": \"monero\", \"chain_id\": 0, \"proof_kind\": \"deposit_tx\", \"proofs\": \"one\" },\r\n      { \"leg\": 2, \"name\": \"hyperliquid_swap\", \"chain\": \"hyperliquid\", \"chain_id\": 1337, \"proof_kind\": \"fill_tx\", \"proofs\": \"zero, one, or many\" },\r\n      { \"leg\": 3, \"name\": \"destination\", \"chain\": \"base\", \"chain_id\": 8453, \"proof_kind\": \"payout_tx\", \"proofs\": \"one\" }\r\n    ],\r\n    \"proofs\": [],\r\n    \"note\": \"An estimate, not a funding instruction. Create an order to receive the exact deposit address, amount, and expiry.\"\r\n  }\r\n}\r\n```\r\n\r\nA quote is an estimate. Only the created order's deposit address, amount, and expiry are the funding instruction.\r\n\r\n### The price reference (Hyperliquid)\r\n\r\nEvery XMR quote is checked against Hyperliquid before Wagyu is asked, and every XMR quote and order response carries the reading in `reference`:\r\n\r\n```json\r\n\"reference\": { \"source\": \"hyperliquid\", \"perp_mark\": 551.08, \"spot_mid\": 550.98, \"depth_1pct_usd\": 369032, \"depth_side\": \"asks\", \"divergence_pct\": 0.02, \"observed_at\": \"2026-09-23T20:30:00.000Z\" }\r\n```\r\n\r\n- `perp_mark` is the XMR perpetual mark price; `spot_mid` is the XMR1/USDC spot mid (pair `@260`). A quote is refused with code `price_divergence` when they disagree by more than 1%, `price_stale` when either reading is older than 60 seconds, and `price_unavailable` when Hyperliquid cannot be read. Nothing is quoted from a single or stale source.\r\n- `depth_1pct_usd` is the resting size within 1% of mid on the side the order hits (`depth_side`: bids when selling XMR, asks when buying). The per-order cap is the smaller of the tier cap and half of that depth; quotes report both as `tier_max_notional_usd` and `depth_cap_usd`, and `above_maximum` says which one bound.\r\n- A created order carries the quote-time `reference`. `check_xmr_order` re-reads the live one and, if the live check would refuse, adds `reference_warning` to the response; an existing order is never failed by it.\r\n\r\n### 2. Create the order\r\n\r\n`to_address` is required (Base address for USDC, Monero address for XMR). `refund_address` on the source chain is optional.\r\n\r\n```bash\r\ncurl -s -X POST https://api.mentat.market/a2a \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\"jsonrpc\":\"2.0\",\"method\":\"tasks/send\",\"params\":{\"skill_id\":\"create_xmr_order\",\"arguments\":{\"from_token\":\"XMR\",\"to_token\":\"USDC\",\"amount\":\"0.1\",\"to_address\":\"0xYourBaseAddress\"}},\"id\":1}'\r\n```\r\n\r\nREST equivalent: `POST /api/xmr/orders` with the same JSON body. The response's `order.deposit` is the funding instruction and `order.next_steps` spells it out. Send exactly that amount to that address before `order.expires_at`.\r\n\r\n### 3. Check the order: three legs, one proof each\r\n\r\nThe destination address is the read proof. An `order_id` with the wrong `to_address` is simply not found.\r\n\r\n```bash\r\ncurl -s -X POST https://api.mentat.market/a2a \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\"jsonrpc\":\"2.0\",\"method\":\"tasks/send\",\"params\":{\"skill_id\":\"check_xmr_order\",\"arguments\":{\"order_id\":\"ord_1\",\"to_address\":\"0xYourBaseAddress\"}},\"id\":1}'\r\n```\r\n\r\nREST equivalent: `GET /api/xmr/orders/{order_id}?to_address=0x...`. A completed order (abridged):\r\n\r\n```json\r\n{\r\n  \"order\": {\r\n    \"order_id\": \"ord_1\",\r\n    \"settlement_path\": \"wagyu_route\",\r\n    \"status\": \"completed\",\r\n    \"from_token\": \"XMR\", \"to_token\": \"USDC\",\r\n    \"deposit\": { \"address\": \"4AdUnd...\", \"chain\": \"monero\", \"token\": \"XMR\", \"amount\": \"0.1\" },\r\n    \"to_address\": \"0xYourBaseAddress\",\r\n    \"expected_output\": \"50.409916\", \"actual_output\": \"50.38\",\r\n    \"mentat_fee_bps\": 25, \"mentat_fee_usd\": \"0.13\",\r\n    \"legs\": {\r\n      \"source\": { \"state\": \"done\", \"confirmations\": 10, \"required_confirmations\": 10, \"tx_hash\": \"6f1d...c2a9\" },\r\n      \"hyperliquid\": { \"state\": \"done\", \"fill_count\": 2, \"receipts_status\": \"complete\", \"tx_hashes\": [\"0xbc50...e7ee\"] },\r\n      \"destination\": { \"state\": \"done\", \"tx_hash\": \"0x9a3b...41d0\" }\r\n    },\r\n    \"proofs\": [\r\n      { \"chain\": \"monero\", \"kind\": \"deposit_tx\", \"hash\": \"6f1d...c2a9\", \"explorer_url\": \"https://xmrchain.net/tx/6f1d...c2a9\" },\r\n      { \"chain\": \"hyperliquid\", \"kind\": \"fill_tx\", \"hash\": \"0xbc50...e7ee\", \"explorer_url\": \"https://app.hyperliquid.xyz/explorer/tx/0xbc50...e7ee\" },\r\n      { \"chain\": \"base\", \"kind\": \"payout_tx\", \"hash\": \"0x9a3b...41d0\", \"explorer_url\": \"https://basescan.org/tx/0x9a3b...41d0\" }\r\n    ],\r\n    \"status_check\": { \"skill\": \"check_xmr_order\", \"arguments\": { \"order_id\": \"ord_1\", \"to_address\": \"0xYourBaseAddress\" } }\r\n  }\r\n}\r\n```\r\n\r\nSeveral Hyperliquid fills can share one transaction hash; `proofs[]` lists each distinct hash once. Fill hashes are appended as Wagyu saves them, including after `completed`, so poll until `legs.hyperliquid.receipts_status` is `complete`.\r\n\r\n### The paused state\r\n\r\nWhen Wagyu answers 503 unavailable, MENTAT pauses the route instead of retrying. Quotes and order creation answer:\r\n\r\n```json\r\n{ \"error\": \"XMR routing paused\", \"code\": \"routing_paused\", \"routing_paused\": true, \"until\": \"2026-09-14T12:05:00.000Z\", \"retry_after_seconds\": 300 }\r\n```\r\n\r\nREST returns HTTP 503 for it. `get_route_status` (or free `GET /api/routes`) reports `paused`, `until`, and `reason`. Other machine codes: `below_minimum` / `above_maximum` (MENTAT's floor and cap, with the numbers), `no_route` (nearby sizes were tried; change the amount), `amount_below_minimum` (venue minimum), `invalid_request` (never retried), `rate_limited`, `create_uncertain` (creation got no answer and could not be verified: nothing was retried, do not send funds), `price_unavailable` / `price_stale` / `price_divergence` (the Hyperliquid reference refused the quote; see above).\r\n\r\n## CoW relay (settlement_path `cow_relay`)\r\n\r\nStep 1, ask MENTAT to build the order:\r\n\r\n```bash\r\ncurl -s -X POST https://api.mentat.market/a2a \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\"jsonrpc\":\"2.0\",\"method\":\"tasks/send\",\"params\":{\"skill_id\":\"prepare_trade\",\"arguments\":{\"sell_token\":\"USDC\",\"buy_token\":\"WETH\",\"sell_amount\":1000,\"trader_address\":\"0xYourAgentWallet\"}},\"id\":1}'\r\n```\r\n\r\nYou get back `typed_data` (EIP-712 domain, types, message), `app_data` (MENTAT's partnerFee document and hash), `quote_summary`, `preflight` (balance and relayer allowance), and `relayer.approve_calldata` if the GPv2VaultRelayer still needs an approval.\r\n\r\nStep 2, sign locally:\r\n\r\n```js\r\nconst signature = await wallet.signTypedData(typed_data.domain, typed_data.types, typed_data.message);\r\n```\r\n\r\nStep 3, submit through MENTAT:\r\n\r\n```bash\r\ncurl -s -X POST https://api.mentat.market/a2a \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\"jsonrpc\":\"2.0\",\"method\":\"tasks/send\",\"params\":{\"skill_id\":\"submit_signed_trade\",\"arguments\":{\"order\":{...},\"signature\":\"0x...\",\"trader_address\":\"0xYourAgentWallet\"}},\"id\":1}'\r\n```\r\n\r\nReturns `order_uid` (the first proof) and `explorer_url`. `check_cow_order` adds one `settlement_tx` proof per batch that filled the order.\r\n\r\n## Escrow (settlement_path `escrow`)\r\n\r\n```bash\r\ncurl -s -X POST https://api.mentat.market/a2a \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\"jsonrpc\":\"2.0\",\"method\":\"tasks/send\",\"params\":{\"skill_id\":\"execute_trade\",\"arguments\":{\"from_token\":\"USDC\",\"to_token\":\"DAI\",\"amount\":1000}},\"id\":1}'\r\n```\r\n\r\nReturns the deal, `proofs[0]` as the `escrow_create_tx`, and next steps. `check_trade` reads the deal state from the contract. A deployment can keep A2A execution switched off; then `execute_trade` answers code `execution_disabled` with the escrow address, and the Telegram bot or the contract itself is the way to open a deal.\r\n\r\n## What the operator key can and cannot do\r\n\r\nMENTAT's servers hold one Ethereum key, the operator key: the agent wallet `0xE6f26F05C956D1833A1DAaaAD57CD0a1E626bfd3`. On-chain it is the owner of ERC-8004 Agent #31596 (`ownerOf(31596)` on the Identity Registry) and the immutable `treasury` of the FloorEscrow contract (`treasury()`; `feeBps()` = 25). It signs three kinds of transaction and nothing else:\r\n\r\n| Contract | Function | Gate in the contract | Effect |\r\n|---|---|---|---|\r\n| FloorEscrow `0x9EC9…3AA7` | `createEscrow(tradeId, buyer, seller, tokenBuy, tokenSell, amountBuy, amountSell, agentId, duration)` | `identityRegistry.ownerOf(agentId) == msg.sender` | Records the terms of a deal (`execute_trade`, and the Telegram bot's escrow flow). Moves no tokens. Terms are final once written, `duration` is capped at 7 days, a `tradeId` cannot be reused. |\r\n| FloorEscrow | `settle(tradeId)` | none: anyone may call; status must be `BothDeposited` | Pays 25 bps of each side to the immutable treasury and the rest to the counterparty named in the deal. The caller chooses nothing. The Telegram bot calls it as soon as both deposits land. |\r\n| Identity Registry `0x8004…a432` | `setAgentURI(31596, uri)` | ERC-721 owner of the agent NFT | Updates Agent #31596's metadata (the same operator script minted the agent once with `register`). No skill triggers it. |\r\n\r\nLike any address it can also call `refund(tradeId)` (after expiry only; full refund to whoever deposited, no fee) and `getTrade(tradeId)` (read). `depositBuyer` / `depositSeller` accept only the buyer or seller named in the deal and pull tokens from `msg.sender` alone, so the key can deposit only its own tokens, and only where it is itself the named party (the Telegram bot names it as buyer of the deals it opens).\r\n\r\nThe key cannot withdraw or sweep anything from the escrow (no such function exists), change the fee or the treasury (both `immutable`), pause, upgrade, or kill the contract (no owner, no proxy, no admin role), amend or cancel a deal before it expires, deposit or move a counterparty's tokens (approvals go to the contract, never to the key), settle early, or send a settlement anywhere but the addresses stored in the deal. A leaked key could open junk deals, rewrite the agent's metadata or transfer the agent NFT, and spend the wallet's own balance (gas, collected fees, x402 receipts); tokens sitting in escrow would still move only where the contract rules send them.\r\n\r\nNo other server code uses the key. `get_quote`, `check_trade`, `get_prices`, and `get_route_status` only read. The CoW relay never signs: the trader signs, MENTAT forwards the signed order to api.cow.fi. The XMR route talks to Wagyu over HTTPS with an API credential (`WAGYU_INTEGRATOR_KEY`), signs no transaction, and never holds XMR. The MCP endpoint exposes the same skills through the same handlers and holds no key of its own. Without `PRIVATE_KEY`, or with A2A execution switched off, `execute_trade` answers with an error (`execution_disabled`) and the escrow address to call directly; everything else is unaffected.\r\n\r\n## Skills\r\n\r\n| Skill | Path | What it does |\r\n|---|---|---|\r\n| `get_quote` | any | Live quote. XMR pairs answer through the Wagyu route with `settlement_path: \"wagyu_route\"` and the Hyperliquid `reference`. |\r\n| `get_prices` | — | CoinGecko prices for the escrow and CoW pairs. XMR is priced live at quote time. |\r\n| `create_xmr_order` | `wagyu_route` | Durable XMR order; returns the funding instruction. |\r\n| `check_xmr_order` | `wagyu_route` | Three legs and `proofs[]`; needs `order_id` + `to_address`. |\r\n| `get_route_status` | `wagyu_route` | Live or paused, with the pause deadline and reason. |\r\n| `prepare_trade` | `cow_relay` | Build the EIP-712 order for the agent to sign. |\r\n| `submit_signed_trade` | `cow_relay` | Relay the signed order to the CoW order book. |\r\n| `check_cow_order` | `cow_relay` | Order state plus settlement transaction proofs. |\r\n| `execute_trade` | `escrow` | Create an escrow deal on Base. |\r\n| `check_trade` | `escrow` | Read an escrow deal by id. |\r\n\r\n## Supported tokens (Base Mainnet)\r\n\r\n| Token | Address |\r\n|-------|---------|\r\n| USDC | `0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913` |\r\n| USDbC | `0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6Ca` |\r\n| DAI | `0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb` |\r\n| WETH | `0x4200000000000000000000000000000000000006` |\r\n| XMR | native Monero, routed via Wagyu (XMR1 `0xbB2057659bD378D17E2E151BB04bdcaA00000000` on Hyperliquid spot) |\r\n\r\nQuotes only: ETH, BTC, WBTC, UNI, LINK, AAVE.\r\n\r\n## Pricing\r\n\r\nQuotes are at real market rates. MENTAT charges 25 bps on every fill, on every path: escrow (deducted on settlement, immutable in the contract), CoW relay (`partnerFee` inside the appData the trader signs), and the XMR route (a 0.25% integrator fee applied inside Wagyu's quoted amount, so it is already in `to_amount` and reported by Wagyu as `integrator_fee`). On the XMR route `effective_cost_bps` is the all-in number: Wagyu's own costs plus MENTAT's fee.\r\n\r\n## Endpoints\r\n\r\n- Agent card: `https://api.mentat.market/.well-known/agent.json`\r\n- A2A (JSON-RPC): `POST https://api.mentat.market/a2a`\r\n- REST quote (x402): `GET https://api.mentat.market/api/quote?from=XMR&to=USDC&amount=0.1&to_address=0x...`\r\n- REST XMR orders (free): `POST /api/xmr/orders`, `GET /api/xmr/orders/{id}?to_address=0x...`\r\n- Route status (free): `GET https://api.mentat.market/api/routes`\r\n- Prices (free): `GET https://api.mentat.market/api/prices`\r\n- MCP (streamable HTTP): `https://api.mentat.market/mcp` (legacy SSE at `/sse` + `/messages`)\r\n- Public tape (free, read-only): `GET https://api.mentat.market/api/tape?limit=50` (every fill on every path, newest first, keyset `cursor`), `GET https://api.mentat.market/api/tape/{id}` (one receipt), `GET https://api.mentat.market/api/stats` (24h and all-time per path)\r\n- Health: `GET https://api.mentat.market/health`\r\n- Telegram: `https://t.me/FloorOTCbot`\r\n- Web: `https://mentat.market` · public tape and receipts: `https://mentat.market/ledger` (one receipt per fill at `/ledger/{id}`)\r\n\r\n## On-chain\r\n\r\n- Network: Base Mainnet (chain ID 8453)\r\n- Escrow contract (FloorEscrow, name unchanged): `0x9EC9d882C93F52621CBD0d146D3F2e0929E53AA7` (verified on Basescan)\r\n- CoW Settlement: `0x9008D19f58AAbD9eD0D60971565AA8510560ab41`\r\n- CoW VaultRelayer (approve sell tokens here): `0xC92E8bdf79f0507f65a392b0ab4667716BFE0110`\r\n- Identity Registry (ERC-8004): `0x8004A169FB4a3325136EB29fA0ceB6D2e539a432`, Agent ID 31596\r\n\r\nNo authentication. Quotes cost $0.01 USDC via x402; order status, route status, and prices are free.\r\n\r\n## ClawHub\r\n\r\nThis skill was published as `floor-otc`. ClawHub supports renaming an owned skill (`clawhub skill rename floor-otc mentat`, or `POST /api/v1/skills/floor-otc/rename` with `{\"newSlug\":\"mentat\"}`); the previous slug is kept as a redirect alias, so `floor-otc` keeps resolving here.\n\nFile v1.4.3:_meta.json\n\n{\n  \"ownerId\": \"kn7aae8wkdvhpxxqf0kkwfm6ps83t95a\",\n  \"slug\": \"mentat\",\n  \"version\": \"1.4.3\",\n  \"publishedAt\": 1790342990649\n}\n\nFile v1.4.3:skill-card.md\n\n## Description:\n\nHelps agents request OTC token-swap quotes and manage trades through Base escrow, CoW Protocol relay, or an XMR route via Wagyu.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[agora0x](https://clawhub.ai/user/agora0x)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and agents use MENTAT to obtain token-swap quotes, prepare or place orders, and check settlement status and transaction proofs across its supported routes.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Sending funds to an incorrect address or on the basis of an estimated quote can cause loss.\n\nMitigation: Review the created order's exact destination, amount, and expiry before funding; do not treat a quote as funding instructions.\n\nRisk: Token approvals or signed trade data may authorize unwanted transfers or fees.\n\nMitigation: Check typed data, approval targets, amounts, and fees before signing or approving.\n\nRisk: The XMR route depends on Wagyu to deliver and is not trustless; trades may leave public records.\n\nMitigation: Assess counterparty trust and record visibility before using the route, and review its settlement proofs.\n\n## Reference(s):\n\n- [MENTAT on ClawHub](https://clawhub.ai/agora0x/skills/mentat)\n- [MENTAT website](https://mentat.market)\n- [MENTAT agent documentation](https://mentat.market/llms.txt)\n\n## Skill Output:\n\n**Output Type(s):** [JSON, Shell commands, Guidance]\n\n**Output Format:** [JSON API responses and Markdown usage guidance]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Quote and order responses include the settlement path, route legs, and available transaction proofs.]\n\n## Skill Version(s):\n\n1.4.3 (source: skill frontmatter and ClawHub release)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.4.3:clawhub-skill.json\n\n{\n  \"name\": \"mentat\",\n  \"display_name\": \"MENTAT\",\n  \"description\": \"MENTAT: the agent-native OTC venue. Three settlement paths on one response contract: escrow on Base (atomic, no admin keys), CoW Protocol relay (agent-signed EIP-712 orders, MEV-protected, non-custodial), and an XMR route via Wagyu (XMR in/out routed through XMR1 on Hyperliquid; Wagyu is the settlement counterparty; MENTAT never holds XMR; not trustless). Every quote and order response carries settlement_path, route_legs, and proofs[]: one proof per leg, whatever its chain can prove.\",\n  \"tagline\": \"disciplined intelligence\",\n  \"version\": \"1.4.3\",\n  \"previous_slug\": \"floor-otc\",\n  \"author\": \"Agora0x\",\n  \"license\": \"MIT-0\",\n  \"contact\": \"desk@mentat.market\",\n  \"tags\": [\n    \"otc\",\n    \"trading\",\n    \"escrow\",\n    \"defi\",\n    \"swap\",\n    \"base\",\n    \"erc-8004\",\n    \"web3\",\n    \"tokens\",\n    \"agent-economy\",\n    \"cow-protocol\",\n    \"batch-auction\",\n    \"mev-protected\",\n    \"eip-712\",\n    \"relay\",\n    \"xmr\",\n    \"monero\",\n    \"wagyu\",\n    \"hyperliquid\",\n    \"proofs\"\n  ],\n  \"homepage\": \"https://mentat.market\",\n  \"receipts\": \"https://mentat.market/ledger\",\n  \"agent_id\": 31596,\n  \"registry\": \"ERC-8004 Base Mainnet\",\n  \"registry_address\": \"0x8004A169FB4a3325136EB29fA0ceB6D2e539a432\",\n  \"chain\": \"base\",\n  \"chain_id\": 8453,\n  \"escrow_contract\": \"0x9EC9d882C93F52621CBD0d146D3F2e0929E53AA7\",\n  \"cow_settlement\": \"0x9008D19f58AAbD9eD0D60971565AA8510560ab41\",\n  \"cow_vault_relayer\": \"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110\",\n  \"endpoints\": {\n    \"agent_card\": \"https://api.mentat.market/.well-known/agent.json\",\n    \"a2a\": \"https://api.mentat.market/a2a\",\n    \"rest_quote\": \"https://api.mentat.market/api/quote\",\n    \"rest_xmr_orders\": \"https://api.mentat.market/api/xmr/orders\",\n    \"rest_routes\": \"https://api.mentat.market/api/routes\",\n    \"rest_prices\": \"https://api.mentat.market/api/prices\",\n    \"health\": \"https://api.mentat.market/health\",\n    \"telegram\": \"https://t.me/FloorOTCbot\",\n    \"mcp\": \"https://api.mentat.market/mcp\",\n    \"mcp_sse\": \"https://api.mentat.market/sse\",\n    \"rest_tape\": \"https://api.mentat.market/api/tape\",\n    \"rest_tape_receipt\": \"https://api.mentat.market/api/tape/{id}\",\n    \"rest_stats\": \"https://api.mentat.market/api/stats\",\n    \"ledger\": \"https://mentat.market/ledger\",\n    \"llms_txt\": \"https://mentat.market/llms.txt\"\n  },\n  \"supported_tokens\": [\n    {\n      \"symbol\": \"USDC\",\n      \"address\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n      \"decimals\": 6\n    },\n    {\n      \"symbol\": \"USDbC\",\n      \"address\": \"0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6Ca\",\n      \"decimals\": 6\n    },\n    {\n      \"symbol\": \"DAI\",\n      \"address\": \"0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb\",\n      \"decimals\": 18\n    },\n    {\n      \"symbol\": \"WETH\",\n      \"address\": \"0x4200000000000000000000000000000000000006\",\n      \"decimals\": 18\n    },\n    {\n      \"symbol\": \"XMR\",\n      \"chain\": \"monero\",\n      \"decimals\": 12,\n      \"settlement_path\": \"wagyu_route\",\n      \"note\": \"Routed via Wagyu through XMR1 (0xbB2057659bD378D17E2E151BB04bdcaA00000000, Hyperliquid spot). Pairs: XMR/USDC on Base, both directions.\"\n    }\n  ],\n  \"protocol_fee_bps\": 25,\n  \"protocol_fee_note\": \"0.25% on every fill, on every path. CoW relay: routed by solvers via partnerFee in the appData the trader signs. Escrow: deducted from each side on settlement, immutable in the contract. XMR route: a 25 bps integrator fee applied inside Wagyu's quoted amount, already included in to_amount and reported by Wagyu as integrator_fee; effective_cost_bps is the all-in number.\",\n  \"response_contract\": {\n    \"settlement_path\": \"escrow | cow_relay | wagyu_route | quote_only\",\n    \"route_legs\": \"[{ leg, name, chain, chain_id, proof_kind, proofs }]\",\n    \"proofs\": \"[{ chain, kind, hash, explorer_url }] — one entry per hash the chain has exposed; empty on a quote; never inferred\"\n  },\n  \"venues\": {\n    \"cow_relay\": {\n      \"settlement_path\": \"cow_relay\",\n      \"type\": \"off-chain order book + on-chain batch auction\",\n      \"settlement\": \"~30s by CoW solvers\",\n      \"custody\": \"non-custodial — MENTAT never holds funds\",\n      \"trustless\": true,\n      \"mev_protection\": true,\n      \"proofs\": [\n        \"cow_order_uid\",\n        \"settlement_tx (one per filling batch)\"\n      ],\n      \"skills\": [\n        \"prepare_trade\",\n        \"submit_signed_trade\",\n        \"check_cow_order\"\n      ]\n    },\n    \"escrow\": {\n      \"settlement_path\": \"escrow\",\n      \"type\": \"1:1 on-chain escrow (FloorEscrow contract)\",\n      \"settlement\": \"atomic on deposit-by-both-parties\",\n      \"custody\": \"smart contract escrow, no admin keys\",\n      \"trustless\": true,\n      \"proofs\": [\n        \"escrow_create_tx\"\n      ],\n      \"skills\": [\n        \"execute_trade\",\n        \"check_trade\"\n      ]\n    },\n    \"wagyu_route\": {\n      \"settlement_path\": \"wagyu_route\",\n      \"type\": \"XMR in/out routed through XMR1 on Hyperliquid spot\",\n      \"counterparty\": \"Wagyu (wagyu.xyz)\",\n      \"custody\": \"MENTAT never holds XMR\",\n      \"trustless\": false,\n      \"pairs\": [\n        \"XMR/USDC on Base (both directions)\"\n      ],\n      \"minimums_usd\": {\n        \"sell_xmr\": 25,\n        \"buy_xmr\": 500\n      },\n      \"maximum_usd\": 5000,\n      \"fee_bps\": 25,\n      \"fee_note\": \"MENTAT earns a 25 bps integrator fee on every order, applied inside Wagyu's quoted amount: included in to_amount, reported by Wagyu as integrator_fee, counted in effective_cost_bps.\",\n      \"legs\": [\n        \"source chain (deposit_tx; Monero hash on XMR legs)\",\n        \"hyperliquid_swap (fill_tx, zero/one/many)\",\n        \"destination chain (payout_tx)\"\n      ],\n      \"paused_state\": \"A Wagyu 503 unavailable pauses the route; quotes and creates answer code routing_paused (HTTP 503 on REST) with until and retry_after_seconds.\",\n      \"skills\": [\n        \"get_quote\",\n        \"create_xmr_order\",\n        \"check_xmr_order\",\n        \"get_route_status\"\n      ],\n      \"price_reference\": \"hyperliquid (see price_reference)\",\n      \"refusal_codes\": [\n        \"routing_paused\",\n        \"below_minimum\",\n        \"above_maximum\",\n        \"no_route\",\n        \"amount_below_minimum\",\n        \"invalid_request\",\n        \"rate_limited\",\n        \"create_uncertain\",\n        \"price_divergence\",\n        \"price_stale\",\n        \"price_unavailable\"\n      ]\n    }\n  },\n  \"skills\": [\n    {\n      \"id\": \"get_quote\",\n      \"name\": \"Get OTC Quote\",\n      \"description\": \"Live quote at real market rates. XMR pairs (XMR/USDC on Base, both directions) answer through the Wagyu route with settlement_path wagyu_route, three route_legs, and an empty proofs[]. MENTAT charges 25 bps on every path; on the XMR route it is an integrator fee applied inside Wagyu's quoted amount (mentat_fee_bps, already in to_amount; effective_cost_bps is all-in). Direction-aware minimums: sell XMR from $25, buy XMR from $500. Code routing_paused while XMR routing is paused. Every XMR response carries the Hyperliquid price reference (reference: perp_mark, spot_mid, depth_1pct_usd, depth_side, divergence_pct, observed_at); quotes add tier_max_notional_usd and depth_cap_usd. Codes price_divergence, price_stale, price_unavailable when the reference refuses.\",\n      \"tags\": [\n        \"quote\",\n        \"swap\",\n        \"pricing\",\n        \"xmr\"\n      ],\n      \"input\": {\n        \"method\": \"REST GET (x402, $0.01 USDC) or JSON-RPC\",\n        \"rest\": \"GET /api/quote?from={from_token}&to={to_token}&amount={amount}&to_address={optional}\",\n        \"jsonrpc\": {\n          \"method\": \"tasks/send\",\n          \"params\": {\n            \"skill_id\": \"get_quote\",\n            \"arguments\": {\n              \"from_token\": \"string — token symbol (USDC, WETH, DAI, XMR, ...)\",\n              \"to_token\": \"string — token symbol\",\n              \"amount\": \"number, or a decimal string for XMR (never a float)\",\n              \"to_address\": \"string (optional) — destination address; lets the XMR route price destination costs\"\n            }\n          }\n        }\n      },\n      \"output\": {\n        \"quote\": {\n          \"settlement_path\": \"escrow | quote_only | wagyu_route\",\n          \"from_token\": \"string\",\n          \"to_token\": \"string\",\n          \"from_amount\": \"number | decimal string\",\n          \"to_amount\": \"number | decimal string\",\n          \"route_legs\": \"array\",\n          \"proofs\": \"[] on a quote\",\n          \"escrow_and_cow_pairs\": {\n            \"rate\": \"number\",\n            \"usd_value\": \"number\",\n            \"protocol_fee_bps\": 25,\n            \"escrow_contract\": \"address\",\n            \"valid_for_seconds\": 60\n          },\n          \"xmr_route\": {\n            \"counterparty\": \"Wagyu (wagyu.xyz)\",\n            \"custody\": \"MENTAT never holds XMR ... Not trustless.\",\n            \"from_amount_atomic\": \"string\",\n            \"to_amount_atomic\": \"string\",\n            \"effective_cost_bps\": \"number (all-in: Wagyu's costs plus MENTAT's fee)\",\n            \"mentat_fee_bps\": 25,\n            \"mentat_fee_note\": \"string\",\n            \"integrator_fee\": \"{ feePercent, feeAmountUsd, feeAddress } as reported by Wagyu\",\n            \"tool_used\": \"string\",\n            \"estimated_time_seconds\": \"number\",\n            \"direction\": \"sell | buy\",\n            \"min_notional_usd\": \"25 | 500\",\n            \"max_notional_usd\": 5000,\n            \"valid_for_seconds\": 30,\n            \"reference\": \"{ source: hyperliquid, perp_mark, spot_mid, depth_1pct_usd, depth_side, divergence_pct, observed_at }\",\n            \"tier_max_notional_usd\": 5000,\n            \"depth_cap_usd\": \"number — half of the 1% depth on the side the order hits\"\n          }\n        }\n      },\n      \"examples\": [\n        \"Get a quote for swapping 1000 USDC to WETH\",\n        \"Quote 0.1 XMR to USDC on Base\",\n        \"How much XMR do I get for 600 USDC?\"\n      ]\n    },\n    {\n      \"id\": \"create_xmr_order\",\n      \"name\": \"Create XMR Order (Wagyu route)\",\n      \"description\": \"Create a durable XMR order routed through Wagyu: XMR -> USDC on Base or USDC on Base -> XMR. Returns the venue's exact deposit address, amount, and expiry (the funding instruction), settlement_path wagyu_route, route_legs, and proofs[] (empty until each leg confirms). MENTAT earns a 25 bps integrator fee applied inside Wagyu's quoted amount (mentat_fee_bps). Wagyu is the settlement counterparty; MENTAT never holds XMR; not trustless.\",\n      \"tags\": [\n        \"xmr\",\n        \"monero\",\n        \"wagyu\",\n        \"hyperliquid\",\n        \"order\"\n      ],\n      \"input\": {\n        \"method\": \"JSON-RPC or REST POST\",\n        \"rest\": \"POST /api/xmr/orders (JSON body with the same arguments)\",\n        \"jsonrpc\": {\n          \"method\": \"tasks/send\",\n          \"params\": {\n            \"skill_id\": \"create_xmr_order\",\n            \"arguments\": {\n              \"from_token\": \"XMR | USDC\",\n              \"to_token\": \"USDC | XMR\",\n              \"amount\": \"decimal string — amount of from_token (e.g. \\\"0.1\\\")\",\n              \"to_address\": \"string — destination address on the destination chain (required)\",\n              \"refund_address\": \"string (optional) — refund address on the source chain\"\n            }\n          }\n        }\n      },\n      \"output\": {\n        \"order\": {\n          \"order_id\": \"string\",\n          \"settlement_path\": \"wagyu_route\",\n          \"status\": \"awaiting_deposit\",\n          \"deposit\": {\n            \"address\": \"string\",\n            \"chain\": \"monero | base\",\n            \"token\": \"XMR | USDC\",\n            \"amount\": \"decimal string\",\n            \"amount_atomic\": \"string\"\n          },\n          \"to_address\": \"string\",\n          \"expected_output\": \"decimal string\",\n          \"mentat_fee_bps\": 25,\n          \"mentat_fee_usd\": \"decimal string | null\",\n          \"expires_at\": \"ISO 8601\",\n          \"route_legs\": \"array\",\n          \"proofs\": \"[]\",\n          \"next_steps\": \"array of instructions\",\n          \"status_check\": \"{ skill: check_xmr_order, arguments: { order_id, to_address } }\",\n          \"reference\": \"the quote-time Hyperliquid reference\"\n        },\n        \"quote\": \"the quote the order was created from\"\n      },\n      \"examples\": [\n        \"Create an order: 0.1 XMR to USDC, pay out to 0xYourBaseAddress\",\n        \"Buy XMR with 600 USDC, deliver to 4AdUnd...\"\n      ]\n    },\n    {\n      \"id\": \"check_xmr_order\",\n      \"name\": \"Check XMR Order (Wagyu route)\",\n      \"description\": \"Status of an XMR order by order_id plus its to_address (the destination address is the read proof; a mismatch is not found). Returns the three legs (source-chain confirmations, Hyperliquid swap, destination delivery) and proofs[]: the Monero deposit tx hash, one fill_tx per Hyperliquid fill hash, and the destination payout tx hash. Fill hashes are appended as Wagyu saves them, including after completion.\",\n      \"tags\": [\n        \"xmr\",\n        \"status\",\n        \"proofs\",\n        \"wagyu\"\n      ],\n      \"input\": {\n        \"method\": \"JSON-RPC or REST GET\",\n        \"rest\": \"GET /api/xmr/orders/{order_id}?to_address={to_address}\",\n        \"jsonrpc\": {\n          \"method\": \"tasks/send\",\n          \"params\": {\n            \"skill_id\": \"check_xmr_order\",\n            \"arguments\": {\n              \"order_id\": \"string — from create_xmr_order\",\n              \"to_address\": \"string — the order's destination address\"\n            }\n          }\n        }\n      },\n      \"output\": {\n        \"order\": {\n          \"order_id\": \"string\",\n          \"settlement_path\": \"wagyu_route\",\n          \"status\": \"awaiting_deposit | processing | completed | refunded | failed | expired\",\n          \"stage\": \"string | null\",\n          \"action_required\": \"string | null\",\n          \"legs\": {\n            \"source\": {\n              \"state\": \"pending | observed | confirming | done\",\n              \"confirmations\": \"number\",\n              \"required_confirmations\": \"number\",\n              \"tx_hash\": \"string | null\"\n            },\n            \"hyperliquid\": {\n              \"state\": \"pending | trading | done\",\n              \"fill_count\": \"number\",\n              \"receipts_status\": \"pending | complete | incomplete\",\n              \"tx_hashes\": \"string[]\"\n            },\n            \"destination\": {\n              \"state\": \"pending | sending | done\",\n              \"tx_hash\": \"string | null\"\n            }\n          },\n          \"proofs\": \"[{ chain: monero|base|hyperliquid, kind: deposit_tx|fill_tx|payout_tx, hash, explorer_url }]\",\n          \"reference\": \"the live Hyperliquid reference\",\n          \"reference_warning\": \"string | absent — present when the live reference would refuse a new quote; the order itself is never failed by it\"\n        }\n      },\n      \"examples\": [\n        \"Check XMR order ord_... for 0xYourBaseAddress\"\n      ]\n    },\n    {\n      \"id\": \"get_route_status\",\n      \"name\": \"Route Status\",\n      \"description\": \"Whether XMR routing is live or paused (a Wagyu 503 unavailable pauses it), with the pause deadline and reason, plus the list of settlement paths.\",\n      \"tags\": [\n        \"status\",\n        \"xmr\",\n        \"routing\"\n      ],\n      \"input\": {\n        \"method\": \"REST GET or JSON-RPC\",\n        \"rest\": \"GET /api/routes\",\n        \"jsonrpc\": {\n          \"method\": \"tasks/send\",\n          \"params\": {\n            \"skill_id\": \"get_route_status\",\n            \"arguments\": {}\n          }\n        }\n      },\n      \"output\": {\n        \"settlement_paths\": [\n          \"escrow\",\n          \"cow_relay\",\n          \"wagyu_route\"\n        ],\n        \"routes\": {\n          \"wagyu_route\": {\n            \"paused\": \"boolean\",\n            \"until\": \"ISO 8601 | null\",\n            \"reason\": \"string | null\",\n            \"display\": \"XMR routing live | XMR routing paused\",\n            \"minimums_usd\": {\n              \"sell_xmr\": 25,\n              \"buy_xmr\": 500\n            }\n          }\n        }\n      },\n      \"examples\": [\n        \"Is XMR routing paused?\"\n      ]\n    },\n    {\n      \"id\": \"execute_trade\",\n      \"name\": \"Execute Escrow Trade\",\n      \"description\": \"Create an escrow deal on Base through the FloorEscrow contract (settlement_path escrow). Both parties deposit, settlement is atomic, no admin keys. Returns the create tx as the first proof. A deployment may keep A2A execution switched off: then the answer is code execution_disabled with the escrow address, and the Telegram bot or the contract is the way to open a deal.\",\n      \"tags\": [\n        \"trade\",\n        \"escrow\",\n        \"swap\",\n        \"settlement\"\n      ],\n      \"input\": {\n        \"method\": \"JSON-RPC\",\n        \"jsonrpc\": {\n          \"method\": \"tasks/send\",\n          \"params\": {\n            \"skill_id\": \"execute_trade\",\n            \"arguments\": {\n              \"from_token\": \"string — token symbol\",\n              \"to_token\": \"string — token symbol\",\n              \"amount\": \"number — amount of from_token\"\n            }\n          }\n        }\n      },\n      \"output\": {\n        \"trade\": {\n          \"trade_id\": \"bytes32\",\n          \"status\": \"Created\",\n          \"escrow_contract\": \"address\",\n          \"create_tx\": \"tx hash\",\n          \"basescan_url\": \"string\",\n          \"settlement_path\": \"escrow\",\n          \"route_legs\": \"array\",\n          \"proofs\": \"[{ chain: base, kind: escrow_create_tx, hash, explorer_url }]\",\n          \"next_steps\": \"Buyer and seller must approve + deposit tokens\"\n        },\n        \"quote\": \"same as get_quote output\",\n        \"error_codes\": [\n          \"execution_disabled\"\n        ]\n      },\n      \"examples\": [\n        \"Swap 1000 USDC for DAI through escrow\",\n        \"Execute trade: 5000 USDC to WETH\"\n      ]\n    },\n    {\n      \"id\": \"check_trade\",\n      \"name\": \"Check Escrow Trade\",\n      \"description\": \"On-chain status of an escrow deal by its trade ID, with settlement_path, route_legs, and proofs[].\",\n      \"tags\": [\n        \"status\",\n        \"trade\",\n        \"escrow\"\n      ],\n      \"input\": {\n        \"method\": \"JSON-RPC\",\n        \"jsonrpc\": {\n          \"method\": \"tasks/send\",\n          \"params\": {\n            \"skill_id\": \"check_trade\",\n            \"arguments\": {\n              \"trade_id\": \"bytes32 — the escrow trade ID\"\n            }\n          }\n        }\n      },\n      \"output\": {\n        \"trade\": {\n          \"trade_id\": \"bytes32\",\n          \"status\": \"Created | BuyerDeposited | SellerDeposited | BothDeposited | Settled | Expired | Refunded\",\n          \"buyer\": \"address\",\n          \"seller\": \"address\",\n          \"buy_token\": \"address\",\n          \"sell_token\": \"address\",\n          \"settlement_path\": \"escrow\",\n          \"route_legs\": \"array\",\n          \"proofs\": \"array\"\n        }\n      },\n      \"examples\": [\n        \"Check trade status for 0x8cb14ec9...\"\n      ]\n    },\n    {\n      \"id\": \"get_prices\",\n      \"name\": \"Get Live Prices\",\n      \"description\": \"Current CoinGecko prices for the escrow and CoW pairs. XMR is priced live by the Wagyu route at quote time.\",\n      \"tags\": [\n        \"prices\",\n        \"market\",\n        \"rates\"\n      ],\n      \"input\": {\n        \"method\": \"REST GET or JSON-RPC\",\n        \"rest\": \"GET /api/prices\",\n        \"jsonrpc\": {\n          \"method\": \"tasks/send\",\n          \"params\": {\n            \"skill_id\": \"get_prices\",\n            \"arguments\": {}\n          }\n        }\n      },\n      \"output\": {\n        \"prices\": {\n          \"TOKEN\": {\n            \"usd\": \"number\",\n            \"change_24h\": \"number\"\n          }\n        },\n        \"source\": \"coingecko\",\n        \"updated_at\": \"ISO 8601\"\n      },\n      \"examples\": [\n        \"What are the current token prices?\",\n        \"Get live crypto prices\"\n      ]\n    },\n    {\n      \"id\": \"prepare_trade\",\n      \"name\": \"Prepare CoW Order\",\n      \"description\": \"Build a CoW Protocol order for the calling agent's wallet to sign (settlement_path cow_relay). MENTAT returns the EIP-712 typed data, the appData document with MENTAT's 25 bps partnerFee baked in, a CoW quote, and a preflight check on the trader's sell-token balance and GPv2VaultRelayer allowance. The trader signs locally — MENTAT never custodies funds. The 25 bps fee is enforced because the appData hash is part of what the trader signs.\",\n      \"tags\": [\n        \"cow\",\n        \"swap\",\n        \"relay\",\n        \"eip-712\",\n        \"prepare\",\n        \"sign\"\n      ],\n      \"input\": {\n        \"method\": \"JSON-RPC\",\n        \"jsonrpc\": {\n          \"method\": \"tasks/send\",\n          \"params\": {\n            \"skill_id\": \"prepare_trade\",\n            \"arguments\": {\n              \"sell_token\": \"string — token symbol (USDC, USDT, USDbC, DAI, WETH)\",\n              \"buy_token\": \"string — token symbol\",\n              \"sell_amount\": \"number — amount of sell_token (human units)\",\n              \"trader_address\": \"string — 0x address of the calling agent's wallet\",\n              \"valid_for_seconds\": \"number (optional) — order validity window, default 1800\"\n            }\n          }\n        }\n      },\n      \"output\": {\n        \"order\": \"GPv2Order struct (sellToken, buyToken, receiver, sellAmount, buyAmount, validTo, appData, feeAmount, kind, partiallyFillable, sellTokenBalance, buyTokenBalance)\",\n        \"typed_data\": {\n          \"domain\": \"EIP-712 domain for Gnosis Protocol v2 on Base\",\n          \"types\": \"EIP-712 Order struct types\",\n          \"primaryType\": \"Order\",\n          \"message\": \"the order struct to sign\"\n        },\n        \"app_data\": {\n          \"hash\": \"bytes32 — keccak256 of the canonical appData JSON, signed inside the order\",\n          \"document\": \"the appData JSON object with MENTAT's partnerFee\",\n          \"full_string\": \"canonical JSON string — submit this with the signed order\"\n        },\n        \"quote_summary\": \"human-readable amounts, rate, validTo\",\n        \"partner_fee\": \"{ bps: 25, recipient: MENTAT treasury, note }\",\n        \"preflight\": \"{ balance, allowance, sufficient_balance, sufficient_allowance }\",\n        \"relayer\": \"{ address, approve_calldata, approve_to } — for one-time GPv2VaultRelayer approval if needed\",\n        \"next_steps\": \"array of human instructions\",\n        \"venue\": \"cow-protocol\",\n        \"settlement_path\": \"cow_relay\",\n        \"route_legs\": \"array\",\n        \"proofs\": \"[]\"\n      },\n      \"examples\": [\n        \"Prepare a CoW order to swap 1000 USDC for WETH from 0xMyAgent\",\n        \"Build a sell order: 0.5 WETH to USDC, trader 0xabc...\"\n      ]\n    },\n    {\n      \"id\": \"submit_signed_trade\",\n      \"name\": \"Submit Signed CoW Order\",\n      \"description\": \"Forward a trader-signed CoW order to the CoW order book on Base. MENTAT re-checks the appData hash matches MENTAT's partnerFee doc, validates the EIP-712 signature locally (rejects if recovered != trader_address), then POSTs to api.cow.fi. Returns the orderUid (first proof) and CoW explorer URL. Solvers fill in the next batch (~30s).\",\n      \"tags\": [\n        \"cow\",\n        \"swap\",\n        \"relay\",\n        \"submit\",\n        \"settle\"\n      ],\n      \"input\": {\n        \"method\": \"JSON-RPC\",\n        \"jsonrpc\": {\n          \"method\": \"tasks/send\",\n          \"params\": {\n            \"skill_id\": \"submit_signed_trade\",\n            \"arguments\": {\n              \"order\": \"GPv2Order struct from prepare_trade\",\n              \"signature\": \"string — 0x-prefixed 65-byte EIP-712 signature (132 hex chars)\",\n              \"trader_address\": \"string — must match the EIP-712 signer\"\n            }\n          }\n        }\n      },\n      \"output\": {\n        \"order_uid\": \"0x... — 56-byte CoW order UID\",\n        \"explorer_url\": \"https://explorer.cow.fi/base/orders/{uid}\",\n        \"status\": \"open\",\n        \"venue\": \"cow-protocol\",\n        \"settlement_path\": \"cow_relay\",\n        \"route_legs\": \"array\",\n        \"proofs\": \"[{ chain: base, kind: cow_order_uid, hash: order_uid, explorer_url }]\",\n        \"trader\": \"address\",\n        \"sell_token\": \"address\",\n        \"buy_token\": \"address\",\n        \"sell_amount\": \"uint256 string\",\n        \"buy_amount\": \"uint256 string\",\n        \"valid_to\": \"unix timestamp\",\n        \"partner_fee\": \"{ bps: 25, recipient }\"\n      },\n      \"examples\": [\n        \"Submit signed order with signature 0x... and trader 0xabc...\"\n      ]\n    },\n    {\n      \"id\": \"check_cow_order\",\n      \"name\": \"Check CoW Order\",\n      \"description\": \"Look up the live status of a CoW order by its 56-byte orderUid. Returns the order's state (open, fulfilled, cancelled, expired), executed sell/buy amounts, and proofs[] with one settlement_tx per batch that filled it.\",\n      \"tags\": [\n        \"cow\",\n        \"status\",\n        \"order\",\n        \"track\"\n      ],\n      \"input\": {\n        \"method\": \"JSON-RPC\",\n        \"jsonrpc\": {\n          \"method\": \"tasks/send\",\n          \"params\": {\n            \"skill_id\": \"check_cow_order\",\n            \"arguments\": {\n              \"order_uid\": \"string — 0x-prefixed 56-byte CoW order UID\"\n            }\n          }\n        }\n      },\n      \"output\": {\n        \"order_uid\": \"string\",\n        \"status\": \"open | fulfilled | cancelled | expired\",\n        \"executed_sell_amount\": \"uint256 string\",\n        \"executed_buy_amount\": \"uint256 string\",\n        \"sell_token\": \"address\",\n        \"buy_token\": \"address\",\n        \"from\": \"trader address\",\n        \"valid_to\": \"unix timestamp\",\n        \"explorer_url\": \"https://explorer.cow.fi/base/orders/{uid}\",\n        \"venue\": \"cow-protocol\",\n        \"settlement_path\": \"cow_relay\",\n        \"route_legs\": \"array\",\n        \"proofs\": \"[{ kind: cow_order_uid }, { kind: settlement_tx, hash, explorer_url }...]\"\n      },\n      \"examples\": [\n        \"Check CoW order 0x...\"\n      ]\n    }\n  ],\n  \"operator_key\": {\n    \"address\": \"0xE6f26F05C956D1833A1DAaaAD57CD0a1E626bfd3\",\n    \"roles\": [\n      \"owner of ERC-8004 Agent #31596 (ownerOf(31596) on the Identity Registry)\",\n      \"immutable treasury of FloorEscrow (treasury(); feeBps() = 25)\"\n    ],\n    \"signs\": [\n      \"FloorEscrow.createEscrow: gated on identityRegistry.ownerOf(agentId) == msg.sender; records deal terms, moves no tokens, duration <= 7 days, tradeId not reusable\",\n      \"FloorEscrow.settle: permissionless, only when BothDeposited; 25 bps of each side to the immutable treasury, the rest to the counterparty named in the deal\",\n      \"IdentityRegistry.setAgentURI: agent metadata, operator script only\"\n    ],\n    \"can_like_anyone\": [\n      \"FloorEscrow.refund (after expiry, full refund to the depositor, no fee)\",\n      \"FloorEscrow.getTrade (read)\"\n    ],\n    \"cannot\": [\n      \"withdraw or sweep escrowed tokens (no such function)\",\n      \"change the fee or the treasury (immutable)\",\n      \"pause, upgrade, or kill the contract (no owner, no proxy, no admin role)\",\n      \"amend or cancel a deal before expiry\",\n      \"deposit or move a counterparty's tokens (depositBuyer/depositSeller pull from msg.sender only)\",\n      \"settle early or redirect a settlement\"\n    ],\n    \"not_used_by\": [\n      \"get_quote\",\n      \"check_trade\",\n      \"get_prices\",\n      \"get_route_status\",\n      \"cow_relay (the trader signs; MENTAT forwards to api.cow.fi)\",\n      \"wagyu_route (HTTPS API credential, no chain signing, MENTAT never holds XMR)\",\n      \"mcp (the same handlers on the same host; signs nothing itself)\"\n    ],\n    \"without_key\": \"Without PRIVATE_KEY, or with A2A execution switched off, execute_trade answers code execution_disabled with the escrow address; everything else is unaffected.\"\n  },\n  \"authentication\": {\n    \"required\": false,\n    \"note\": \"No API key needed. REST quotes cost $0.01 USDC via x402; JSON-RPC, order status, route status, and prices are free. CoW relay requires the calling agent's own wallet to sign orders — MENTAT never holds keys for the trader. The XMR route needs a to_address on the destination chain; the same address is the read proof for check_xmr_order. Escrow execution (execute_trade) signs createEscrow with the operator key; operator_key states exactly what that key can and cannot do.\"\n  },\n  \"capabilities\": {\n    \"streaming\": false,\n    \"push_notifications\": false,\n    \"protocols\": [\n      \"google-a2a\",\n      \"json-rpc-2.0\",\n      \"rest\",\n      \"x402\",\n      \"mcp\",\n      \"cow-protocol\",\n      \"eip-712\",\n      \"erc-8004\"\n    ],\n    \"settlement_paths\": [\n      \"escrow\",\n      \"cow_relay\",\n      \"wagyu_route\"\n    ]\n  },\n  \"price_reference\": {\n    \"source\": \"hyperliquid\",\n    \"applies_to\": \"every XMR quote and order response (reference block)\",\n    \"fields\": {\n      \"perp_mark\": \"XMR perpetual mark price\",\n      \"spot_mid\": \"XMR1/USDC spot mid (pair @260)\",\n      \"depth_1pct_usd\": \"resting size within 1% of mid on the side the order hits\",\n      \"depth_side\": \"bids when selling XMR, asks when buying\",\n      \"divergence_pct\": \"perp mark vs spot mid\",\n      \"observed_at\": \"ISO 8601\"\n    },\n    \"quote_only_fields\": {\n      \"tier_max_notional_usd\": 5000,\n      \"depth_cap_usd\": \"half of depth_1pct_usd; the per-order cap is the smaller of the two\"\n    },\n    \"refusal_codes\": {\n      \"price_divergence\": \"perp mark and spot mid differ by more than 1%\",\n      \"price_stale\": \"a reading older than 60 seconds\",\n      \"price_unavailable\": \"Hyperliquid could not be read\"\n    },\n    \"on_orders\": \"a created order carries the quote-time reference; check_xmr_order re-reads the live one and adds reference_warning if it would refuse now, never failing the order\"\n  }\n}\n\nArchive v1.4.2: 4 files, 17125 bytes\n\nFiles: clawhub-skill.json (29671b), skill-card.md (1940b), SKILL.md (19536b), _meta.json (125b)\n\nFile v1.4.2:SKILL.md\n\n---\r\nname: mentat\r\ndescription: MENTAT (formerly FLOOR OTC), the agent-native OTC venue. Escrow settlement on Base (atomic, no admin keys), CoW Protocol relay (agent-signed, MEV-protected), and an XMR route via Wagyu (XMR/USDC both directions, three legs, one proof per leg). Every quote and order response carries settlement_path, route_legs, and proofs[].\r\nversion: 1.4.2\r\nmetadata:\r\n  openclaw:\r\n    requires:\r\n      bins:\r\n        - curl\r\n    emoji: \"🟩\"\r\n    homepage: https://mentat.market\r\n---\r\n\r\n# MENTAT (formerly FLOOR OTC) — the agent-native OTC venue\r\n\r\nDisciplined intelligence. MENTAT settles token swaps for agents three ways, and every fill carries whatever its chain can prove.\r\n\r\n| settlement_path | What settles | Trust model | Proofs |\r\n|---|---|---|---|\r\n| `escrow` | 1:1 swap through the FloorEscrow contract on Base. Both sides deposit, one atomic settlement, 25 bps fee. | Trustless: no owner, no pause, no upgrade. | `escrow_create_tx`, then deposits and settlement on the contract page. |\r\n| `cow_relay` | The calling agent signs an EIP-712 order; MENTAT relays it to CoW Protocol's batch auction on Base. 25 bps partner fee inside the signed appData. | Non-custodial: MENTAT never holds funds. | `cow_order_uid`, then one `settlement_tx` per batch that filled it. |\r\n| `wagyu_route` | XMR in or out. XMR is routed through XMR1 on Hyperliquid by Wagyu, the settlement counterparty. MENTAT never holds XMR. 25 bps integrator fee applied inside Wagyu's quoted amount. | **Not trustless.** You rely on Wagyu to deliver; the route gives you a proof per leg instead. | `deposit_tx` (Monero hash on XMR legs), one `fill_tx` per Hyperliquid fill hash, `payout_tx`. |\r\n\r\nERC-8004 Agent #31596 on Base Mainnet. Contact: desk@mentat.market.\r\n\r\n## Response contract\r\n\r\nEvery quote and order response carries:\r\n\r\n- `settlement_path`: `escrow`, `cow_relay`, `wagyu_route`, or `quote_only` (a price with no executable path).\r\n- `route_legs[]`: the legs of that path, each `{ leg, name, chain, chain_id, proof_kind, proofs }` where `proofs` says how many proofs the leg can carry (`one`, `one or many`, `zero, one, or many`).\r\n- `proofs[]`: `{ chain, kind, hash, explorer_url }`, one entry per hash the chain has exposed so far. Empty on a quote. Nothing is inferred: a leg without a hash yet has no entry.\r\n\r\nAmounts on the XMR route are decimal strings. Never send a float.\r\n\r\n## Quick start\r\n\r\n### Quote (REST, x402-paid, $0.01 USDC on Base)\r\n\r\n```bash\r\ncurl -s \"https://api.mentat.market/api/quote?from=USDC&to=WETH&amount=1000\" | jq\r\n```\r\n\r\n### Quote (JSON-RPC / A2A)\r\n\r\n```bash\r\ncurl -s -X POST https://api.mentat.market/a2a \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\"jsonrpc\":\"2.0\",\"method\":\"tasks/send\",\"params\":{\"skill_id\":\"get_quote\",\"arguments\":{\"from_token\":\"USDC\",\"to_token\":\"WETH\",\"amount\":1000}},\"id\":1}'\r\n```\r\n\r\n### Live prices (free)\r\n\r\n```bash\r\ncurl -s \"https://api.mentat.market/api/prices\" | jq\r\n```\r\n\r\n## XMR route (settlement_path `wagyu_route`)\r\n\r\nPairs: XMR ↔ USDC on Base, both directions. Minimums are direction-aware: **sell XMR from $25, buy XMR from $500** (below $500 a buy loses most of its value to Hyperliquid size rounding). Maximum $5,000 per order. MENTAT earns a 25 bps integrator fee on every order, applied inside Wagyu's quoted amount: it is already included in `to_amount`, reported by Wagyu as `integrator_fee`, and counted in `effective_cost_bps`, the all-in number.\r\n\r\n### 1. Quote 0.1 XMR → USDC\r\n\r\n```bash\r\ncurl -s -X POST https://api.mentat.market/a2a \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\"jsonrpc\":\"2.0\",\"method\":\"tasks/send\",\"params\":{\"skill_id\":\"get_quote\",\"arguments\":{\"from_token\":\"XMR\",\"to_token\":\"USDC\",\"amount\":\"0.1\",\"to_address\":\"0xYourBaseAddress\"}},\"id\":1}'\r\n```\r\n\r\nResponse (abridged):\r\n\r\n```json\r\n{\r\n  \"quote\": {\r\n    \"venue\": \"wagyu\",\r\n    \"settlement_path\": \"wagyu_route\",\r\n    \"counterparty\": \"Wagyu (wagyu.xyz)\",\r\n    \"custody\": \"MENTAT never holds XMR. Wagyu is the settlement counterparty; XMR in and out is routed through XMR1 on Hyperliquid. Not trustless.\",\r\n    \"from_token\": \"XMR\", \"to_token\": \"USDC\",\r\n    \"from_chain\": \"monero\", \"to_chain\": \"base\",\r\n    \"from_amount\": \"0.1\", \"to_amount\": \"50.409916\",\r\n    \"from_amount_atomic\": \"100000000000\", \"to_amount_atomic\": \"50409916\",\r\n    \"from_amount_usd\": \"51.45\", \"effective_cost_bps\": 169,\r\n    \"mentat_fee_bps\": 25, \"mentat_fee_note\": \"Included in to_amount; reported by Wagyu as integrator_fee; counted in effective_cost_bps.\",\r\n    \"integrator_fee\": { \"feePercent\": 0.25, \"feeAmountUsd\": 0.13, \"feeAddress\": \"0xMentatFeeAddress\" },\r\n    \"tool_used\": \"stargateV2\", \"estimated_time_seconds\": 623,\r\n    \"direction\": \"sell\", \"min_notional_usd\": 25, \"max_notional_usd\": 5000,\r\n    \"tier_max_notional_usd\": 5000, \"depth_cap_usd\": 184516,\r\n    \"valid_for_seconds\": 30,\r\n    \"reference\": { \"source\": \"hyperliquid\", \"perp_mark\": 551.08, \"spot_mid\": 550.98, \"depth_1pct_usd\": 369032, \"depth_side\": \"asks\", \"divergence_pct\": 0.02, \"observed_at\": \"2026-09-23T20:30:00.000Z\" },\r\n    \"route_legs\": [\r\n      { \"leg\": 1, \"name\": \"source\", \"chain\": \"monero\", \"chain_id\": 0, \"proof_kind\": \"deposit_tx\", \"proofs\": \"one\" },\r\n      { \"leg\": 2, \"name\": \"hyperliquid_swap\", \"chain\": \"hyperliquid\", \"chain_id\": 1337, \"proof_kind\": \"fill_tx\", \"proofs\": \"zero, one, or many\" },\r\n      { \"leg\": 3, \"name\": \"destination\", \"chain\": \"base\", \"chain_id\": 8453, \"proof_kind\": \"payout_tx\", \"proofs\": \"one\" }\r\n    ],\r\n    \"proofs\": [],\r\n    \"note\": \"An estimate, not a funding instruction. Create an order to receive the exact deposit address, amount, and expiry.\"\r\n  }\r\n}\r\n```\r\n\r\nA quote is an estimate. Only the created order's deposit address, amount, and expiry are the funding instruction.\r\n\r\n### The price reference (Hyperliquid)\r\n\r\nEvery XMR quote is checked against Hyperliquid before Wagyu is asked, and every XMR quote and order response carries the reading in `reference`:\r\n\r\n```json\r\n\"reference\": { \"source\": \"hyperliquid\", \"perp_mark\": 551.08, \"spot_mid\": 550.98, \"depth_1pct_usd\": 369032, \"depth_side\": \"asks\", \"divergence_pct\": 0.02, \"observed_at\": \"2026-09-23T20:30:00.000Z\" }\r\n```\r\n\r\n- `perp_mark` is the XMR perpetual mark price; `spot_mid` is the XMR1/USDC spot mid (pair `@260`). A quote is refused with code `price_divergence` when they disagree by more than 1%, `price_stale` when either reading is older than 60 seconds, and `price_unavailable` when Hyperliquid cannot be read. Nothing is quoted from a single or stale source.\r\n- `depth_1pct_usd` is the resting size within 1% of mid on the side the order hits (`depth_side`: bids when selling XMR, asks when buying). The per-order cap is the smaller of the tier cap and half of that depth; quotes report both as `tier_max_notional_usd` and `depth_cap_usd`, and `above_maximum` says which one bound.\r\n- A created order carries the quote-time `reference`. `check_xmr_order` re-reads the live one and, if the live check would refuse, adds `reference_warning` to the response; an existing order is never failed by it.\r\n\r\n### 2. Create the order\r\n\r\n`to_address` is required (Base address for USDC, Monero address for XMR). `refund_address` on the source chain is optional.\r\n\r\n```bash\r\ncurl -s -X POST https://api.mentat.market/a2a \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\"jsonrpc\":\"2.0\",\"method\":\"tasks/send\",\"params\":{\"skill_id\":\"create_xmr_order\",\"arguments\":{\"from_token\":\"XMR\",\"to_token\":\"USDC\",\"amount\":\"0.1\",\"to_address\":\"0xYourBaseAddress\"}},\"id\":1}'\r\n```\r\n\r\nREST equivalent: `POST /api/xmr/orders` with the same JSON body. The response's `order.deposit` is the funding instruction and `order.next_steps` spells it out. Send exactly that amount to that address before `order.expires_at`.\r\n\r\n### 3. Check the order: three legs, one proof each\r\n\r\nThe destination address is the read proof. An `order_id` with the wrong `to_address` is simply not found.\r\n\r\n```bash\r\ncurl -s -X POST https://api.mentat.market/a2a \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\"jsonrpc\":\"2.0\",\"method\":\"tasks/send\",\"params\":{\"skill_id\":\"check_xmr_order\",\"arguments\":{\"order_id\":\"ord_1\",\"to_address\":\"0xYourBaseAddress\"}},\"id\":1}'\r\n```\r\n\r\nREST equivalent: `GET /api/xmr/orders/{order_id}?to_address=0x...`. A completed order (abridged):\r\n\r\n```json\r\n{\r\n  \"order\": {\r\n    \"order_id\": \"ord_1\",\r\n    \"settlement_path\": \"wagyu_route\",\r\n    \"status\": \"completed\",\r\n    \"from_token\": \"XMR\", \"to_token\": \"USDC\",\r\n    \"deposit\": { \"address\": \"4AdUnd...\", \"chain\": \"monero\", \"token\": \"XMR\", \"amount\": \"0.1\" },\r\n    \"to_address\": \"0xYourBaseAddress\",\r\n    \"expected_output\": \"50.409916\", \"actual_output\": \"50.38\",\r\n    \"mentat_fee_bps\": 25, \"mentat_fee_usd\": \"0.13\",\r\n    \"legs\": {\r\n      \"source\": { \"state\": \"done\", \"confirmations\": 10, \"required_confirmations\": 10, \"tx_hash\": \"6f1d...c2a9\" },\r\n      \"hyperliquid\": { \"state\": \"done\", \"fill_count\": 2, \"receipts_status\": \"complete\", \"tx_hashes\": [\"0xbc50...e7ee\"] },\r\n      \"destination\": { \"state\": \"done\", \"tx_hash\": \"0x9a3b...41d0\" }\r\n    },\r\n    \"proofs\": [\r\n      { \"chain\": \"monero\", \"kind\": \"deposit_tx\", \"hash\": \"6f1d...c2a9\", \"explorer_url\": \"https://xmrchain.net/tx/6f1d...c2a9\" },\r\n      { \"chain\": \"hyperliquid\", \"kind\": \"fill_tx\", \"hash\": \"0xbc50...e7ee\", \"explorer_url\": \"https://app.hyperliquid.xyz/explorer/tx/0xbc50...e7ee\" },\r\n      { \"chain\": \"base\", \"kind\": \"payout_tx\", \"hash\": \"0x9a3b...41d0\", \"explorer_url\": \"https://basescan.org/tx/0x9a3b...41d0\" }\r\n    ],\r\n    \"status_check\": { \"skill\": \"check_xmr_order\", \"arguments\": { \"order_id\": \"ord_1\", \"to_address\": \"0xYourBaseAddress\" } }\r\n  }\r\n}\r\n```\r\n\r\nSeveral Hyperliquid fills can share one transaction hash; `proofs[]` lists each distinct hash once. Fill hashes are appended as Wagyu saves them, including after `completed`, so poll until `legs.hyperliquid.receipts_status` is `complete`.\r\n\r\n### The paused state\r\n\r\nWhen Wagyu answers 503 unavailable, MENTAT pauses the route instead of retrying. Quotes and order creation answer:\r\n\r\n```json\r\n{ \"error\": \"XMR routing paused\", \"code\": \"routing_paused\", \"routing_paused\": true, \"until\": \"2026-09-14T12:05:00.000Z\", \"retry_after_seconds\": 300 }\r\n```\r\n\r\nREST returns HTTP 503 for it. `get_route_status` (or free `GET /api/routes`) reports `paused`, `until`, and `reason`. Other machine codes: `below_minimum` / `above_maximum` (MENTAT's floor and cap, with the numbers), `no_route` (nearby sizes were tried; change the amount), `amount_below_minimum` (venue minimum), `invalid_request` (never retried), `rate_limited`, `create_uncertain` (creation got no answer and could not be verified: nothing was retried, do not send funds), `price_unavailable` / `price_stale` / `price_divergence` (the Hyperliquid reference refused the quote; see above).\r\n\r\n## CoW relay (settlement_path `cow_relay`)\r\n\r\nStep 1, ask MENTAT to build the order:\r\n\r\n```bash\r\ncurl -s -X POST https://api.mentat.market/a2a \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\"jsonrpc\":\"2.0\",\"method\":\"tasks/send\",\"params\":{\"skill_id\":\"prepare_trade\",\"arguments\":{\"sell_token\":\"USDC\",\"buy_token\":\"WETH\",\"sell_amount\":1000,\"trader_address\":\"0xYourAgentWallet\"}},\"id\":1}'\r\n```\r\n\r\nYou get back `typed_data` (EIP-712 domain, types, message), `app_data` (MENTAT's partnerFee document and hash), `quote_summary`, `preflight` (balance and relayer allowance), and `relayer.approve_calldata` if the GPv2VaultRelayer still needs an approval.\r\n\r\nStep 2, sign locally:\r\n\r\n```js\r\nconst signature = await wallet.signTypedData(typed_data.domain, typed_data.types, typed_data.message);\r\n```\r\n\r\nStep 3, submit through MENTAT:\r\n\r\n```bash\r\ncurl -s -X POST https://api.mentat.market/a2a \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\"jsonrpc\":\"2.0\",\"method\":\"tasks/send\",\"params\":{\"skill_id\":\"submit_signed_trade\",\"arguments\":{\"order\":{...},\"signature\":\"0x...\",\"trader_address\":\"0xYourAgentWallet\"}},\"id\":1}'\r\n```\r\n\r\nReturns `order_uid` (the first proof) and `explorer_url`. `check_cow_order` adds one `settlement_tx` proof per batch that filled the order.\r\n\r\n## Escrow (settlement_path `escrow`)\r\n\r\n```bash\r\ncurl -s -X POST https://api.mentat.market/a2a \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\"jsonrpc\":\"2.0\",\"method\":\"tasks/send\",\"params\":{\"skill_id\":\"execute_trade\",\"arguments\":{\"from_token\":\"USDC\",\"to_token\":\"DAI\",\"amount\":1000}},\"id\":1}'\r\n```\r\n\r\nReturns the deal, `proofs[0]` as the `escrow_create_tx`, and next steps. `check_trade` reads the deal state from the contract. A deployment can keep A2A execution switched off; then `execute_trade` answers code `execution_disabled` with the escrow address, and the Telegram bot or the contract itself is the way to open a deal.\r\n\r\n## What the operator key can and cannot do\r\n\r\nMENTAT's servers hold one Ethereum key, the operator key: the agent wallet `0xE6f26F05C956D1833A1DAaaAD57CD0a1E626bfd3`. On-chain it is the owner of ERC-8004 Agent #31596 (`ownerOf(31596)` on the Identity Registry) and the immutable `treasury` of the FloorEscrow contract (`treasury()`; `feeBps()` = 25). It signs three kinds of transaction and nothing else:\r\n\r\n| Contract | Function | Gate in the contract | Effect |\r\n|---|---|---|---|\r\n| FloorEscrow `0x9EC9…3AA7` | `createEscrow(tradeId, buyer, seller, tokenBuy, tokenSell, amountBuy, amountSell, agentId, duration)` | `identityRegistry.ownerOf(agentId) == msg.sender` | Records the terms of a deal (`execute_trade`, and the Telegram bot's escrow flow). Moves no tokens. Terms are final once written, `duration` is capped at 7 days, a `tradeId` cannot be reused. |\r\n| FloorEscrow | `settle(tradeId)` | none: anyone may call; status must be `BothDeposited` | Pays 25 bps of each side to the immutable treasury and the rest to the counterparty named in the deal. The caller chooses nothing. The Telegram bot calls it as soon as both deposits land. |\r\n| Identity Registry `0x8004…a432` | `setAgentURI(31596, uri)` | ERC-721 owner of the agent NFT | Updates Agent #31596's metadata (the same operator script minted the agent once with `register`). No skill triggers it. |\r\n\r\nLike any address it can also call `refund(tradeId)` (after expiry only; full refund to whoever deposited, no fee) and `getTrade(tradeId)` (read). `depositBuyer` / `depositSeller` accept only the buyer or seller named in the deal and pull tokens from `msg.sender` alone, so the key can deposit only its own tokens, and only where it is itself the named party (the Telegram bot names it as buyer of the deals it opens).\r\n\r\nThe key cannot withdraw or sweep anything from the escrow (no such function exists), change the fee or the treasury (both `immutable`), pause, upgrade, or kill the contract (no owner, no proxy, no admin role), amend or cancel a deal before it expires, deposit or move a counterparty's tokens (approvals go to the contract, never to the key), settle early, or send a settlement anywhere but the addresses stored in the deal. A leaked key could open junk deals, rewrite the agent's metadata or transfer the agent NFT, and spend the wallet's own balance (gas, collected fees, x402 receipts); tokens sitting in escrow would still move only where the contract rules send them.\r\n\r\nNo other server code uses the key. `get_quote`, `check_trade`, `get_prices`, and `get_route_status` only read. The CoW relay never signs: the trader signs, MENTAT forwards the signed order to api.cow.fi. The XMR route talks to Wagyu over HTTPS with an API credential (`WAGYU_INTEGRATOR_KEY`), signs no transaction, and never holds XMR. The MCP endpoint exposes the same skills through the same handlers and holds no key of its own. Without `PRIVATE_KEY`, or with A2A execution switched off, `execute_trade` answers with an error (`execution_disabled`) and the escrow address to call directly; everything else is unaffected.\r\n\r\n## Skills\r\n\r\n| Skill | Path | What it does |\r\n|---|---|---|\r\n| `get_quote` | any | Live quote. XMR pairs answer through the Wagyu route with `settlement_path: \"wagyu_route\"` and the Hyperliquid `reference`. |\r\n| `get_prices` | — | CoinGecko prices for the escrow and CoW pairs. XMR is priced live at quote time. |\r\n| `create_xmr_order` | `wagyu_route` | Durable XMR order; returns the funding instruction. |\r\n| `check_xmr_order` | `wagyu_route` | Three legs and `proofs[]`; needs `order_id` + `to_address`. |\r\n| `get_route_status` | `wagyu_route` | Live or paused, with the pause deadline and reason. |\r\n| `prepare_trade` | `cow_relay` | Build the EIP-712 order for the agent to sign. |\r\n| `submit_signed_trade` | `cow_relay` | Relay the signed order to the CoW order book. |\r\n| `check_cow_order` | `cow_relay` | Order state plus settlement transaction proofs. |\r\n| `execute_trade` | `escrow` | Create an escrow deal on Base. |\r\n| `check_trade` | `escrow` | Read an escrow deal by id. |\r\n\r\n## Supported tokens (Base Mainnet)\r\n\r\n| Token | Address |\r\n|-------|---------|\r\n| USDC | `0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913` |\r\n| USDbC | `0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6Ca` |\r\n| DAI | `0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb` |\r\n| WETH | `0x4200000000000000000000000000000000000006` |\r\n| XMR | native Monero, routed via Wagyu (XMR1 `0xbB2057659bD378D17E2E151BB04bdcaA00000000` on Hyperliquid spot) |\r\n\r\nQuotes only: ETH, BTC, WBTC, UNI, LINK, AAVE.\r\n\r\n## Pricing\r\n\r\nQuotes are at real market rates. MENTAT charges 25 bps on every fill, on every path: escrow (deducted on settlement, immutable in the contract), CoW relay (`partnerFee` inside the appData the trader signs), and the XMR route (a 0.25% integrator fee applied inside Wagyu's quoted amount, so it is already in `to_amount` and reported by Wagyu as `integrator_fee`). On the XMR route `effective_cost_bps` is the all-in number: Wagyu's own costs plus MENTAT's fee.\r\n\r\n## Endpoints\r\n\r\n- Agent card: `https://api.mentat.market/.well-known/agent.json`\r\n- A2A (JSON-RPC): `POST https://api.mentat.market/a2a`\r\n- REST quote (x402): `GET https://api.mentat.market/api/quote?from=XMR&to=USDC&amount=0.1&to_address=0x...`\r\n- REST XMR orders (free): `POST /api/xmr/orders`, `GET /api/xmr/orders/{id}?to_address=0x...`\r\n- Route status (free): `GET https://api.mentat.market/api/routes`\r\n- Prices (free): `GET https://api.mentat.market/api/prices`\r\n- MCP (streamable HTTP): `https://api.mentat.market/mcp` (legacy SSE at `/sse` + `/messages`)\r\n- Public tape (free, read-only): `GET https://api.mentat.market/api/tape?limit=50` (every fill on every path, newest first, keyset `cursor`), `GET https://api.mentat.market/api/tape/{id}` (one receipt), `GET https://api.mentat.market/api/stats` (24h and all-time per path)\r\n- Health: `GET https://api.mentat.market/health`\r\n- Telegram: `https://t.me/FloorOTCbot`\r\n- Web: `https://mentat.market` · public tape and receipts: `https://mentat.market/ledger` (one receipt per fill at `/ledger/{id}`)\r\n\r\n## On-chain\r\n\r\n- Network: Base Mainnet (chain ID 8453)\r\n- Escrow contract (FloorEscrow, name unchanged): `0x9EC9d882C93F52621CBD0d146D3F2e0929E53AA7` (verified on Basescan)\r\n- CoW Settlement: `0x9008D19f58AAbD9eD0D60971565AA8510560ab41`\r\n- CoW VaultRelayer (approve sell tokens here): `0xC92E8bdf79f0507f65a392b0ab4667716BFE0110`\r\n- Identity Registry (ERC-8004): `0x8004A169FB4a3325136EB29fA0ceB6D2e539a432`, Agent ID 31596\r\n\r\nNo authentication. Quotes cost $0.01 USDC via x402; order status, route status, and prices are free.\r\n\r\n## ClawHub\r\n\r\nThis skill was published as `floor-otc`. ClawHub supports renaming an owned skill (`clawhub skill rename floor-otc mentat`, or `POST /api/v1/skills/floor-otc/rename` with `{\"newSlug\":\"mentat\"}`); the previous slug is kept as a redirect alias, so `floor-otc` keeps resolving here.\n\nFile v1.4.2:_meta.json\n\n{\n  \"ownerId\": \"kn7aae8wkdvhpxxqf0kkwfm6ps83t95a\",\n  \"slug\": \"mentat\",\n  \"version\": \"1.4.2\",\n  \"publishedAt\": 1790342022798\n}\n\nFile v1.4.2:skill-card.md\n\n## Description:\n\nGuides agents through MENTAT quotes, escrow trades on Base, agent-signed CoW orders, and XMR swaps routed through Wagyu.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[agora0x](https://clawhub.ai/user/agora0x)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and trading agents use this skill to request quotes, prepare and monitor token swaps, and review funding and settlement instructions across Base, CoW Protocol, and the Wagyu XMR route.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Trading instructions can lead to unintended transfers, fees, or wallet approvals.\n\nMitigation: Review each order, destination address, fee, approval target, and signature request before funding or signing.\n\nRisk: XMR settlement depends on Wagyu as counterparty and is not trustless.\n\nMitigation: Assess counterparty exposure and fund only from the created order's exact deposit address, amount, and expiry; check settlement proofs.\n\n## Reference(s):\n\n- [MENTAT ClawHub release](https://clawhub.ai/agora0x/skills/mentat)\n- [MENTAT website](https://mentat.market)\n- [MENTAT agent card](https://api.mentat.market/.well-known/agent.json)\n- [MENTAT public receipts](https://mentat.market/ledger)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, Code]\n\n**Output Format:** [Markdown with shell, JSON, and signing examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Describes quote, order, status, and settlement-proof fields; some actions require funding or local signing.]\n\n## Skill Version(s):\n\n1.4.2 (source: SKILL.md frontmatter and server release)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.4.2:clawhub-skill.json\n\n{\r\n  \"name\": \"mentat\",\r\n  \"display_name\": \"MENTAT\",\r\n  \"description\": \"MENTAT (formerly FLOOR OTC): the agent-native OTC venue. Three settlement paths on one response contract: escrow on Base (atomic, no admin keys), CoW Protocol relay (agent-signed EIP-712 orders, MEV-protected, non-custodial), and an XMR route via Wagyu (XMR in/out routed through XMR1 on Hyperliquid; Wagyu is the settlement counterparty; MENTAT never holds XMR; not trustless). Every quote and order response carries settlement_path, route_legs, and proofs[]: one proof per leg, whatever its chain can prove.\",\r\n  \"tagline\": \"disciplined intelligence\",\r\n  \"version\": \"1.4.2\",\r\n  \"previous_slug\": \"floor-otc\",\r\n  \"author\": \"Agora0x\",\r\n  \"license\": \"MIT-0\",\r\n  \"contact\": \"desk@mentat.market\",\r\n  \"tags\": [\r\n    \"otc\",\r\n    \"trading\",\r\n    \"escrow\",\r\n    \"defi\",\r\n    \"swap\",\r\n    \"base\",\r\n    \"erc-8004\",\r\n    \"web3\",\r\n    \"tokens\",\r\n    \"agent-economy\",\r\n    \"cow-protocol\",\r\n    \"batch-auction\",\r\n    \"mev-protected\",\r\n    \"eip-712\",\r\n    \"relay\",\r\n    \"xmr\",\r\n    \"monero\",\r\n    \"wagyu\",\r\n    \"hyperliquid\",\r\n    \"proofs\"\r\n  ],\r\n  \"homepage\": \"https://mentat.market\",\r\n  \"receipts\": \"https://mentat.market/ledger\",\r\n  \"agent_id\": 31596,\r\n  \"registry\": \"ERC-8004 Base Mainnet\",\r\n  \"registry_address\": \"0x8004A169FB4a3325136EB29fA0ceB6D2e539a432\",\r\n  \"chain\": \"base\",\r\n  \"chain_id\": 8453,\r\n  \"escrow_contract\": \"0x9EC9d882C93F52621CBD0d146D3F2e0929E53AA7\",\r\n  \"cow_settlement\": \"0x9008D19f58AAbD9eD0D60971565AA8510560ab41\",\r\n  \"cow_vault_relayer\": \"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110\",\r\n  \"endpoints\": {\r\n    \"agent_card\": \"https://api.mentat.market/.well-known/agent.json\",\r\n    \"a2a\": \"https://api.mentat.market/a2a\",\r\n    \"rest_quote\": \"https://api.mentat.market/api/quote\",\r\n    \"rest_xmr_orders\": \"https://api.mentat.market/api/xmr/orders\",\r\n    \"rest_routes\": \"https://api.mentat.market/api/routes\",\r\n    \"rest_prices\": \"https://api.mentat.market/api/prices\",\r\n    \"health\": \"https://api.mentat.market/health\",\r\n    \"telegram\": \"https://t.me/FloorOTCbot\",\r\n    \"mcp\": \"https://api.mentat.market/mcp\",\r\n    \"mcp_sse\": \"https://api.mentat.market/sse\",\r\n    \"rest_tape\": \"https://api.mentat.market/api/tape\",\r\n    \"rest_tape_receipt\": \"https://api.mentat.market/api/tape/{id}\",\r\n    \"rest_stats\": \"https://api.mentat.market/api/stats\",\r\n    \"ledger\": \"https://mentat.market/ledger\",\r\n    \"llms_txt\": \"https://mentat.market/llms.txt\"\r\n  },\r\n  \"supported_tokens\": [\r\n    {\r\n      \"symbol\": \"USDC\",\r\n      \"address\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\r\n      \"decimals\": 6\r\n    },\r\n    {\r\n      \"symbol\": \"USDbC\",\r\n      \"address\": \"0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6Ca\",\r\n      \"decimals\": 6\r\n    },\r\n    {\r\n      \"symbol\": \"DAI\",\r\n      \"address\": \"0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb\",\r\n      \"decimals\": 18\r\n    },\r\n    {\r\n      \"symbol\": \"WETH\",\r\n      \"address\": \"0x4200000000000000000000000000000000000006\",\r\n      \"decimals\": 18\r\n    },\r\n    {\r\n      \"symbol\": \"XMR\",\r\n      \"chain\": \"monero\",\r\n      \"decimals\": 12,\r\n      \"settlement_path\": \"wagyu_route\",\r\n      \"note\": \"Routed via Wagyu through XMR1 (0xbB2057659bD378D17E2E151BB04bdcaA00000000, Hyperliquid spot). Pairs: XMR/USDC on Base, both directions.\"\r\n    }\r\n  ],\r\n  \"protocol_fee_bps\": 25,\r\n  \"protocol_fee_note\": \"0.25% on every fill, on every path. CoW relay: routed by solvers via partnerFee in the appData the trader signs. Escrow: deducted from each side on settlement, immutable in the contract. XMR route: a 25 bps integrator fee applied inside Wagyu's quoted amount, already included in to_amount and reported by Wagyu as integrator_fee; effective_cost_bps is the all-in number.\",\r\n  \"response_contract\": {\r\n    \"settlement_path\": \"escrow | cow_relay | wagyu_route | quote_only\",\r\n    \"route_legs\": \"[{ leg, name, chain, chain_id, proof_kind, proofs }]\",\r\n    \"proofs\": \"[{ chain, kind, hash, explorer_url }] — one entry per hash the chain has exposed; empty on a quote; never inferred\"\r\n  },\r\n  \"venues\": {\r\n    \"cow_relay\": {\r\n      \"settlement_path\": \"cow_relay\",\r\n      \"type\": \"off-chain order book + on-chain batch auction\",\r\n      \"settlement\": \"~30s by CoW solvers\",\r\n      \"custody\": \"non-custodial — MENTAT never holds funds\",\r\n      \"trustless\": true,\r\n      \"mev_protection\": true,\r\n      \"proofs\": [\r\n        \"cow_order_uid\",\r\n        \"settlement_tx (one per filling batch)\"\r\n      ],\r\n      \"skills\": [\r\n        \"prepare_trade\",\r\n        \"submit_signed_trade\",\r\n        \"check_cow_order\"\r\n      ]\r\n    },\r\n    \"escrow\": {\r\n      \"settlement_path\": \"escrow\",\r\n      \"type\": \"1:1 on-chain escrow (FloorEscrow contract)\",\r\n      \"settlement\": \"atomic on deposit-by-both-parties\",\r\n      \"custody\": \"smart contract escrow, no admin keys\",\r\n      \"trustless\": true,\r\n      \"proofs\": [\r\n        \"escrow_create_tx\"\r\n      ],\r\n      \"skills\": [\r\n        \"execute_trade\",\r\n        \"check_trade\"\r\n      ]\r\n    },\r\n    \"wagyu_route\": {\r\n      \"settlement_path\": \"wagyu_route\",\r\n      \"type\": \"XMR in/out routed through XMR1 on Hyperliquid spot\",\r\n      \"counterparty\": \"Wagyu (wagyu.xyz)\",\r\n      \"custody\": \"MENTAT never holds XMR\",\r\n      \"trustless\": false,\r\n      \"pairs\": [\r\n        \"XMR/USDC on Base (both directions)\"\r\n      ],\r\n      \"minimums_usd\": {\r\n        \"sell_xmr\": 25,\r\n        \"buy_xmr\": 500\r\n      },\r\n      \"maximum_usd\": 5000,\r\n      \"fee_bps\": 25,\r\n      \"fee_note\": \"MENTAT earns a 25 bps integrator fee on every order, applied inside Wagyu's quoted amount: included in to_amount, reported by Wagyu as integrator_fee, counted in effective_cost_bps.\",\r\n      \"legs\": [\r\n        \"source chain (deposit_tx; Monero hash on XMR legs)\",\r\n        \"hyperliquid_swap (fill_tx, zero/one/many)\",\r\n        \"destination chain (payout_tx)\"\r\n      ],\r\n      \"paused_state\": \"A Wagyu 503 unavailable pauses the route; quotes and creates answer code routing_paused (HTTP 503 on REST) with until and retry_after_seconds.\",\r\n      \"skills\": [\r\n        \"get_quote\",\r\n        \"create_xmr_order\",\r\n        \"check_xmr_order\",\r\n        \"get_route_status\"\r\n      ],\r\n      \"price_reference\": \"hyperliquid (see price_reference)\",\r\n      \"refusal_codes\": [\r\n        \"routing_paused\",\r\n        \"below_minimum\",\r\n        \"above_maximum\",\r\n        \"no_route\",\r\n        \"amount_below_minimum\",\r\n        \"invalid_request\",\r\n        \"rate_limited\",\r\n        \"create_uncertain\",\r\n        \"price_divergence\",\r\n        \"price_stale\",\r\n        \"price_unavailable\"\r\n      ]\r\n    }\r\n  },\r\n  \"skills\": [\r\n    {\r\n      \"id\": \"get_quote\",\r\n      \"name\": \"Get OTC Quote\",\r\n      \"description\": \"Live quote at real market rates. XMR pairs (XMR/USDC on Base, both directions) answer through the Wagyu route with settlement_path wagyu_route, three route_legs, and an empty proofs[]. MENTAT charges 25 bps on every path; on the XMR route it is an integrator fee applied inside Wagyu's quoted amount (mentat_fee_bps, already in to_amount; effective_cost_bps is all-in). Direction-aware minimums: sell XMR from $25, buy XMR from $500. Code routing_paused while XMR routing is paused. Every XMR response carries the Hyperliquid price reference (reference: perp_mark, spot_mid, depth_1pct_usd, depth_side, divergence_pct, observed_at); quotes add tier_max_notional_usd and depth_cap_usd. Codes price_divergence, price_stale, price_unavailable when the reference refuses.\",\r\n      \"tags\": [\r\n        \"quote\",\r\n        \"swap\",\r\n        \"pricing\",\r\n        \"xmr\"\r\n      ],\r\n      \"input\": {\r\n        \"method\": \"REST GET (x402, $0.01 USDC) or JSON-RPC\",\r\n        \"rest\": \"GET /api/quote?from={from_token}&to={to_token}&amount={amount}&to_address={optional}\",\r\n        \"jsonrpc\": {\r\n          \"method\": \"tasks/send\",\r\n          \"params\": {\r\n            \"skill_id\": \"get_quote\",\r\n            \"arguments\": {\r\n              \"from_token\": \"string — token symbol (USDC, WETH, DAI, XMR, ...)\",\r\n              \"to_token\": \"string — token symbol\",\r\n              \"amount\": \"number, or a decimal string for XMR (never a float)\",\r\n              \"to_address\": \"string (optional) — destination address; lets the XMR route price destination costs\"\r\n            }\r\n          }\r\n        }\r\n      },\r\n      \"output\": {\r\n        \"quote\": {\r\n          \"settlement_path\": \"escrow | quote_only | wagyu_route\",\r\n          \"from_token\": \"string\",\r\n          \"to_token\": \"string\",\r\n          \"from_amount\": \"number | decimal string\",\r\n          \"to_amount\": \"number | decimal string\",\r\n          \"route_legs\": \"array\",\r\n          \"proofs\": \"[] on a quote\",\r\n          \"escrow_and_cow_pairs\": {\r\n            \"rate\": \"number\",\r\n            \"usd_value\": \"number\",\r\n            \"protocol_fee_bps\": 25,\r\n            \"escrow_contract\": \"address\",\r\n            \"valid_for_seconds\": 60\r\n          },\r\n          \"xmr_route\": {\r\n            \"counterparty\": \"Wagyu (wagyu.xyz)\",\r\n            \"custody\": \"MENTAT never holds XMR ... Not trustless.\",\r\n            \"from_amount_atomic\": \"string\",\r\n            \"to_amount_atomic\": \"string\",\r\n            \"effective_cost_bps\": \"number (all-in: Wagyu's costs plus MENTAT's fee)\",\r\n            \"mentat_fee_bps\": 25,\r\n            \"mentat_fee_note\": \"string\",\r\n            \"integrator_fee\": \"{ feePercent, feeAmountUsd, feeAddress } as reported by Wagyu\",\r\n            \"tool_used\": \"string\",\r\n            \"estimated_time_seconds\": \"number\",\r\n            \"direction\": \"sell | buy\",\r\n            \"min_notional_usd\": \"25 | 500\",\r\n            \"max_notional_usd\": 5000,\r\n            \"valid_for_seconds\": 30,\r\n            \"reference\": \"{ source: hyperliquid, perp_mark, spot_mid, depth_1pct_usd, depth_side, divergence_pct, observed_at }\",\r\n            \"tier_max_notional_usd\": 5000,\r\n            \"depth_cap_usd\": \"number — half of the 1% depth on the side the order hits\"\r\n          }\r\n        }\r\n      },\r\n      \"examples\": [\r\n        \"Get a quote for swapping 1000 USDC to WETH\",\r\n        \"Quote 0.1 XMR to USDC on Base\",\r\n        \"How much XMR do I get for 600 USDC?\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"create_xmr_order\",\r\n      \"name\": \"Create XMR Order (Wagyu route)\",\r\n      \"description\": \"Create a durable XMR order routed through Wagyu: XMR -> USDC on Base or USDC on Base -> XMR. Returns the venue's exact deposit address, amount, and expiry (the funding instruction), settlement_path wagyu_route, route_legs, and proofs[] (empty until each leg confirms). MENTAT earns a 25 bps integrator fee applied inside Wagyu's quoted amount (mentat_fee_bps). Wagyu is the settlement counterparty; MENTAT never holds XMR; not trustless.\",\r\n      \"tags\": [\r\n        \"xmr\",\r\n        \"monero\",\r\n        \"wagyu\",\r\n        \"hyperliquid\",\r\n        \"order\"\r\n      ],\r\n      \"input\": {\r\n        \"method\": \"JSON-RPC or REST POST\",\r\n        \"rest\": \"POST /api/xmr/orders (JSON body with the same arguments)\",\r\n        \"jsonrpc\": {\r\n          \"method\": \"tasks/send\",\r\n          \"params\": {\r\n            \"skill_id\": \"create_xmr_order\",\r\n            \"arguments\": {\r\n              \"from_token\": \"XMR | USDC\",\r\n              \"to_token\": \"USDC | XMR\",\r\n              \"amount\": \"decimal string — amount of from_token (e.g. \\\"0.1\\\")\",\r\n              \"to_address\": \"string — destination address on the destination chain (required)\",\r\n              \"refund_address\": \"string (optional) — refund address on the source chain\"\r\n            }\r\n          }\r\n        }\r\n      },\r\n      \"output\": {\r\n        \"order\": {\r\n          \"order_id\": \"string\",\r\n          \"settlement_path\": \"wagyu_route\",\r\n          \"status\": \"awaiting_deposit\",\r\n          \"deposit\": {\r\n            \"address\": \"string\",\r\n            \"chain\": \"monero | base\",\r\n            \"token\": \"XMR | USDC\",\r\n            \"amount\": \"decimal string\",\r\n            \"amount_atomic\": \"string\"\r\n          },\r\n          \"to_address\": \"string\",\r\n          \"expected_output\": \"decimal string\",\r\n          \"mentat_fee_bps\": 25,\r\n          \"mentat_fee_usd\": \"decimal string | null\",\r\n          \"expires_at\": \"ISO 8601\",\r\n          \"route_legs\": \"array\",\r\n          \"proofs\": \"[]\",\r\n          \"next_steps\": \"array of instructions\",\r\n          \"status_check\": \"{ skill: check_xmr_order, arguments: { order_id, to_address } }\",\r\n          \"reference\": \"the quote-time Hyperliquid reference\"\r\n        },\r\n        \"quote\": \"the quote the order was created from\"\r\n      },\r\n      \"examples\": [\r\n        \"Create an order: 0.1 XMR to USDC, pay out to 0xYourBaseAddress\",\r\n        \"Buy XMR with 600 USDC, deliver to 4AdUnd...\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"check_xmr_order\",\r\n      \"name\": \"Check XMR Order (Wagyu route)\",\r\n      \"description\": \"Status of an XMR order by order_id plus its to_address\n\nArchive v1.4.1: 4 files, 15472 bytes\n\nFiles: clawhub-skill.json (24547b), skill-card.md (2076b), SKILL.md (17496b), _meta.json (125b)\n\nArchive v1.4.0: 4 files, 13872 bytes\n\nFiles: clawhub-skill.json (22901b), skill-card.md (2912b), SKILL.md (14488b), _meta.json (125b)\n\nArchive v1.3.0: 4 files, 8322 bytes\n\nFiles: clawhub-skill.json (12764b), skill-card.md (2537b), SKILL.md (6504b), _meta.json (125b)\n\nArchive v1.2.0: 3 files, 4008 bytes\n\nFiles: clawhub-skill.json (6349b), SKILL.md (3466b), _meta.json (125b)\n\nArchive v1.1.0: 3 files, 3943 bytes\n\nFiles: clawhub-skill.json (6268b), SKILL.md (3395b), _meta.json (125b)\n\nArchive v1.0.0: 3 files, 3907 bytes\n\nFiles: clawhub-skill.json (6348b), SKILL.md (3344b), _meta.json (125b)","readmeExcerpt":"Skill: MENTAT Owner: agora0x Summary: MENTAT, the agent-native OTC venue. Escrow settlement on Base (atomic, no admin keys), CoW Protocol relay (agent-signed, MEV-protected), and an XMR route via Wagyu (XMR/USDC both directions, three legs, one proof per leg). Every quote and order response carries settlement_path, route_legs, and proofs[]. Tags: agent-economy:1.0.0, base:1.0.0, crypto:1.0.0, defi:1.0.0, erc-8004:1.0","codeSnippets":[],"executableExamples":[],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\r\nname: mentat\r\ndescription: MENTAT, the agent-native OTC venue. Escrow settlement on Base (atomic, no admin keys), CoW Protocol relay (agent-signed, MEV-protected), and an XMR route via Wagyu (XMR/USDC both directions, three legs, one proof per leg). Every quote and order response carries settlement_path, route_legs, and proofs[].\r\nversion: 1.4.5\r\nmetadata:\r\n  openclaw:\r\n    requires:\r\n      bins:\r\n        - curl\r\n    emoji: \"🟩\"\r\n    homepage: https://mentat.market\r\n---\r\n\r\n# MENTAT — the agent-native OTC venue\r\n\r\nDisciplined intelligence. MENTAT settles token swaps for agents three ways, and every fill carries whatever its chain can prove.\r\n\r\n| settlement_path | What settles | Trust model | Proofs |\r\n|---|---|---|---|\r\n| `escrow` | 1:1 swap through a FloorEscrow contract on Base, 25 bps fee. V2 is behind `execute_trade`: both sides deposit, one atomic settlement. V3 is behind web deals (mentat.market/new and deal links): the maker funds the deal, the taker's fill settles it in one transaction. | Trustless: no owner, no pause, no upgrade. | V2: `escrow_create_tx`, then deposits and settlement on the contract page. V3: the fill transaction (`DealSettled`). |\r\n| `cow_relay` | The calling agent signs an EIP-712 order; MENTAT relays it to CoW Protocol's batch auction on Base. 25 bps partner fee inside the signed appData. | Non-custodial: MENTAT never holds funds. | `cow_order_uid`, then one `settlement_tx` per batch that filled it. |\r\n| `wagyu_route` | XMR in or out. XMR is routed through XMR1 on Hyperliquid by Wagyu, the settlement counterparty. MENTAT never holds XMR. 25 bps integrator fee applied inside Wagyu's quoted amount. | **Not trustless.** You rely on Wagyu to deliver; the route gives you a proof per leg instead. | `deposit_tx` (Monero hash on XMR legs), one `fill_tx` per Hyperliquid fill hash, `payout_tx`. |\r\n\r\nERC-8004 Agent #31596 on Base Mainnet. Contact: trade@mentat.market.\r\n\r\n## Response contract\r\n\r\nEvery quote and order response carries:\r\n\r\n- `settlement_path`: `escrow`, `cow_relay`, `wagyu_route`, or `quote_only` (a price with no executable path).\r\n- `route_legs[]`: the legs of that path, each `{ leg, name, chain, chain_id, proof_kind, proofs }` where `proofs` says how many proofs the leg can carry (`one`, `one or many`, `zero, one, or many`).\r\n- `proofs[]`: `{ chain, kind, hash, explorer_url }`, one entry per hash the chain has exposed so far. Empty on a quote. Nothing is inferred: a leg without a hash yet has no entry.\r\n\r\nAmounts on the XMR route are decimal strings. Never send a float.\r\n\r\n## Quick start\r\n\r\n### Quote (REST, x402-paid, $0.01 USDC on Base)\r\n\r\n```bash\r\ncurl -s \"https://api.mentat.market/api/quote?from=USDC&to=WETH&amount=1000\" | jq\r\n```\r\n\r\n### Quote (JSON-RPC / A2A)\r\n\r\n```bash\r\ncurl -s -X POST https://api.mentat.market/a2a \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\"jsonrpc\":\"2.0\",\"method\":\"tasks/send\",\"params\":{\"skill_id\":\"get_quote\",\"arguments\":{\"from_token\":\"USDC\",\"to_token\":\"WETH\",\"amount\":1000}},\"id"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7aae8wkdvhpxxqf0kkwfm6ps83t95a\",\n  \"slug\": \"mentat\",\n  \"version\": \"1.4.5\",\n  \"publishedAt\": 1790967313254\n}"},{"path":"skill-card.md","content":"## Description:\n\nMENTAT guides agents through token swaps using Base escrow, signed CoW orders, and Wagyu-routed XMR trades, with settlement evidence for each path.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[agora0x](https://clawhub.ai/user/agora0x)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nAgents and developers use MENTAT to request token-swap quotes, prepare or submit trades, and track settlement across Base escrow, CoW Protocol, and an XMR route.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Paid quotes and trade execution can incur fees or move funds.\n\nMitigation: Check addresses, amounts, fees, and payment terms before authorizing a quote, signature, deposit, or trade.\n\nRisk: CoW orders require a signature from the trader's wallet.\n\nMitigation: Review the full order and signed data before signing with your own wallet.\n\nRisk: The XMR route relies on Wagyu as a settlement counterparty and is not trustless.\n\nMitigation: Assess counterparty risk and use the created order's exact deposit address, amount, and expiry rather than a quote to fund it.\n\n## Reference(s):\n\n- [MENTAT homepage](https://mentat.market)\n- [MENTAT agent card](https://api.mentat.market/.well-known/agent.json)\n- [ClawHub skill listing](https://clawhub.ai/agora0x/skills/mentat)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, JSON responses]\n\n**Output Format:** [Markdown with curl examples and JSON response examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Quotes and orders describe settlement paths, route legs, and available transaction proofs.]\n\n## Skill Version(s):\n\n1.4.5 (source: release metadata and skill frontmatter)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."},{"path":"clawhub-skill.json","content":"{\r\n  \"name\": \"mentat\",\r\n  \"display_name\": \"MENTAT\",\r\n  \"description\": \"MENTAT: the agent-native OTC venue. Three settlement paths on one response contract: escrow on Base (atomic, no admin keys), CoW Protocol relay (agent-signed EIP-712 orders, MEV-protected, non-custodial), and an XMR route via Wagyu (XMR in/out routed through XMR1 on Hyperliquid; Wagyu is the settlement counterparty; MENTAT never holds XMR; not trustless). Every quote and order response carries settlement_path, route_legs, and proofs[]: one proof per leg, whatever its chain can prove.\",\r\n  \"tagline\": \"disciplined intelligence\",\r\n  \"version\": \"1.4.5\",\r\n  \"previous_slug\": \"floor-otc\",\r\n  \"author\": \"Agora0x\",\r\n  \"license\": \"MIT-0\",\r\n  \"contact\": \"trade@mentat.market\",\r\n  \"tags\": [\r\n    \"otc\",\r\n    \"trading\",\r\n    \"escrow\",\r\n    \"defi\",\r\n    \"swap\",\r\n    \"base\",\r\n    \"erc-8004\",\r\n    \"web3\",\r\n    \"tokens\",\r\n    \"agent-economy\",\r\n    \"cow-protocol\",\r\n    \"batch-auction\",\r\n    \"mev-protected\",\r\n    \"eip-712\",\r\n    \"relay\",\r\n    \"xmr\",\r\n    \"monero\",\r\n    \"wagyu\",\r\n    \"hyperliquid\",\r\n    \"proofs\"\r\n  ],\r\n  \"homepage\": \"https://mentat.market\",\r\n  \"receipts\": \"https://mentat.market/ledger\",\r\n  \"agent_id\": 31596,\r\n  \"registry\": \"ERC-8004 Base Mainnet\",\r\n  \"registry_address\": \"0x8004A169FB4a3325136EB29fA0ceB6D2e539a432\",\r\n  \"chain\": \"base\",\r\n  \"chain_id\": 8453,\r\n  \"escrow_contract\": \"0x9EC9d882C93F52621CBD0d146D3F2e0929E53AA7\",\r\n  \"escrow_contracts\": {\r\n    \"v2\": {\r\n      \"name\": \"FloorEscrow V2\",\r\n      \"address\": \"0x9EC9d882C93F52621CBD0d146D3F2e0929E53AA7\",\r\n      \"used_by\": \"execute_trade, check_trade and the Telegram bot\"\r\n    },\r\n    \"v3\": {\r\n      \"name\": \"FloorEscrow V3\",\r\n      \"address\": \"0x83818036539737a813D1D99f1c6Cd2867c7D6a6d\",\r\n      \"deploy_block\": 52006064,\r\n      \"used_by\": \"web deals: a maker posts at https://mentat.market/new and shares the deal link https://mentat.market/deal/{id}\",\r\n      \"flow\": \"The maker funds the deal when creating it; the taker's fill settles both legs in one transaction; only the maker can cancel. A deal is not listed on MENTAT, but it is public on-chain and anyone with the link can fill it at the stated price. No skill calls V3: maker and taker use their own wallets.\",\r\n      \"post\": \"https://mentat.market/new\",\r\n      \"deal_link\": \"https://mentat.market/deal/{id}\"\r\n    }\r\n  },\r\n  \"cow_settlement\": \"0x9008D19f58AAbD9eD0D60971565AA8510560ab41\",\r\n  \"cow_vault_relayer\": \"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110\",\r\n  \"endpoints\": {\r\n    \"agent_card\": \"https://api.mentat.market/.well-known/agent.json\",\r\n    \"a2a\": \"https://api.mentat.market/a2a\",\r\n    \"rest_quote\": \"https://api.mentat.market/api/quote\",\r\n    \"rest_xmr_orders\": \"https://api.mentat.market/api/xmr/orders\",\r\n    \"rest_routes\": \"https://api.mentat.market/api/routes\",\r\n    \"rest_prices\": \"https://api.mentat.market/api/prices\",\r\n    \"health\": \"https://api.mentat.market/health\",\r\n    \"telegram\": \"https://t.me/FloorOTCbot\",\r\n    \"mcp\": \"https://api.mentat.market/mcp\",\r\n    \"mcp_sse\": \"ht"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":2019,"uniquenessScore":37,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T10:42:39.369Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T10:42:39.369Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T13:31:58.272Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}