Swapper - XMR to USDC swaps

xyz.xmrtousdcPublished by xmrtousdc.xyzOfficial publisherv0.6.0Updated Oct 24, 2026

Swap Monero (XMR) <-> native USDC on Arbitrum One. No account or API key required. For AI agents.

VerifiedStreamable HTTPWeb executableFinanceBusiness & Commerce

Overview

AI-generated overview

Remote MCP server that lets an assistant quote and place swaps between Monero (XMR) and native USDC on Arbitrum One, then track funding and status.

What you can do
Quote XMR to USDC or USDC to XMR swaps and get the arguments needed to create an order, without an account or API key. Create one order per quote, with idempotent retries, and check its state through funding, processing, completion, refund or failure. Look up funding instructions for the asset the user sends, and find lost orders by idempotency key or session ID. Validate partial requests and read supported chains, limits and flow rules. Open and read support tickets, submit feedback, and optionally request an agent key.
When to use it
Useful when someone wants an assistant to move value between Monero and USDC on Arbitrum One, or to check the state of an existing swap, including recovering an order whose ID was lost.
Requirements
A remote streamable HTTP endpoint; no account, API key, environment variables or headers are declared. The user needs a wallet holding the asset they send: native USDC plus a little ETH for gas on Arbitrum One, or XMR in their own wallet.
Before you install
Swaps move real funds: the user must fund the deposit themselves, and an order cannot be cancelled once created (unfunded orders expire). Quotes are estimates only. Support tickets and feedback are sent to the operator, who sees the name and contact given for an agent key; never share seed phrases or private keys.

Installation

In SourceWeft

  1. Open Swapper - XMR to USDC swaps in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/xyz.xmrtousdc%2Fmonero-swap/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "swapper-xmr-to-usdc-swaps": {
      "type": "http",
      "url": "https://xmrtousdc.xyz/mcp"
    }
  }
}

Tools

11

get_quote

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.

ParameterstobasischainamountdetailagentKeydirectionrequoteOfreceiveAmount

create_swap

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.

ParameterstodetailquoteIdrequiredidempotencyKeyquoteIntentDigest

get_swap_status

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.

ParametersdetailverifyorderIdrequiredpaymentwaitSecsinceState

get_funding_options

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).

Parametersfromamountdetaildirection

list_swaps

Find my 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 state, payable).

ParametersdetailsessionIdidempotencyKey

plan_swap

Validate swap inputs

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.

ParameterstoamountdetaildirectionreceiveAmount

get_capabilities

Swapper capabilities

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

Parametersdetail

create_support_ticket

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.

ParametersdetailmessagerequiredorderIdcategoryticketIdsessionIdreplyTokenwalletAddress

get_support_ticket

Read support replies

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

ParametersdetailticketIdrequiredreplyTokenrequired

submit_feedback

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.

ParametersdetailratingrequiredcommentorderIdagentNamepublishable

request_agent_key

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.

ParametersdetailcontactpurposeagentName

Version history

1
  1. v0.6.0LatestOct 13, 2026

Score

83% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts

    Declare a GitHub repository with a README, or serve resource_documentation in the OAuth protected-resource metadata.

  • LicenseNot applicable

    A hosted service is used under its provider's terms, so no license is expected here. This check is left out of the percentage.