Skip to content
Swapper logo

Swapper MCP server

Which MCP servers are Swapper's own, from the official registry and from asking its own domain, whether they answer, and what they offer. A program checked each of these, nobody copied them from a product page.

read 2026-10-27

← Back to Swapper

Whose server it is
  • Registry namexyz.xmrtousdc/monero-swapverified in the MCP registry

The registry name sits under xmrtousdc.xyz. The registry only lets a publisher use that namespace after proving control of the domain through DNS or HTTP.

When we asked itchecked 2026-10-27
  • Stateanswerschecked 2026-10-27
  • Tools11
  • Server calls itselfswapper-mcp-server
  • Server version0.6.0
  • Protocol version2025-06-18

On 2026-10-27 the server answered initialize and tools/list without a sign-in. First answer in 190 ms.

Should an agent connect itConnect it, with care
  • Its tools do every use case we checked: convert xmr into usdc on arbitrum one; let an ai agent quote and run an xmr swap via mcp.

Once connected

  • For "convert xmr into usdc on arbitrum one", the likely first call is get_quote.
  • For "let an ai agent quote and run an xmr swap via mcp", the likely first call is get_quote.
  • create_swap, create_support_ticket change data without a sign-in: anyone with the address can call them.
  • Parameters are untyped or undescribed in 11 of 11 tools: check arguments before calling.

Said by rules from the measurements above. The likely first call is a model's pick from the tool list; read its description before relying on it.

Measured dailydaily checks: 9, the first on 2026-10-27
  • INITE MCP score77 of 100answers 100 · does the job 100 · definitions 83 · context 100 · connects 100 · lowered by the warning signs below
  • What an agent can do with it2 of 2 use cases
  • Answered100% of days9 of 9 daily checks
  • Median first answer536 ms
  • Space in an agent's context≈ 2,368 tokensthe definitions of all its tools (11), which an agent carries on every turn
  • Tool definitionsB · 83 of 100
  • Typed results11 of 11 toolsdeclared outputSchema: results come typed, read once
  • Parameters without a description: in 11 of 11

What an agent can do with it

  • can do · convert xmr into usdc on arbitrum one
  • not sure · send the usdc proceeds to an arbitrum one address
  • can do · let an ai agent quote and run an xmr swap via mcp

Each of the product's use cases, put to Jev against this server's tool list: can an agent do it with these tools?

Worth a look

  • Tools that change data, on a server that answers without a sign-in: create_swap, create_support_ticket

A program checks the server once a day: initialize and tools/list, no model. Tokens are the definitions' length at about four characters a token. The grade averages six checks of every tool's name, description, schema and annotations; it says how well the tools are described, not whether they work. The score weighs what was measured and nothing else: answering (25%), doing the product's job (25%), definitions (20%), context (10%), use (10%) and how readily a client connects (10%). A part that was not measured is left out, and a hidden instruction caps the score at 40. The state of vendors' MCP servers: method and numbers →

Tools it offers11 tools · read 2026-10-27
  • get_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"}…

  • create_swap

    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…

  • 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…

  • get_funding_options

    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…

  • list_swaps

    Find orders when the orderId is lost (new chat, crash, unknown create outcome): pass the idempotencyKey create_swap used (default q_<quoteId>), or a sessionId. Read-only; addresses redacted; states can lag. Next: get_swap_status (live…

  • plan_swap

    Optional, offline. Checks a partial request (direction, amount or receiveAmount, to) and returns the next question for the user. Skip it when you have what get_quote needs.

  • get_capabilities

    Optional. Chains, limits (provider minimum, USD), quote window, idempotency, validation rules, polling and the flow.

  • create_support_ticket

    Stuck or failed swap, or a question: Support answers (get_support_ticket). Follow up with ticketId + replyToken. Never seed phrases or keys.

  • get_support_ticket

    Support's answer on your ticket: status, awaiting, thread. Answers take minutes to hours.

  • submit_feedback

    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.

  • request_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.

How to connect

Add the server to your MCP client config. Claude Desktop, Cursor and most other clients read this shape:

{
  "mcpServers": {
    "monero-swap": {
      "type": "http",
      "url": "https://xmrtousdc.xyz/mcp"
    }
  }
}

Add it

Claude Code, in a terminal

claude mcp add --transport http xmrtousdc https://xmrtousdc.xyz/mcp

Add to CursorAdd to VS Code

claude.ai, ChatGPT and other clients: add https://xmrtousdc.xyz/mcp as a custom connector in the settings.

OpenAPI spec

20 paths, read 2026-10-27. Open the spec ↗

Each line is something a program found when it went looking: the registry entry, the server's own answer, a spec that parses. A missing line means we did not find it, not that it does not exist.