accueil / serveurs / Finance & Paiement / xyz.xmrtousdc/swapper
xyz.xmrtousdc/swapper
serveur MCP (Model Context Protocol) · swapper-mcp-server 0.5.0
Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur.
Est-ce que xyz.xmrtousdc/swapper est sûr ?
Au dernier audit MCP Hub, le serveur MCP « xyz.xmrtousdc/swapper » est classé « Non encore testé ». Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 8 outils
- create_support_ticket≈ 378 tokens
For a failed or stuck swap: orderId and what happened; never seed phrases or private keys. Returns ticketId; no tool reads replies (follow up at support@xmrtousdc.xyz).
Paramètres, retour & exemple (6)
Paramètresdetail· string · optionnel · lean | fullmessage· string · requis
What happened: what was sent, when, what the user sees.orderId· string · optionnel
ord_... of the affected order.category· string · optionnel
Short topic, e.g. "stuck", "refund". Default "agent".sessionId· string · optionnel
Session UUID, if known.walletAddress· string · optionnel
Public address involved (sending wallet or destination).
Exemple d'appel{"name": "create_support_ticket", "arguments": {"message": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "data": {}, "next": {}, "error": {}, "state": "texte", "ticketId": "texte", "operation": "texte", "userMessage": "texte"}} - create_swap≈ 548 tokens
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. 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.matches. Next: get_swap_status.
Paramètres, retour & exemple (5)
Paramètresto· string · optionnel
Destination, only if the quote had none (next.missing). Never guess.detail· string · optionnel · lean | fullquoteId· string · requis
From get_quote's next.arguments.idempotencyKey· string · optionnel
Optional; default q_<quoteId>. Reuse on every retry. A custom key: a fresh random UUID per intent.quoteIntentDigest· string · optionnel
From next.arguments: create fails if the quote's terms differ.
Exemple d'appel{"name": "create_swap", "arguments": {"quoteId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "data": {}, "next": {}, "error": {}, "state": "texte", "deposit": {}, "orderId": "texte", "payable": true, "replayed": true, "trackUrl": "texte", "operation": "texte", "recovered": true}} - get_capabilities≈ 227 tokens
Optional. Chains, limits (provider minimum, USD), quote window, idempotency, validation rules, polling and the flow.
Paramètres, retour & exemple (1)
Paramètresdetail· string · optionnel · lean | full
Exemple d'appel{"name": "get_capabilities", "arguments": {"detail": "lean"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "data": {}, "next": {}, "error": {}, "state": "texte", "operation": "texte", "userMessage": "texte", "contractVersion": "texte"}} - get_funding_options≈ 437 tokens
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).
Paramètres, retour & exemple (4)
Paramètresfrom· object · optionnel
Where the funds are now.amount· string · optionnel
Send amount from a quote, if known.detail· string · optionnel · lean | fulldirection· string · optionnel · u2x | x2u
u2x (default): the user sends USDC. x2u: XMR.
Exemple d'appel{"name": "get_funding_options", "arguments": {"from": {}, "amount": "texte", "detail": "lean", "direction": "u2x"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "data": {}, "next": {}, "error": {}, "route": {}, "state": "texte", "matched": true, "checklist": [], "direction": "texte", "operation": "texte", "userMessage": "texte"}} - get_quote≈ 693 tokens
Step 1. Quote XMR <-> native USDC on Arbitrum One. Read-only; 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; re-quote with {requoteOf}. Next: create_swap with next.arguments; no confirmation step is required.
Paramètres, retour & exemple (8)
Paramètresto· string · optionnel
Destination from the user: x2u an Arbitrum One 0x address, u2x a Monero address. Never guess.basis· string · optionnel · estimate | minimum
receiveAmount target met by the estimate (default) or the provider minimum (only if one is published).chain· string · optionnel
Default arbitrum (42161).amount· string · optionnel
What the user SENDS (x2u: XMR, u2x: USDC). Digits and one dot; no commas or units.detail· string · optionnel · lean | fulldirection· string · optionnel · x2u | u2x
Required. u2x: send USDC, get XMR. x2u: send XMR, get USDC.requoteOf· string · optionnel
Re-quote this quoteId's stored parameters; pass it alone.receiveAmount· string · optionnel
What the user wants to RECEIVE (u2x: XMR, x2u: USDC); needs direction.
Exemple d'appel{"name": "get_quote", "arguments": {"to": "texte", "basis": "estimate", "chain": "texte", "amount": "texte", "detail": "lean", "direction": "x2u"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "data": {}, "next": {}, "delta": {}, "error": {}, "quote": {}, "state": "texte", "target": {}, "quoteId": "texte", "direction": "texte", "operation": "texte", "guaranteed": true}} - get_swap_status≈ 620 tokens
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. deposit.payment may be used only while payable is true. Call it before funding or showing a deposit again. payment: what your wallet will sign; sign only if paymentCheck.matches.
Paramètres, retour & exemple (6)
Paramètresdetail· string · optionnel · lean | fullverify· string · optionnel
Destination address (optional extra check).orderId· string · requis
From create_swap or list_swaps.payment· string · optionnel
Raw tx hex, tx JSON, monero:/ethereum: URI or calldata.waitSec· integer · optionnel
Long-poll seconds for a change from sinceState (max 25; more is capped).sinceState· string · optionnel · waiting_for_funding | deposit_detected | swap_processing | refunding | completed | terminal_failure | unknown
State from your previous call.
Exemple d'appel{"name": "get_swap_status", "arguments": {"orderId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "data": {}, "next": {}, "error": {}, "state": "texte", "status": "texte", "waited": {}, "deposit": {}, "orderId": "texte", "outcome": "texte", "payable": true, "evidence": {}}} - list_swaps≈ 350 tokens
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).
Paramètres, retour & exemple (3)
Paramètresdetail· string · optionnel · lean | fullsessionId· string · optionnel
Session UUID, instead of idempotencyKey.idempotencyKey· string · optionnel
The key create_swap used (default q_<quoteId>).
Exemple d'appel{"name": "list_swaps", "arguments": {"detail": "lean", "sessionId": "texte", "idempotencyKey": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "data": {}, "next": {}, "note": "texte", "error": {}, "state": "texte", "lookup": "texte", "orders": [], "payable": true, "operation": "texte", "userMessage": "texte", "payableReason": "texte"}} - plan_swap≈ 368 tokens
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.
Paramètres, retour & exemple (5)
Paramètresto· string · optionnel
Destination from the user: x2u an Arbitrum One 0x address, u2x a Monero address. Never guess.amount· string · optionnel
What the user sends.detail· string · optionnel · lean | fulldirection· string · optionnel
u2x or x2u, as the user said it.receiveAmount· string · optionnel
What the user wants to receive.
Exemple d'appel{"name": "plan_swap", "arguments": {"to": "texte", "amount": "texte", "detail": "lean", "direction": "texte", "receiveAmount": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "data": {}, "next": {}, "error": {}, "state": "texte", "question": {}, "operation": "texte", "userMessage": "texte", "missingInputs": [], "validationErrors": []}}
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».