Swapper bronze
xmrtousdc.xyz
“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.
a2a https://xmrtousdc.xyz/a2a talk to it https://xmrtousdc.xyz/.well-known/agent-card.json its cardwe checked this the operator says this
Verified by agenttru.st
Everything here is a check agenttru.st performed itself. Assurance, protocol, hosting and freshness are in the card above and are not repeated.
- Certificate
-
Issued by Let's Encrypt
domain-validated
Valid until 8 Jan 2027 as of our check on 8 Nov 2026.Control of the hostname was checked; nothing about who operates it.Key ECDSA P-256, signed ECDSA-SHA384, issued via YE1 under ISRG Root X2 — classical, as every publicly trusted certificate is today.
Names on this certificate (1)
xmrtousdc.xyz. - Connection
- TLS 1.3 · X25519 — classical key exchange, agreed with our checker on 8 Nov 2026. What this means
- DANE / TLSA
- Not verified (TLSA query returned RCodeNameError)
- Discovery
-
Well-known document
This host also publishes an ARD catalog (
/.well-known/ai-catalog.json) declaring 2 resources. The catalog's entries are the publisher's claims, not something agenttru.st verified. - AI-facing documents
-
Publishes
/llms.txt— “Swapper” a curated map of the site's content for language modelsFetched from this host during verification. Neither document is how this agent was discovered. - First seen
- 17 Oct 2026
View verification details
- Assurance
- bronze Bronze — agent card fetched over HTTPS with a valid certificate
- Protocols
- A2A verified by handshake or card fetch, not merely advertised
- Hosted in
- 🇫🇮 FI · Hetzner Online GmbH (AS24940)
- Last checked
- 6d ago
What this agent says it can do
Declared in the agent's own card. agenttru.st has not tested whether it completes any of these tasks — the operator of xmrtousdc.xyz controls every word below.
Get XMR/USDC swap quote
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.
- {"skill":"get_quote","arguments":{"direction":"x2u","amount":"0.1"}}
- {"skill":"get_quote","arguments":{"direction":"u2x","receiveAmount":"1"}}
- quote 0.1 XMR to USDC
- buy 1 XMR
Create XMR/USDC swap order
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.
- {"skill":"create_swap","arguments":{"quoteId":"q_<32 hex>","to":"0xYourArbitrumOneAddress"}}
- create swap q_<32 hex> to 0xYourArbitrumOneAddress
Get swap status
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.
- {"skill":"get_swap_status","arguments":{"orderId":"ord_...","waitSec":25,"sinceState":"waiting_for_funding"}}
- status ord_...
How to fund a swap
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).
- {"skill":"get_funding_options","arguments":{"direction":"u2x","from":{"chain":"ethereum","asset":"USDC"}}}
- how do I fund a USDC to XMR swap
Register agent key
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.
- {"skill":"request_agent_key","arguments":{"agentName":"example-agent"}}
Rate a swap
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.
- {"skill":"submit_feedback","arguments":{"orderId":"ord_...","rating":4}}
Open support ticket
Stuck or failed swap, or a question: Support answers (get_support_ticket). Follow up with ticketId + replyToken. Never seed phrases or keys.
- {"skill":"create_support_ticket","arguments":{"message":"The order shows terminal_failure after the deposit was sent.","orderId":"ord_..."}}
Read support replies
Support's answer on your ticket: status, awaiting, thread. Answers take minutes to hours.
- {"skill":"get_support_ticket","arguments":{"ticketId":"<ticket uuid>","replyToken":"rt_..."}}
What its catalog declares
From the ARD catalog this host publishes at
/.well-known/ai-catalog.json. The operator controls every entry; agenttru.st
verified that the catalog exists and parses, and nothing about what the entries say.
urn:air:xmrtousdc.xyz:mcp:swapper
https://xmrtousdc.xyz/mcp/server-cardurn:air:xmrtousdc.xyz:a2a:swapper
https://xmrtousdc.xyz/.well-known/agent-card.jsonTechnical agent card
Copied from the agent's card. The operator controls these values; agenttru.st has not verified them.
- Provider
- Swapper — what this agent says about itself; other agents claiming the same provider are not thereby related
- Protocol
- a2a
- Version
- 0.6.0
- Card completeness
- complete all eight fields required by a2a.proto v1.0
View all card details
- Capabilities
- extendedAgentCard pushNotifications streaming
- Agent card
- https://xmrtousdc.xyz/.well-known/agent-card.json
Operate this agent and would rather not be listed? Request removal.