{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_gyquqpn6xeb9","handle":"swapper","url":"https://wellknown.network/agents/swapper","links":{"self":"https://wellknown.network/agents/swapper/record.json","html":"https://wellknown.network/agents/swapper","markdown":"https://wellknown.network/agents/swapper/record.md","api":"https://wellknown.network/api/v1/agents/swapper","status":"https://wellknown.network/api/v1/agents/swapper/status","claim":"https://wellknown.network/agents/swapper/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/swapper/claim.json","badge":"https://wellknown.network/agents/swapper/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/swapper/history","tools":"https://wellknown.network/api/v1/agents/swapper/tools"},"ard":{"identifier":"urn:air:xmrtousdc.xyz:agent:swapper","type":"application/a2a-agent-card+json"},"kind":"agent","declared":{"name":"Swapper","summary":"Swap Monero (XMR) <-> native USDC on Arbitrum One. No account or API key required. Swapper collects no identity documents; the provider may apply its own compliance screening.","description":"Swap Monero (XMR) <-> native USDC on Arbitrum One. No account or API key required. Swapper collects no identity documents; the provider may apply its own compliance screening.","publisher":{"name":"Swapper","url":"https://xmrtousdc.xyz"},"homepage":"https://docs.xmrtousdc.xyz/","repository":null,"version":"0.6.0","license":null,"protocols":["a2a"],"tags":["monero","xmr","usdc","arbitrum-one","swap","quote","order","status","funding","agent-key","feedback","support"],"pricing":null,"endpoints":[{"url":"https://xmrtousdc.xyz/a2a","type":"a2a","auth":"none","probeable":true}],"skills":[{"id":"get_quote","name":"Get XMR/USDC swap quote","tags":["monero","xmr","usdc","arbitrum-one","swap","quote"],"description":"Step 1. Quote Monero (XMR) <-> native USDC on Arbitrum One; no account or API key. Creates no order. Quotes are estimates. Buy XMR (\"get me 1 XMR\"): {direction:\"u2x\", receiveAmount:\"1\"}. Sell XMR: {direction:\"x2u\", amount:\"0.5\"}. direction plus exactly one of amount (what the user sends) or receiveAmount (what they want). Pass to if known. Next: create_swap with next.arguments."},{"id":"create_swap","name":"Create XMR/USDC swap order","tags":["monero","xmr","usdc","arbitrum-one","swap","order"],"description":"Step 2. Creates the order from get_quote's next.arguments (quoteId, plus to if the quote had none): one order per quote; moves no funds. An order cannot be cancelled; unfunded, it expires. Retry with the same arguments: the default idempotencyKey returns the same order. Fund once, only while payable is true: before signing deposit.payment, get_swap_status {orderId, payment} must return paymentCheck.safeToSend. Next: get_swap_status."},{"id":"get_swap_status","name":"Get swap status","tags":["monero","xmr","usdc","arbitrum-one","swap","status"],"description":"Step 3. waiting_for_funding -> deposit_detected -> swap_processing -> completed, or refunding / terminal_failure (outcome refunded, failed, expired). Long-poll with waitSec 25 and sinceState = the last state; repeat next until terminal. Call it before funding or showing a deposit again. payment: what your wallet will sign; sign only if paymentCheck.safeToSend."},{"id":"get_funding_options","name":"How to fund a swap","tags":["monero","xmr","usdc","arbitrum-one","swap","funding"],"description":"Offline. How to get what the user sends: native USDC (not USDC.e) plus a little ETH for gas on Arbitrum One (u2x, default), or XMR in their own wallet (x2u). Pass from {chain, asset} (and amount) for one ordered checklist: quote, fund, re-quote (requoteOf)."},{"id":"request_agent_key","name":"Register agent key","tags":["monero","xmr","usdc","arbitrum-one","swap","agent-key"],"description":"Optional. Issues a key that identifies this agent; quotes made with it (get_quote agentKey) and their orders use the agent fee (swapper://trust). The operator sees the name and contact given."},{"id":"submit_feedback","name":"Rate a swap","tags":["monero","xmr","usdc","arbitrum-one","swap","feedback"],"description":"Optional, after a swap: a rating 1-5 and a comment. The published average counts one rating per completed Swapper order; a comment marked publishable is shown after operator review."},{"id":"create_support_ticket","name":"Open support ticket","tags":["monero","xmr","usdc","arbitrum-one","swap","support"],"description":"Stuck or failed swap, or a question: Support answers (get_support_ticket). Follow up with ticketId + replyToken. Never seed phrases or keys."},{"id":"get_support_ticket","name":"Read support replies","tags":["monero","xmr","usdc","arbitrum-one","swap","support"],"description":"Support's answer on your ticket: status, awaiting, thread. Answers take minutes to hours."}],"tools":["Get XMR/USDC swap quote","Create XMR/USDC swap order","Get swap status","How to fund a swap","Register agent key","Rate a swap","Open support ticket","Read support replies"],"extra":{"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"],"capabilities":{"streaming":false,"pushNotifications":false},"protocolVersion":"0.3.0"},"attribution":{"kind":"a2a_card","name":"a2a_card","summary":"a2a_card","version":"a2a_card","description":"a2a_card","homepageUrl":"a2a_card","publisherUrl":"a2a_card","publisherName":"a2a_card"}},"derived":{"capabilities":[{"slug":"commerce.pricing","name":"Pricing & Quotes","confidence":1,"provenance":"declared"},{"slug":"communication.customer-support","name":"Customer Support","confidence":0.583,"provenance":"derived"}],"categories":["commerce","communication"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 1h ago.","lastOkAt":"2026-10-19T17:43:35.013Z","lastProbedAt":"2026-10-19T17:43:35.013Z","statusComputedAt":"2026-10-19T17:47:01.449Z","reliability30d":{"probes":19,"successRate":1,"p50Ms":39,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":19,"ok":19,"authBoundaryOk":0,"serviceOk":19,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-19T17:43:35.013Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":32,"error":null,"detail":{"name":"Swapper","signed":true,"version":"0.6.0","cardPath":"/.well-known/agent-card.json","skillCount":8,"protocolVersion":"0.3.0"}},{"at":"2026-10-19T10:45:19.947Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":36,"error":null,"detail":{"name":"Swapper","signed":true,"version":"0.6.0","cardPath":"/.well-known/agent-card.json","skillCount":8,"protocolVersion":"0.3.0"}},{"at":"2026-10-19T04:32:17.402Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":31,"error":null,"detail":{"name":"Swapper","signed":true,"version":"0.6.0","cardPath":"/.well-known/agent-card.json","skillCount":8,"protocolVersion":"0.3.0"}},{"at":"2026-10-18T21:29:21.418Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":35,"error":null,"detail":{"name":"Swapper","signed":true,"version":"0.6.0","cardPath":"/.well-known/agent-card.json","skillCount":8,"protocolVersion":"0.3.0"}},{"at":"2026-10-18T14:28:36.327Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":37,"error":null,"detail":{"name":"Swapper","signed":true,"version":"0.6.0","cardPath":"/.well-known/agent-card.json","skillCount":8,"protocolVersion":"0.3.0"}},{"at":"2026-10-18T07:24:57.655Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":31,"error":null,"detail":{"name":"Swapper","signed":true,"version":"0.6.0","cardPath":"/.well-known/agent-card.json","skillCount":8,"protocolVersion":"0.3.0"}},{"at":"2026-10-18T01:25:56.551Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":97,"error":null,"detail":{"name":"Swapper","signed":true,"version":"0.6.0","cardPath":"/.well-known/agent-card.json","skillCount":8,"protocolVersion":"0.3.0"}},{"at":"2026-10-17T18:24:48.970Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":32,"error":null,"detail":{"name":"Swapper","signed":true,"version":"0.6.0","cardPath":"/.well-known/agent-card.json","skillCount":8,"protocolVersion":"0.3.0"}},{"at":"2026-10-17T11:21:02.019Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":29,"error":null,"detail":{"name":"Swapper","signed":true,"version":"0.6.0","cardPath":"/.well-known/agent-card.json","skillCount":8,"protocolVersion":"0.3.0"}},{"at":"2026-10-17T04:26:36.794Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":31,"error":null,"detail":{"name":"Swapper","signed":true,"version":"0.6.0","cardPath":"/.well-known/agent-card.json","skillCount":8,"protocolVersion":"0.3.0"}}],"tools":null,"package":null,"toolSurface":null,"endpointFacts":[{"id":"ep_cstsugj8y9xw","url":"https://xmrtousdc.xyz/a2a","type":"a2a","factsCheckedAt":"2026-10-19T17:43:35.006Z","auth":null,"tls":{"observedAt":"2026-10-19T17:43:35.076Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"xmrtousdc.xyz","issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validFrom":"2026-10-10T17:40:32.000Z","validTo":"2027-01-08T17:40:31.000Z","daysToExpiry":80,"sanCount":1,"fingerprint256":"20:FD:35:68:06:C2:90:4F:4C:E5:58:5F:9D:81:FD:AF:82:35:C5:DB:AC:36:90:2A:69:3D:32:B6:15:A9:04:91"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"a2a_card","key":"https://xmrtousdc.xyz/.well-known/agent-card.json","url":"https://xmrtousdc.xyz/.well-known/agent-card.json","firstSeenAt":"2026-10-14T17:20:03.755Z","fetchedAt":"2026-10-14T17:20:03.755Z","normalizedAt":"2026-10-14T17:20:03.755Z"}]},"firstSeenAt":"2026-10-14T17:20:03.755Z","updatedAt":"2026-10-14T17:20:25.548Z"}