{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_a5f75gbrsa3z","handle":"swapper-xmr-to-usdc-swaps","url":"https://wellknown.network/agents/swapper-xmr-to-usdc-swaps","links":{"self":"https://wellknown.network/agents/swapper-xmr-to-usdc-swaps/record.json","html":"https://wellknown.network/agents/swapper-xmr-to-usdc-swaps","markdown":"https://wellknown.network/agents/swapper-xmr-to-usdc-swaps/record.md","api":"https://wellknown.network/api/v1/agents/swapper-xmr-to-usdc-swaps","status":"https://wellknown.network/api/v1/agents/swapper-xmr-to-usdc-swaps/status","claim":"https://wellknown.network/agents/swapper-xmr-to-usdc-swaps/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/swapper-xmr-to-usdc-swaps/claim.json","badge":"https://wellknown.network/agents/swapper-xmr-to-usdc-swaps/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/swapper-xmr-to-usdc-swaps/history","tools":"https://wellknown.network/api/v1/agents/swapper-xmr-to-usdc-swaps/tools"},"ard":{"identifier":"urn:air:xmrtousdc.xyz:server:swapper-xmr-to-usdc-swaps","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Swapper - XMR to USDC swaps","summary":"Swap Monero (XMR) <-> native USDC on Arbitrum One. No account or API key required. For AI agents.","description":"Swap Monero (XMR) <-> native USDC on Arbitrum One. No account or API key required. For AI agents.","publisher":{"name":"xyz.xmrtousdc","url":null},"homepage":"https://xmrtousdc.xyz","repository":null,"version":"0.6.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://xmrtousdc.xyz/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-13T15:30:36.904003Z","publishedAt":"2026-10-13T15:30:36.904003Z","registryName":"xyz.xmrtousdc/monero-swap"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"commerce.pricing","name":"Pricing & Quotes","confidence":1,"provenance":"derived"},{"slug":"communication.customer-support","name":"Customer Support","confidence":0.583,"provenance":"derived"},{"slug":"dev.terminal","name":"Terminal & Shell","confidence":0.525,"provenance":"derived"}],"categories":["commerce","communication","dev"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 4h ago.","lastOkAt":"2026-10-23T03:24:12.141Z","lastProbedAt":"2026-10-23T03:24:12.141Z","statusComputedAt":"2026-10-23T03:26:38.320Z","reliability30d":{"probes":31,"successRate":1,"p50Ms":36,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":31,"ok":31,"authBoundaryOk":0,"serviceOk":31,"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-23T03:24:12.141Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":36,"error":null,"detail":{"tools":[{"name":"get_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:"},{"name":"create_swap","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 canc"},{"name":"get_swap_status","description":"Step 3. waiting_for_funding -> deposit_detected -> swap_processing -> completed, or refunding / terminal_failure (outcome refunded, failed, expired). Long-poll "},{"name":"get_funding_options","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). Pa"},{"name":"list_swaps","description":"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. "},{"name":"plan_swap","description":"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_"},{"name":"get_capabilities","description":"Optional. Chains, limits (provider minimum, USD), quote window, idempotency, validation rules, polling and the flow."},{"name":"create_support_ticket","description":"Stuck or failed swap, or a question: Support answers (get_support_ticket). Follow up with ticketId + replyToken. Never seed phrases or keys."},{"name":"get_support_ticket","description":"Support's answer on your ticket: status, awaiting, thread. Answers take minutes to hours."},{"name":"submit_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 a"},{"name":"request_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 s"}],"toolCount":11,"toolsHash":"e92419907b5f0a6260bbf3181790320017618bb83f6f72fe4393e7feab21d32c","serverName":"swapper-mcp-server","capabilities":["tools","resources","prompts"],"serverVersion":"0.6.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-22T21:30:41.569Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":33,"error":null,"detail":{"tools":[{"name":"get_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:"},{"name":"create_swap","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 canc"},{"name":"get_swap_status","description":"Step 3. waiting_for_funding -> deposit_detected -> swap_processing -> completed, or refunding / terminal_failure (outcome refunded, failed, expired). Long-poll "},{"name":"get_funding_options","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). Pa"},{"name":"list_swaps","description":"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. "},{"name":"plan_swap","description":"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_"},{"name":"get_capabilities","description":"Optional. Chains, limits (provider minimum, USD), quote window, idempotency, validation rules, polling and the flow."},{"name":"create_support_ticket","description":"Stuck or failed swap, or a question: Support answers (get_support_ticket). Follow up with ticketId + replyToken. Never seed phrases or keys."},{"name":"get_support_ticket","description":"Support's answer on your ticket: status, awaiting, thread. Answers take minutes to hours."},{"name":"submit_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 a"},{"name":"request_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 s"}],"toolCount":11,"toolsHash":"e92419907b5f0a6260bbf3181790320017618bb83f6f72fe4393e7feab21d32c","serverName":"swapper-mcp-server","capabilities":["tools","resources","prompts"],"serverVersion":"0.6.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-22T14:29:36.852Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":81,"error":null,"detail":{"tools":[{"name":"get_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:"},{"name":"create_swap","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 canc"},{"name":"get_swap_status","description":"Step 3. waiting_for_funding -> deposit_detected -> swap_processing -> completed, or refunding / terminal_failure (outcome refunded, failed, expired). Long-poll "},{"name":"get_funding_options","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). Pa"},{"name":"list_swaps","description":"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. "},{"name":"plan_swap","description":"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_"},{"name":"get_capabilities","description":"Optional. Chains, limits (provider minimum, USD), quote window, idempotency, validation rules, polling and the flow."},{"name":"create_support_ticket","description":"Stuck or failed swap, or a question: Support answers (get_support_ticket). Follow up with ticketId + replyToken. Never seed phrases or keys."},{"name":"get_support_ticket","description":"Support's answer on your ticket: status, awaiting, thread. Answers take minutes to hours."},{"name":"submit_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 a"},{"name":"request_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 s"}],"toolCount":11,"toolsHash":"e92419907b5f0a6260bbf3181790320017618bb83f6f72fe4393e7feab21d32c","serverName":"swapper-mcp-server","capabilities":["tools","resources","prompts"],"serverVersion":"0.6.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-22T08:26:42.635Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":37,"error":null,"detail":{"tools":[{"name":"get_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:"},{"name":"create_swap","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 canc"},{"name":"get_swap_status","description":"Step 3. waiting_for_funding -> deposit_detected -> swap_processing -> completed, or refunding / terminal_failure (outcome refunded, failed, expired). Long-poll "},{"name":"get_funding_options","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). Pa"},{"name":"list_swaps","description":"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. "},{"name":"plan_swap","description":"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_"},{"name":"get_capabilities","description":"Optional. Chains, limits (provider minimum, USD), quote window, idempotency, validation rules, polling and the flow."},{"name":"create_support_ticket","description":"Stuck or failed swap, or a question: Support answers (get_support_ticket). Follow up with ticketId + replyToken. Never seed phrases or keys."},{"name":"get_support_ticket","description":"Support's answer on your ticket: status, awaiting, thread. Answers take minutes to hours."},{"name":"submit_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 a"},{"name":"request_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 s"}],"toolCount":11,"toolsHash":"e92419907b5f0a6260bbf3181790320017618bb83f6f72fe4393e7feab21d32c","serverName":"swapper-mcp-server","capabilities":["tools","resources","prompts"],"serverVersion":"0.6.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-22T01:34:27.788Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":34,"error":null,"detail":{"tools":[{"name":"get_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:"},{"name":"create_swap","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 canc"},{"name":"get_swap_status","description":"Step 3. waiting_for_funding -> deposit_detected -> swap_processing -> completed, or refunding / terminal_failure (outcome refunded, failed, expired). Long-poll "},{"name":"get_funding_options","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). Pa"},{"name":"list_swaps","description":"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. "},{"name":"plan_swap","description":"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_"},{"name":"get_capabilities","description":"Optional. Chains, limits (provider minimum, USD), quote window, idempotency, validation rules, polling and the flow."},{"name":"create_support_ticket","description":"Stuck or failed swap, or a question: Support answers (get_support_ticket). Follow up with ticketId + replyToken. Never seed phrases or keys."},{"name":"get_support_ticket","description":"Support's answer on your ticket: status, awaiting, thread. Answers take minutes to hours."},{"name":"submit_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 a"},{"name":"request_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 s"}],"toolCount":11,"toolsHash":"e92419907b5f0a6260bbf3181790320017618bb83f6f72fe4393e7feab21d32c","serverName":"swapper-mcp-server","capabilities":["tools","resources","prompts"],"serverVersion":"0.6.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-21T18:32:20.767Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":36,"error":null,"detail":{"tools":[{"name":"get_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:"},{"name":"create_swap","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 canc"},{"name":"get_swap_status","description":"Step 3. waiting_for_funding -> deposit_detected -> swap_processing -> completed, or refunding / terminal_failure (outcome refunded, failed, expired). Long-poll "},{"name":"get_funding_options","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). Pa"},{"name":"list_swaps","description":"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. "},{"name":"plan_swap","description":"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_"},{"name":"get_capabilities","description":"Optional. Chains, limits (provider minimum, USD), quote window, idempotency, validation rules, polling and the flow."},{"name":"create_support_ticket","description":"Stuck or failed swap, or a question: Support answers (get_support_ticket). Follow up with ticketId + replyToken. Never seed phrases or keys."},{"name":"get_support_ticket","description":"Support's answer on your ticket: status, awaiting, thread. Answers take minutes to hours."},{"name":"submit_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 a"},{"name":"request_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 s"}],"toolCount":11,"toolsHash":"e92419907b5f0a6260bbf3181790320017618bb83f6f72fe4393e7feab21d32c","serverName":"swapper-mcp-server","capabilities":["tools","resources","prompts"],"serverVersion":"0.6.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-21T09:34:20.922Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":36,"error":null,"detail":{"tools":[{"name":"get_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:"},{"name":"create_swap","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 canc"},{"name":"get_swap_status","description":"Step 3. waiting_for_funding -> deposit_detected -> swap_processing -> completed, or refunding / terminal_failure (outcome refunded, failed, expired). Long-poll "},{"name":"get_funding_options","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). Pa"},{"name":"list_swaps","description":"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. "},{"name":"plan_swap","description":"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_"},{"name":"get_capabilities","description":"Optional. Chains, limits (provider minimum, USD), quote window, idempotency, validation rules, polling and the flow."},{"name":"create_support_ticket","description":"Stuck or failed swap, or a question: Support answers (get_support_ticket). Follow up with ticketId + replyToken. Never seed phrases or keys."},{"name":"get_support_ticket","description":"Support's answer on your ticket: status, awaiting, thread. Answers take minutes to hours."},{"name":"submit_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 a"},{"name":"request_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 s"}],"toolCount":11,"toolsHash":"e92419907b5f0a6260bbf3181790320017618bb83f6f72fe4393e7feab21d32c","serverName":"swapper-mcp-server","capabilities":["tools","resources","prompts"],"serverVersion":"0.6.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-21T01:25:51.325Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":37,"error":null,"detail":{"tools":[{"name":"get_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:"},{"name":"create_swap","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 canc"},{"name":"get_swap_status","description":"Step 3. waiting_for_funding -> deposit_detected -> swap_processing -> completed, or refunding / terminal_failure (outcome refunded, failed, expired). Long-poll "},{"name":"get_funding_options","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). Pa"},{"name":"list_swaps","description":"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. "},{"name":"plan_swap","description":"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_"},{"name":"get_capabilities","description":"Optional. Chains, limits (provider minimum, USD), quote window, idempotency, validation rules, polling and the flow."},{"name":"create_support_ticket","description":"Stuck or failed swap, or a question: Support answers (get_support_ticket). Follow up with ticketId + replyToken. Never seed phrases or keys."},{"name":"get_support_ticket","description":"Support's answer on your ticket: status, awaiting, thread. Answers take minutes to hours."},{"name":"submit_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 a"},{"name":"request_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 s"}],"toolCount":11,"toolsHash":"e92419907b5f0a6260bbf3181790320017618bb83f6f72fe4393e7feab21d32c","serverName":"swapper-mcp-server","capabilities":["tools","resources","prompts"],"serverVersion":"0.6.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-20T18:28:17.124Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":38,"error":null,"detail":{"tools":[{"name":"get_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:"},{"name":"create_swap","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 canc"},{"name":"get_swap_status","description":"Step 3. waiting_for_funding -> deposit_detected -> swap_processing -> completed, or refunding / terminal_failure (outcome refunded, failed, expired). Long-poll "},{"name":"get_funding_options","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). Pa"},{"name":"list_swaps","description":"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. "},{"name":"plan_swap","description":"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_"},{"name":"get_capabilities","description":"Optional. Chains, limits (provider minimum, USD), quote window, idempotency, validation rules, polling and the flow."},{"name":"create_support_ticket","description":"Stuck or failed swap, or a question: Support answers (get_support_ticket). Follow up with ticketId + replyToken. Never seed phrases or keys."},{"name":"get_support_ticket","description":"Support's answer on your ticket: status, awaiting, thread. Answers take minutes to hours."},{"name":"submit_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 a"},{"name":"request_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 s"}],"toolCount":11,"toolsHash":"e92419907b5f0a6260bbf3181790320017618bb83f6f72fe4393e7feab21d32c","serverName":"swapper-mcp-server","capabilities":["tools","resources","prompts"],"serverVersion":"0.6.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-20T11:27:18.094Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":34,"error":null,"detail":{"tools":[{"name":"get_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:"},{"name":"create_swap","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 canc"},{"name":"get_swap_status","description":"Step 3. waiting_for_funding -> deposit_detected -> swap_processing -> completed, or refunding / terminal_failure (outcome refunded, failed, expired). Long-poll "},{"name":"get_funding_options","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). Pa"},{"name":"list_swaps","description":"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. "},{"name":"plan_swap","description":"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_"},{"name":"get_capabilities","description":"Optional. Chains, limits (provider minimum, USD), quote window, idempotency, validation rules, polling and the flow."},{"name":"create_support_ticket","description":"Stuck or failed swap, or a question: Support answers (get_support_ticket). Follow up with ticketId + replyToken. Never seed phrases or keys."},{"name":"get_support_ticket","description":"Support's answer on your ticket: status, awaiting, thread. Answers take minutes to hours."},{"name":"submit_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 a"},{"name":"request_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 s"}],"toolCount":11,"toolsHash":"e92419907b5f0a6260bbf3181790320017618bb83f6f72fe4393e7feab21d32c","serverName":"swapper-mcp-server","capabilities":["tools","resources","prompts"],"serverVersion":"0.6.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"get_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:"},{"name":"create_swap","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 canc"},{"name":"get_swap_status","description":"Step 3. waiting_for_funding -> deposit_detected -> swap_processing -> completed, or refunding / terminal_failure (outcome refunded, failed, expired). Long-poll "},{"name":"get_funding_options","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). Pa"},{"name":"list_swaps","description":"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. "},{"name":"plan_swap","description":"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_"},{"name":"get_capabilities","description":"Optional. Chains, limits (provider minimum, USD), quote window, idempotency, validation rules, polling and the flow."},{"name":"create_support_ticket","description":"Stuck or failed swap, or a question: Support answers (get_support_ticket). Follow up with ticketId + replyToken. Never seed phrases or keys."},{"name":"get_support_ticket","description":"Support's answer on your ticket: status, awaiting, thread. Answers take minutes to hours."},{"name":"submit_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 a"},{"name":"request_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 s"}],"package":null,"toolSurface":{"id":"ts_qdzbjt6m7ayh","endpointId":"ep_4sekdebuw9qx","hash":"e92419907b5f0a6260bbf3181790320017618bb83f6f72fe4393e7feab21d32c","toolCount":11,"serverName":"swapper-mcp-server","serverVersion":"0.6.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-14T17:24:59.736Z","lastSeenAt":"2026-10-23T03:24:12.142Z","observations":31,"toolNames":["get_quote","create_swap","get_swap_status","get_funding_options","list_swaps","plan_swap","get_capabilities","create_support_ticket","get_support_ticket","submit_feedback","request_agent_key"],"distinctSurfaces":1},"endpointFacts":[{"id":"ep_4sekdebuw9qx","url":"https://xmrtousdc.xyz/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-22T08:26:42.654Z","auth":{"observedAt":"2026-10-22T08:26:42.687Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-22T08:26:42.753Z","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":77,"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":"mcp_registry","key":"xyz.xmrtousdc/monero-swap","url":"https://registry.modelcontextprotocol.io/v0/servers/xyz.xmrtousdc%2Fmonero-swap","firstSeenAt":"2026-10-14T17:19:33.139Z","fetchedAt":"2026-10-21T01:21:40.654Z","normalizedAt":"2026-10-21T01:21:40.654Z"}]},"firstSeenAt":"2026-10-14T17:19:33.139Z","updatedAt":"2026-10-23T03:28:35.474Z"}