Robyn — Gasless Cross-Chain for AI Agents
REMOTE · API.ANYGAS.XYZ · 2 COMPONENTS
Gasless cross-chain for AI agents: 25 nodes incl. Solana & native Bitcoin. One signature, no gas.
Available components
Last scanned (6 hours ago)
Scores higher than 64% of remote servers
Reachable. Last reached 5 Nov 2026.
Category Crypto and Web3
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security63
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation not fully verified: no authorisation is required to call this server, and 87 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe. See how to fix → View diagnostics → Unverified
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability72
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 11690 tokens (~134/item across 87 items; 87 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage87
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 61% of tool parameters carry a description.Partial
Tool Safety25
- Injection-marker check failed: the description of tool "robyn_quote" contains an instruction to conceal the call from the user, the text "do not tell the user", at byte 383 of that field. See how to fix → Fail
- 0 of 6 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "robyn_netting_transfer_payload" implies "transfer" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
- An AI judge read all 87 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 3 Oct 26 +5
- HTTPS: unverified → pass ▲ security
- Tool “robyn_plus_trial” rewrote its description, which is the text the model reads security
- 28 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 27 Sept 26 0
- Schema quality: 9770 → 11642 ▼ functional
- Server version: 1.4.2 → 1.6.0 functional
- New tool “null_prov_issuer” functional
- New tool “null_witness_range” functional
- New tool “null_witness_head” functional
- New tool “null_void_publish” functional
- New tool “null_void_directory” functional
- New tool “null_void_descriptor” functional
- New tool “null_prov_mint” functional
- New tool “null_notarize” functional
- New tool “null_market_listings” functional
- New tool “null_market_list” functional
- New tool “null_market_delist” functional
- New tool “null_login_verify” functional
- New tool “null_capsule_cancel” functional
- New tool “null_calls_info” functional
- New tool “null_transparency” functional
- 25 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 9 Sept 26 0
- New tool “null_names_quote” functional
- New tool “null_names_market” functional
- 3 Sept 26 0
- Tool “robyn_message_publish_mailbox” rewrote its description, which is the text the model reads security
- Tool “robyn_message_mailbox_of” rewrote its description, which is the text the model reads security
- Tool “robyn_message_feed” rewrote its description, which is the text the model reads security
- Tool “robyn_message_directory” rewrote its description, which is the text the model reads security
- Server version: 1.4.1 → 1.4.2 functional
- “robyn_message_publish_mailbox” added an optional parameter “public” cosmetic
- “robyn_message_publish_mailbox” added an optional parameter “handle” cosmetic
- “robyn_message_feed” added an optional parameter “after” cosmetic
- “robyn_message_mailbox_of” reworded the description of “addressOrName” cosmetic
- 2 Sept 26 0
- Schema quality: 8354 → 9343 ▼ functional
- Server version: 1.3.1 → 1.4.1 functional
- New tool “null_balance” functional
- New tool “null_ecosystem” functional
- New tool “null_prekeys_fetch” functional
- New tool “null_prekeys_publish” functional
- New tool “null_agent_guide” functional
- 26 Aug 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Probed https://api.anygas.xyz/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=anygas.xyz | CN=WE1,O=Google Trust Services,C=US | 10 Sept 2026 | 9 Dec 2026 | ECDSA 256 | ECDSA-SHA256 | a38eb472ef66b707133b94c22dc11d1c |
| SANs: anygas.xyz, *.anygas.xyz | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of api.anygas.xyz. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| xyz. | present | 3599, 18130 | 8, 8 | Verified |
| anygas.xyz. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=31536000; includeSubDomains |
| content-security-policy | default-src 'self'; script-src 'self' 'unsafe-inline' 'wasm-unsafe-eval'; style-src 'self' 'unsafe-inline'; font-src 'self' data:; img-src 'self' data: https:; connect-src 'self' https://anygas.xyz https://api.anygas.xyz https://relay.nightferry.net https://snowpiercer.me; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'self' |
| x-content-type-options | nosniff |
| x-frame-options | SAMEORIGIN |
| referrer-policy | strict-origin-when-cross-origin |
| permissions-policy | geolocation=(), microphone=(), camera=() |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://api.anygas.xyz/mcp | Verified | 200 | |
| http (plaintext) | http://api.anygas.xyz/mcp | HTTPS enforced | 301 | https://api.anygas.xyz/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
robyn_netting_account Netting balance, enrolment state and next nonce ~76
Whether an address is enrolled (and therefore custodied), its internal balance, recent history, and `nextNonce` — which you MUST use when signing the next transfer or withdrawal. An address that never enrolled is reported as not custodied. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | EVM address (0x…) |
No output schema declared.
No examples provided.
robyn_netting_enroll_payload Get the consent text a user must sign to open a netting account ~155
Returns the EXACT message the account must sign with its OWN key to open a custodial balance. This endpoint holds no key and enrols nobody — it returns the text; the user signs it, then POST {address, signature} to /api/netting/enroll. CUSTODIAL — this is the ONE part of Robyn that holds your balance; every other tool here moves funds without Robyn ever holding them. Tell the user that plainly before they enrol. Show the user the full consent text before they sign it: it states that the balance is held by Robyn, is not insured, and could be lost.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | the address that will own the netting account |
No output schema declared.
No examples provided.
robyn_netting_info What netting accounts are (opt-in, custodial) ~111
Explains the opt-in netting ledger: transfers between two ENROLLED accounts settle as a book entry — no chain, no gas, no fee, instant, at ANY size including amounts below every per-chain cost floor. CUSTODIAL — this is the ONE part of Robyn that holds your balance; every other tool here moves funds without Robyn ever holding them. Tell the user that plainly before they enrol. Read-only. Returns the caps, the published limits and the fee model.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
robyn_netting_preview What a netting withdrawal would actually deliver ~165
Free and read-only. Given an amount, ranks EVERY exit chain by what actually arrives after the destination payout cost is deducted. Those costs differ by more than 1000x (Avalanche delivers ~$0.99994 of a dollar; Linea ~$0.927), so which chain you leave on is a real decision. Pass toChain to price one chain and learn whether it would succeed at all. Internal transfers between netting accounts remain free at any size — this cost applies only to leaving for a real on-chain balance.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | amount in USDC base units (6dp), e.g. "1000000" = $1.00 |
| toChain | number|string | – | price a single chain instead of ranking all |
No output schema declared.
No examples provided.
robyn_netting_reserves Proof of reserves for the custodial ledger ~78
Publishes what Robyn OWES across all netting accounts against the real relayer float backing it, per chain. Solvency is checkable rather than asserted. Deposits are refused if they would push liabilities above a safe share of the float. Read-only — a user considering a custodial balance should be shown this.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
robyn_netting_statement Full, untruncated netting history for an address ~109
Internal transfers produce NO transaction hash because no transaction occurs — this append-only journal is their only record. Never truncated; page with `before` (a seq number). Use this when a user asks to verify or dispute an internal payment, since there is no chain to check.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | EVM address (0x…) |
| before | string | – | return entries with seq below this, for paging |
| limit | number | – | max entries (default 200) |
No output schema declared.
No examples provided.
robyn_netting_transfer_payload Build the message to sign for a FREE internal transfer ~150
Returns the exact string to sign, with the correct next nonce, for a free instant transfer between two ENROLLED accounts. Signs nothing and moves nothing — the sender signs the returned message, then POSTs {from,to,amount,nonce,signature} to /api/netting/transfer. BOTH parties must already be enrolled: Robyn will not hold a balance for a recipient who never consented, so to pay an unenrolled address use the ordinary non-custodial route instead.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | USDC base units (6dp) |
| from | string | yes | sender (must be enrolled) |
| to | string | yes | recipient (must ALSO be enrolled) |
No output schema declared.
No examples provided.
robyn_payment_request_prepare Prepare a payment request for the payee to sign ~151
Build a canonical payment request (payee, chain, token, amount, memo, expiry) and return the digest for THE PAYEE to sign with their own wallet. Robyn does not sign these and holds no payee keys — a request signed by Robyn would prove nothing about the payee. Use this when an agent needs to ASK another agent for money in a way the payer can actually check.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | base units |
| chain | number|string | yes | destination chain id or name |
| expiresInSec | number | – | – |
| memo | string | – | – |
| payee | string | yes | address that should be paid |
| token | string | – | – |
No output schema declared.
No examples provided.
robyn_payment_request_settlement Prove a payment request was satisfied on-chain ~95
After paying, prove it: re-checks the transfer against the DESTINATION CHAIN and confirms the payee was paid at least the amount requested. Returns paid=true only on a verified on-chain result; paid=null means undetermined, which is NOT evidence you satisfied the request.
| Name | Type | Req | Description |
|---|---|---|---|
| request | object | yes | – |
| signature | string | yes | – |
| transferId | string | yes | the transfer that paid it |
No output schema declared.
No examples provided.
robyn_payment_request_verify Verify a payment request before paying it ~134
ALWAYS run this before paying a request you received. It confirms the payee address, chain, token and amount were signed by whoever controls the payee address, and that the request has not expired. If `signedByPayee` is false, DO NOT PAY — that is what an altered payee address looks like, and address substitution is the most common theft in this space. A valid signature proves AUTHENTICITY, not that the payment is owed and not that the payee is trustworthy.
| Name | Type | Req | Description |
|---|---|---|---|
| request | object | yes | the canonical request object |
| signature | string | yes | the payee signature |
No output schema declared.
No examples provided.
robyn_plan Validate a multi-step plan before executing any of it ~132
Validate a WHOLE multi-step workflow up front instead of one hop at a time. Fees and durations accumulate across steps. Evaluation stops at the first unroutable step rather than reporting speculative results behind it. If the plan cannot work, the response names the BINDING CONSTRAINT and the value that would work (`bindingConstraint`, `whatWouldMakeThisWork`) — use that to adjust rather than retrying blindly. READ-ONLY: nothing is signed, reserved or moved. Use this before spending on step one.
| Name | Type | Req | Description |
|---|---|---|---|
| constraints | object | – | – |
| steps | array | yes | the hops, in order |
No output schema declared.
No examples provided.
robyn_plus_claim Plus — claim blind signatures after paying ~111
Submit BLINDED tokens (base64, from plus-sdk blindTokens()) with the payment txHash. Payment is verified on-chain (recipient, amount, confirmation; one tx pays one invoice), then each blinded token is signed blind. Unblind locally (plus-sdk claim() does all of this). This tool never sees an unblinded pass.
| Name | Type | Req | Description |
|---|---|---|---|
| blinded | array | yes | – |
| invoiceId | string | yes | – |
| txHash | string | – | EVM payment tx; omit for btc |
No output schema declared.
No examples provided.
robyn_plus_info Plus — what is sold, prices, mint key ~123
Plus sells capacity (rate-limit-exempt sends), funded cover rows and signed/anchored Merkle proofs — never a "more private lane" (that would be a smaller crowd). Paid in ETH (Robinhood Chain, Ethereum, Arbitrum, Base), USDC (Base, Arbitrum) or BTC (Chainflip). Redeemed with RFC 9474 blind passes the server cannot link to any payment. Returns products, assets, the mint public key (JWK) and honest what-we-learn / what-we-do-not. Read-only.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
robyn_plus_invoice Plus — create an invoice ~104
Creates an invoice for one bundle (500 passes, $3 quoted in the chosen asset). Returns {invoiceId, payTo, amount (base units), human, chainId, expires}. Pay from any wallet; then blind tokens locally with the SDK and call robyn_plus_claim. For btc pass refundAddress (your BTC address) — the invoice returns a Chainflip deposit address.
| Name | Type | Req | Description |
|---|---|---|---|
| asset | string | yes | – |
| refundAddress | string | – | btc only |
No output schema declared.
No examples provided.
robyn_plus_invoice_status Plus — invoice status ~33
Status, remaining passes and payment details for an invoice. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| invoiceId | string | yes | – |
No output schema declared.
No examples provided.
robyn_plus_trial Plus — 20 FREE passes per day (no payment) ~132
Try Plus before paying: submit up to 20 BLINDED tokens (base64, from plus-sdk blindTokens()) and receive blind signatures — identical BLINDED passes to paid ones (the server never sees a pass; unlinkable to the claim only once the Plus mint key is pinned in the witness-chained head, K3, and only to the IP if the claim rides Tor — claims use the direct lane). One trial per day per caller. Unblind locally (plus-sdk trial() does all of this). This tool never sees an unblinded pass.
| Name | Type | Req | Description |
|---|---|---|---|
| blinded | array | yes | – |
No output schema declared.
No examples provided.
robyn_preflight Check a transfer will succeed BEFORE spending anything ~256
Run this before robyn_prepare/robyn_submit. Returns decision GO or NO_GO plus typed `blockers` (each with a `fix`) and `warnings`. It catches, for free, the failures that otherwise cost gas: a fixed corridor fee that would consume the whole amount so nothing arrives, a recipient in the wrong address family, a corridor that can price but not settle, and a transfer above the instant lane's capacity that would silently pay a dearer bridge. Read-only — signs nothing, moves nothing. Pass fromAddress so membership (free micro-transfers) is recognised.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | amount in fromToken base units (e.g. "5000000" = 5 USDC) |
| fromAddress | string | – | sender — determines membership and therefore fee tier |
| fromChain | number|string | yes | source chain id, or "solana"/"stellar"/"tron"/"bitcoin" |
| fromToken | string | – | symbol or address; omit for the chain default |
| toAddress | string | – | recipient — validated against the destination chain family |
| toChain | number|string | yes | destination chain id or non-EVM name |
| toToken | string | – | – |
No output schema declared.
No examples provided.
robyn_preflight_full Everything you should know before you move money ~205
ONE call combining serviceability, routing competitiveness, cheaper alternatives, delivery basis and mandate budget into a single go/no-go. Call this before executing rather than making five separate checks. BLOCKERS AND WARNINGS ARE DIFFERENT. `blockers` WILL fail — do not attempt the transfer. `warnings` are things to tell the user or act on first; they do not prevent execution. Never present a warning as a failure or a blocker as advice. Anything in `unavailable` means a check could NOT run: treat it as unknown, not fine. `proceed:true` means nothing known blocks it — it is not a guarantee of success.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | – |
| fromChain | number|string | yes | – |
| fromToken | string | – | – |
| mandateId | string | – | check the spend against this budget too |
| toAddress | string | – | – |
| toChain | number|string | yes | – |
| toToken | string | – | – |
No output schema declared.
No examples provided.
robyn_prepare Prepare a gasless action (returns what to sign) ~160
Turn a plain-language or structured intent into a concrete plan plus the EXACT payload to sign. Costs nothing, moves nothing, needs no key. Returns status:"sign" with signRequest, or status:"quoted" if something is still missing.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | – | base units, overrides amountHuman |
| amountHuman | number | – | human units, e.g. 25 for 25 USDC |
| fromChain | number|string | – | – |
| intent | string | – | plain language, e.g. "send 25 USDC to 0xabc... on arbitrum" |
| toAddress | string | – | – |
| toChain | number|string | – | – |
| token | string | – | USDC, USDT, ETH, ... |
No output schema declared.
No examples provided.
robyn_privacy_posture What is private, what is public — before you act ~149
ONE read that tells you, for a chain and for the lane you reached Robyn on, exactly what stays private (relay lane, PQ transport, private mempool / sequencer) and what is still public (on-chain settlement, stealth is not PQ), the live mode of every privacy feature (messaging v2, Plus, netting-set shadow/live, cover rows), and how to raise your quota WITHOUT an identity (a blind Plus pass instead of an API key). Call it first when planning; it reads live flags, never a brochure.
| Name | Type | Req | Description |
|---|---|---|---|
| chainId | number|string | – | chain to assess (e.g. 1, 8453, 42161) |
No output schema declared.
No examples provided.
robyn_quote Quote a gasless cross-chain route ~258
Best gasless route to move a token from one Robyn chain to another. Returns estimated output, the bridge used, duration, and the Robyn fee. Read-only — moves nothing. IMPORTANT: check `quoteOnly` on the response. If it is true the corridor can be PRICED but NOT settled — execute will refuse it with UNSUPPORTED_DIRECTION — so present that quote as a price comparison only and do not tell the user it can be sent. `quoteOnlyReason` says why. Absent/false means executable.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | amount in fromToken base units (e.g. "25000000" = 25 USDC) |
| fromAddress | string | – | sender — determines membership (fee tier) AND whether a free netting path is available between these two accounts |
| fromChain | number|string | yes | source chain id, or "stellar" |
| fromToken | string | yes | token address on the source chain (0x0000…0000 for native) |
| toAddress | string | – | recipient on the destination chain |
| toChain | number|string | yes | destination chain id, or "stellar" |
| toToken | string | yes | token address / symbol on the destination |
No output schema declared.
No examples provided.
robyn_receipt_deliver Deliver a settlement receipt to a counterparty, sealed ~135
Hands a relayer-signed settlement receipt (from robyn_settle / a completed route) to the counterparty's sealed messaging-v2 mailbox, so they get verifiable proof (terms honored, authorized, clean provenance) WITHOUT ever contacting Robyn. Same wire shape as any message; content-hash idempotent. Only receipts signed by this relayer are accepted.
| Name | Type | Req | Description |
|---|---|---|---|
| pass | – | – | optional Plus pass {preparedMsg,sig} to skip the lane rate limit |
| receipt | – | – | the signed receipt object |
| to | string | yes | counterparty address or Robyn name with a v2 mailbox |
No output schema declared.
No examples provided.
robyn_receipt_verify Verify a settlement receipt ~44
Checks digest + relayer signature + signed terms of a receipt you received (e.g. opened from your v2 mailbox). Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| receipt | – | – | – |
No output schema declared.
No examples provided.
robyn_recipes The right order to call things ~123
Ordered playbooks for real goals: pay-someone-safely, prove-what-i-spent, spend-within-a-budget, handle-failures-well, stay-current. CALL THIS BEFORE IMPROVISING A SEQUENCE. Each step says what it answers, what to do with the answer, whether it is optional, and what skipping it costs. Steps marked optional:false should not be skipped — `skippingCosts` explains the concrete harm, not a style preference.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | – | a specific recipe, or omit for all |
No output schema declared.
No examples provided.
robyn_refusal_verify Verify a refusal receipt ~128
Check a signed refusal receipt. Send header `x-anygas-receipt: 1` on any request and, IF Robyn refuses it, the error response carries a signed `refusalReceipt` recording what was asked, when, and why. This matters because when a provider says no, the AGENT gets the blame — a receipt lets you prove to your principal that you were blocked externally rather than simply failing. It proves the refusal HAPPENED; it does not claim the refusal was correct.
| Name | Type | Req | Description |
|---|---|---|---|
| receipt | object | yes | the full refusalReceipt object as returned |
No output schema declared.
No examples provided.
robyn_route_status Track a cross-chain route ~39
Status of an in-flight route by id (BRIDGING → DONE), with the destination tx once delivered.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
No output schema declared.
No examples provided.
robyn_sandbox_do Dry-run the whole flow with no funds ~98
Runs the identical path end to end against the sandbox: no key, no funds, no broadcast. Use this to prove an integration works before touching real money.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | – | – |
| amountHuman | number | – | – |
| fromChain | number|string | – | – |
| intent | string | – | – |
| toAddress | string | – | – |
| toChain | number|string | – | – |
| token | string | – | – |
No output schema declared.
No examples provided.
robyn_settle Settle value privately, gasless, best-route — one call ~264
The one-verb primitive. Say where value should go; Robyn returns the best route (all rails compared), the gasless method (no native token needed), the privacy posture that will apply (API-relay + private mempool where available + uniform shape), and what the settlement receipt will prove — in a SINGLE call. It collapses quote + preflight + prepare. Planning only: it never broadcasts — sign + submit via robyn_submit. Add private:true to request private-mempool execution where an endpoint exists.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | value in source-token base units (e.g. "25000000" = 25 USDC) |
| fromAddress | string | – | sender — sets fee tier and free-netting eligibility |
| fromChain | number|string | yes | source chain id or "stellar"/"solana"/"tron"/"bitcoin" |
| fromToken | string | – | symbol or address; omit for the chain default (USDC) |
| private | boolean | – | request private-mempool execution (default: auto where an endpoint exists) |
| toAddress | string | yes | recipient on the destination |
| toChain | number|string | yes | destination chain id or non-EVM name |
| toToken | string | – | – |
No output schema declared.
No examples provided.
robyn_spend_statement Signed proof of what was spent ~154
A statement of every transfer in a window with each fee broken down, SIGNED by Robyn's relayer key (EIP-191). Use this when you must PROVE to a principal what you spent — your own summary is a claim by the party being audited, but this is verifiable against a published address without trusting you or Robyn. Read `limitations` and repeat them: the statement covers the Robyn float lane only and excludes other rails and the custodial netting book, so it may not be a complete picture of activity.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | – | restrict to transfers whose record names this sender |
| days | number | – | window length, default 30, max 365 |
No output schema declared.
No examples provided.
robyn_sponsor_7702 Sponsor a transaction (relayer pays the gas) ~143
Price or request an EIP-7702 sponsored transaction: Robyn submits your signed authorization as a type-4 transaction and PAYS THE GAS, so your account needs no native token. Over this HOSTED endpoint the call is a DRY price-check (returns estGas, priceUsd and the exact envelope) — paying the x402 invoice to broadcast requires calling POST /api/7702/sponsor directly with an X-PAYMENT header.
| Name | Type | Req | Description |
|---|---|---|---|
| authorization | object | yes | – |
| chainId | number | yes | – |
| data | string | – | calldata hex |
| to | string | – | call target (defaults to the delegated account itself) |
No output schema declared.
No examples provided.
robyn_submit Submit your signed intent (relayer pays the gas) ~318
Relay an intent you already signed. The relayer broadcasts it and fronts all network gas; your account needs no native token. Build `permit2` from robyn_prepare: sign its signRequest.eip712 payload (canonical Permit2 domain + PermitTransferFrom/TokenPermissions types) and pass the OBJECT below - not a bare signature string. The signed spender must be the relayer from signRequest.spender, otherwise the permit cannot be redeemed. Supply idempotencyKey so a retry after a timeout cannot double-spend. TO REHEARSE WITHOUT BROADCASTING set dryRun:true — it returns {status:"DRY", broadcast:false, wouldSend} and moves nothing, on EVERY corridor. Do NOT assume that omitting a live flag means dry: that holds on the float lane and the non-EVM legs, but the EVM-to-EVM path ignores it and BROADCASTS.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | – |
| dryRun | boolean | – | true = rehearse only: returns {status:"DRY", broadcast:false, wouldSend} and broadcasts NOTHING, on every corridor. Use this to preview before committing. |
| fromChain | number|string | yes | – |
| fromToken | string | yes | – |
| idempotencyKey | string | – | any unique string; makes retries safe |
| permit2 | object | yes | Permit2 SignatureTransfer object - NOT a bare signature string |
| toAddress | string | yes | – |
| toChain | number|string | yes | – |
| toToken | string | yes | – |
No output schema declared.
No examples provided.
robyn_verify_outcome Verify a transfer against the chain ~225
Check what ACTUALLY happened to a settled transfer, against the destination chain rather than Robyn's own database. Optionally assert who should have been paid (`recipient`) and the minimum that should have arrived (`minAmount`); we decode the payout transaction's ERC-20 Transfer logs and report whether reality matches. Also cross-checks Robyn's own receipt against the chain and says so if the books disagree. THE VERDICT IS THREE-VALUED: `verified`, `failed`, or `undetermined`. Treat `undetermined` as UNKNOWN, never as success — it means the chain was unreachable, the tx is not mined, or the rail records completion as a balance delta that cannot be re-derived (Allbridge/Chainflip/Solana/Tron). Do not tell a user a transfer is confirmed on an undetermined result.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | transfer id, or the source/destination tx hash |
| minAmount | string | – | minimum base units that must have arrived |
| recipient | string | – | address that must have been credited |
No output schema declared.
No examples provided.
robyn_vip_status Check membership / VIP benefits for an address ~122
Check whether an address holds a recognised member NFT and what it gets. Members pay ZERO on cross-chain transfers of $0.10-$25 to low-cost chains, 15bps instead of 25bps routing, and 10% instead of 25% gas markup. Read-only. Call this before quoting for a user so you can tell them accurately what a transfer will cost — and, if they are not a member, what holding a recognised NFT would save them.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | EVM address (0x…) to check |
No output schema declared.
No examples provided.
robyn_why_this_route Why this route won — and what it beat ~173
Returns the full routing decision: every rail that quoted, what each would deliver, the margin the winner won by, and which rails stayed SILENT and why. Signed, so you can archive the rationale. CHECK `wasCompetitive` BEFORE TELLING A USER THE PRICE IS GOOD. If it is false, exactly one rail answered and "best" means "only" — it did not beat anything. Rails in `silentRails` did NOT lose; they failed to answer (down, rate-limited, missing credentials). Never describe them as more expensive.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | – |
| fromChain | number|string | yes | – |
| fromToken | string | – | – |
| toAddress | string | – | – |
| toChain | number|string | yes | – |
| toToken | string | – | – |
No output schema declared.
No examples provided.
robyn_yield_account Non-custodial yield account ~91
An agent's own Aave v3 / Moonwell position (aUSDC/mUSDC) per chain + the capped allowance it granted the relayer + live APY (best-yield auto-selected). Non-custodial: funds stay in the agent's wallet, Robyn holds no key and no pool.
| Name | Type | Req | Description |
|---|---|---|---|
| agent | string | yes | the agent wallet address (0x…) |
No output schema declared.
No examples provided.
robyn_yield_quote Quote a spend from yield ~98
Read-only JIT quote: how a spend would be fulfilled from an agent's Aave yield venue (draw <= your allowance -> Aave/Moonwell withdraw -> gasless deliver). Moves nothing.
| Name | Type | Req | Description |
|---|---|---|---|
| agent | string | yes | – |
| amount | string | yes | USDC base units (6dp) |
| srcChain | number|string | yes | – |
| toAddress | string | – | – |
| toChain | number|string | – | – |
No output schema declared.
No examples provided.
robyn_yield_spend Spend from yield (one signature) ~212
Spend from your yield (Aave v3 or Moonwell) with ONE EIP-712 signature: Robyn pulls only up to your on-chain aUSDC/mUSDC allowance, unwinds exactly what is needed, and delivers gaslessly; the remainder keeps earning. This HOSTED endpoint is READ-ONLY: it returns the exact EIP-712 intent to sign + a live quote. To execute, sign it and POST {intent,signature,live:true} to /svc/api/ncaccount/spend, or run `npx anygas-mcp` locally with ROBYN_SIGNER_KEY. One-time setup: supply USDC to Aave v3 or Moonwell in your wallet + approve the relayer for your aUSDC/mUSDC up to your risk budget.
| Name | Type | Req | Description |
|---|---|---|---|
| agent | string | yes | – |
| amount | string | yes | – |
| srcChain | number|string | yes | – |
| toAddress | string | – | – |
| toChain | number|string | – | – |
No output schema declared.
No examples provided.
How do I install the Robyn — Gasless Cross-Chain for AI Agents MCP server?
Robyn — Gasless Cross-Chain for AI Agents is a hosted endpoint at https://api.anygas.xyz/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · api.anygas.xyz
claude mcp add --transport http ox31461-robyn 'https://api.anygas.xyz/mcp'
What is the Robyn — Gasless Cross-Chain for AI Agents MCP server?
Robyn — Gasless Cross-Chain for AI Agents is an MCP server listed in the public MCP registry as io.github.ox31461/robyn. Gasless cross-chain for AI agents: 25 nodes incl. Solana & native Bitcoin. One signature, no gas. This page covers its hosted endpoint (https://api.anygas.xyz/mcp).
Is the Robyn — Gasless Cross-Chain for AI Agents MCP server safe to use?
Robyn — Gasless Cross-Chain for AI Agents scores 75 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Robyn — Gasless Cross-Chain for AI Agents MCP server expose?
Robyn — Gasless Cross-Chain for AI Agents exposes 87 tools: robyn_privacy_posture, robyn_receipt_deliver, robyn_receipt_verify, robyn_mesh, robyn_quote, and 82 more. Their descriptions and schemas cost roughly 11,690 tokens of context every time the server is loaded.
Does the Robyn — Gasless Cross-Chain for AI Agents MCP server require authentication?
No. We connected to Robyn — Gasless Cross-Chain for AI Agents without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the Robyn — Gasless Cross-Chain for AI Agents MCP server still maintained?
Robyn — Gasless Cross-Chain for AI Agents is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.