Talandor
Public MCP report

XRPLHub — XRPLScore & XRPL actions

https://www.xrplhub.io/api/mcp

Official Registry

Official Registry · io.github.Dcroyalty/xrplhub · Publisher: io.github.Dcroyalty

Last observed

Usable now
Can I use it?

Usable now

A public MCP contract was observed. Add the endpoint to a compatible client below. A Watch can alert you if this contract changes.

https://www.xrplhub.io/api/mcp
Tools20
AuthNo authentication challenge observed
Protocol2025-11-25
EvidencePublic contract observed
Latency8767 ms

See the measured evidence

Client fit

Compatibility is inferred from published configuration rules and is not manually verified in each client.

Claude
Observed 2025-11-25.
Likely compatible · inferred
Cursor
Streamable HTTP and public HTTPS were observed.
Likely compatible · inferred
ChatGPT
Public tool names, descriptions and schemas were observed. Plan and workspace access still apply.
Likely compatible · inferred
VS Code
Public remote HTTP configuration can be assessed.
Likely compatible · inferred
Generic MCP
Observed 2025-11-25.
Likely compatible · inferred
Show compatibility evidence

Rule evidence: Remote HTTPS rule v0.2 · reviewed 2026-09-12 · Remote HTTP rule v0.2 · reviewed 2026-09-12 · Remote app rule v0.2 · reviewed 2026-09-12 · Protocol and transport rule v0.2 · reviewed 2026-09-12

What changed

Public contract stable since
Last compared · No semantic contract change since the previous complete snapshot.
Info
build_xrpl_transaction restricted the allowed values for product_id
· critical · high confidence · build_xrpl_transaction · Rule: input-enum-restricted
Critical

A Watch would alert only if this change may affect the selected client.

Show 2 quieter observations
get_monitoring_info was added
· info · high confidence · get_monitoring_info · Rule: tool-added
Info
list_xrpl_services changed its title or description
· info · high confidence · list_xrpl_services · Rule: documentation-changed
Info
Evidence and limitations

Method: anonymous Streamable HTTP probe. We never invoke a tool.

Attempted protocols: 2026-07-28, 2025-11-25

Protocol2025-11-25
TransportStreamable HTTP
AuthNo authentication challenge observed
EvidencePublic contract observed
Total latency8767 ms
Response bytes18923

No diagnostic errors.

Server-provided content. Tool names, descriptions and schemas below are copied from the MCP server. They may be in another language. Talandor does not translate or verify them.
Tools and declared exposure

Server annotations are declarations, not verified behavior.

Show 20 of 20 server-provided tool definitions
build_xrpl_transaction
No effect details provided
Show server-provided details
Server description (copied; language not verified)
Get a ready-to-sign transaction JSON for any of 34 XRPL actions — no XRPL coding. Returns the exact txjson plus a safety tier; the wallet owner signs it in their own wallet (this never signs for anyone). Call list_xrpl_services first for all 34 ids and every parameter with examples. Params: product_id (required — e.g. checkcreate, escrow, trustline, nftmint, dexorder, multisig), wallet_address (r... signer, required), params (object, per-service). Free, no signup.
Input schema (server-provided preview — do not copy)
{
  "type": "object",
  "required": [
    "product_id",
    "wallet_address"
  ],
  "properties": {
    "params": {
      "type": "object",
      "description": "Per-service parameters. Call list_xrpl_services for types + examples for every field. Required fields by id — multisig: signers, quorum | regkey: regularKey | depositauth: (no params) | desttag: (no params) | lockdown: (no params) | issuerdecl: (no params) | issuercfg: (no params) | tokenfee: transferFee | trustline: issuer, currency | trustsend: issuer, currency, destination, amount | rippling: (no params) | mptissue: name, ticker, maximumAmount | mptsend: destination, mptIssuanceId, amount | globalfreeze: (no params) | freezeline: holder, currency | dexorder: takerGetsValue, takerPaysValue | ammwithdraw: asset2Currency | smartswap: receiveValue, receiveCurrency | ammlaunch: assetValue, asset2Value | ammentry: assetValue, asset2Currency | paychannel: destination, amount, publicKey | tickets: (no params) | nftmint: uri | nftburn: nftokenId | nftoffer: nftokenId, amount | checkcreate: destination, amount | checkcash: checkId, amount | checkcancel: checkId | depositpreauth: sender | escrow: destination, amount, finishAfter | identity: domain | did: uri | compliance: domain, didUri | credentialissue: subject, credentialType | permdomain: credentialType"
    },
    "product_id": {
      "enum": [
        "multisig",
        "regkey",
        "depositauth",
        "desttag",
        "issuerdecl",
        "issuercfg",
        "tokenfee",
        "trustline",
        "trustsend",
        "rippling",
        "mptissue",
        "mptsend",
        "globalfreeze",
        "freezeline",
        "dexorder",
        "ammwithdraw",
        "smartswap",
        "ammlaunch",
        "ammentry",
        "paychannel",
        "tickets",
        "nftmint",
        "nftburn",
        "nftoffer",
        "checkcreate",
        "checkcash",
        "checkcancel",
        "depositpreauth",
        "escrow",
        "identity",
        "did",
        "compliance",
        "credentialissue",
        "permdomain"
      ],
      "type": "string",
      "description": "Which XRPL action to build. Call list_xrpl_services for the full catalogue with each id's label, tier and parameters."
    },
    "wallet_address": {
      "type": "string",
      "description": "XRPL classic address (r...) of the account that will sign the transaction"
    }
  }
}
check_domain_eligibility
No effect details provided
Show server-provided details
Server description (copied; language not verified)
Check whether an XRPL account holds a credential that satisfies a PermissionedDomain (XLS-80d) — the question every domain operator and every would-be participant actually asks before a real transaction. Live against a validated mainnet ledger. Eligibility is OR: any ONE accepted, unexpired credential matching the domain's AcceptedCredentials is enough. Params: wallet_address (r..., required), domain_id (64-hex DomainID, the PermissionedDomain ledger index, required). Free, no signup.
Input schema (server-provided preview — do not copy)
{
  "type": "object",
  "required": [
    "domain_id",
    "wallet_address"
  ],
  "properties": {
    "domain_id": {
      "type": "string",
      "description": "The PermissionedDomain's ledger index — 64 hex characters"
    },
    "wallet_address": {
      "type": "string",
      "description": "XRPL classic address to check (starts with r)"
    }
  }
}
check_mpt_risk
No effect details provided
Show server-provided details
Server description (copied; language not verified)
Get the risk view of one XLS-33 Multi-Purpose Token issuance before touching it: what the issuer CAN DO to a holder (clawback, freeze, require-auth, whether it's transferable at all) plus the issuer's XRPLScore. Free. For the full issuer picture — account age, xrp-ledger.toml-verified domain, credentials held, Bithomp cross-check — GET /api/x402/usdc/mpt/{id} pays $0.01 USDC on Base via x402. Every response states its source and returns 'unknown', never 'does not exist', when an issuance isn't found. Params: issuance_id (48-hex MPTokenIssuanceID, required). No signup.
Input schema (server-provided preview — do not copy)
{
  "type": "object",
  "required": [
    "issuance_id"
  ],
  "properties": {
    "issuance_id": {
      "type": "string",
      "description": "The MPTokenIssuanceID — 48 hexadecimal characters (XLS-33, 192-bit)"
    }
  }
}
check_service_health
No effect details provided
Show server-provided details
Server description (copied; language not verified)
Check whether the XRPLHub money path is working BEFORE you pay: database, Xaman, both x402 facilitators (t54 RLUSD + CDP USDC-on-Base), the on-ledger anchor config, the credential signing secret, and alerting. Returns overall "ok" | "warn" | "down" plus a per-component list. Poll this if a prior paid call failed. No params. Free, no signup.
Input schema (server-provided preview — do not copy)
{
  "type": "object",
  "properties": {}
}
check_xrpl_score
No effect details provided
Show server-provided details
Server description (copied; language not verified)
Get a 300–850 creditworthiness score for any XRP Ledger wallet before you pay, lend to, trade with, or onboard it. You get back: the score, a letter grade, peer percentile, a per-signal breakdown (account age, lifetime tx history, financial health, token engagement, DEX activity, AMM participation, security config, NFTs), and ranked tips to raise it. Params: wallet_address (r... classic address, 25–35 chars, required). Free — no API key, no signup, 100% public ledger data.
Input schema (server-provided preview — do not copy)
{
  "type": "object",
  "required": [
    "wallet_address"
  ],
  "properties": {
    "wallet_address": {
      "type": "string",
      "description": "XRP Ledger classic address to score (starts with r, 25–35 characters)"
    }
  }
}
donate_to_community_fund
No effect details provided
Show server-provided details
Server description (copied; language not verified)
Donate XRP or RLUSD to the XRPLHub Community Grant Treasury — a transparent on-chain fund that pays approved applicants wallet-to-wallet with zero overhead. Returns the treasury address and, if you pass donor_wallet, a ready-to-sign Payment txjson; every donation and payout is recorded on the XRP Ledger and publicly verifiable. Params: amount (number, required), currency (XRP|RLUSD, default XRP), donor_wallet (r..., optional), message (optional). No signup.
Input schema (server-provided preview — do not copy)
{
  "type": "object",
  "required": [
    "amount"
  ],
  "properties": {
    "amount": {
      "type": "number",
      "description": "Amount to donate. Minimum 1. Any size welcome — even 1-5 XRP helps fund a real grant."
    },
    "message": {
      "type": "string",
      "description": "Optional. A short dedication or message to attach to the donation record."
    },
    "currency": {
      "type": "string",
      "description": "XRP or RLUSD. Default: XRP. Use RLUSD for a stable USD-equivalent donation."
    },
    "donor_wallet": {
      "type": "string",
      "description": "Optional. XRPL wallet address of the donor. Providing this allows building a ready-to-sign Payment transaction."
    }
  }
}
get_account_credentials
No effect details provided
Show server-provided details
Server description (copied; language not verified)
Get every XLS-70 credential an XRPL account holds — issuer, type, whether it has been accepted, whether it's expired, and its expiry date. Live against a validated mainnet ledger (never stale). Use this before trusting a counterparty who claims to hold a credential. Default walks the owner directory (bounded ~20s; response has coverage "complete"/"partial" — for an exchange-scale account it can be partial). Pass issuer (and credential_type unless it is XRPLHub's issuer) to do a direct ledger lookup instead — always fast and always complete. Params: wallet_address (r..., required), issuer (r..., optional), credential_type (name or hex, optional). Free, no signup.
Input schema (server-provided preview — do not copy)
{
  "type": "object",
  "required": [
    "wallet_address"
  ],
  "properties": {
    "issuer": {
      "type": "string",
      "description": "Optional — restrict to one issuer via a direct ledger lookup (no owner-directory walk)"
    },
    "wallet_address": {
      "type": "string",
      "description": "XRPL classic address to look up (starts with r)"
    },
    "credential_type": {
      "type": "string",
      "description": "Optional — credential type (plain name or hex); required with issuer unless the issuer is XRPLHub's"
    }
  }
}
get_issuer_credentials
No effect details provided
Show server-provided details
Server description (copied; language not verified)
Get everything an issuer account has issued: every credential type, distinct subject count, and acceptance rate. Served from a network-wide census rebuilt on a schedule — the response includes coverage ("complete" or "partial") so a mid-walk answer is never mistaken for a finished count. Params: issuer_address (r..., required). Free, no signup.
Input schema (server-provided preview — do not copy)
{
  "type": "object",
  "required": [
    "issuer_address"
  ],
  "properties": {
    "issuer_address": {
      "type": "string",
      "description": "XRPL classic address of the credential issuer (starts with r)"
    }
  }
}
get_issuer_mpts
No effect details provided
Show server-provided details
Server description (copied; language not verified)
Everything one issuer has put out as Multi-Purpose Tokens (XLS-33), from the registry index, plus the issuer's own XRPLScore. Each issuance lists the issuer's powers over a holder. Response carries coverage ('complete-per-known-issuer'/'partial'). Params: issuer_address (r..., required). Free, no signup.
Input schema (server-provided preview — do not copy)
{
  "type": "object",
  "required": [
    "issuer_address"
  ],
  "properties": {
    "issuer_address": {
      "type": "string",
      "description": "XRPL issuer address (starts with r)"
    }
  }
}
get_lending_exposure
No effect details provided
Show server-provided details
Server description (copied; language not verified)
A borrower's TOTAL XLS-66 lending exposure across ALL loan brokers in one call — the XRP Ledger has no aggregate borrower-debt object, so a broker carrying first-loss capital cannot see a borrower's total leverage elsewhere. Returns: outstanding by asset, loan count, distinct broker count, defaults / impairments / overdue, XRPLHub's XRPLScore, and an observation history summary. IMPORTANT: XLS-66 keeps CURRENT exposure only. A defaulted loan zeroes its own amounts (the flag is the credit event, not the balance), and either the borrower or the broker can delete a paid or defaulted loan to reclaim the borrower's reserve — a borrower can erase evidence of their own default. Every call here persists an immutable Merkle-anchored snapshot. `disposition` = 'no-loans-ever' means we have never observed a loan (NOT proof of none); 'history-only' means loans were seen before but none are on the ledger now. XLS-66 is not yet enabled on mainnet — until it is, this returns amendment-not-active with the live XRPLScore. Not underwriting or credit advice. Params: borrower (r..., required). Free via MCP.
Input schema (server-provided preview — do not copy)
{
  "type": "object",
  "required": [
    "borrower"
  ],
  "properties": {
    "borrower": {
      "type": "string",
      "description": "XRPL classic address (r..., 25–35 chars) of the borrower"
    }
  }
}
get_lending_history
No effect details provided
Show server-provided details
Server description (copied; language not verified)
Every loan XRPLHub has EVER observed for a borrower, built from append-only exposure snapshots — the credit file the XRP Ledger can't keep. Per loan: first/last observed ledger, last-known status, monotonic everDefaulted / everImpaired / everOverdue flags, and for loans since deleted from the ledger, the ledger window in which they vanished. A borrower who defaulted and then deleted the loan shows nothing on-ledger; here it shows as vanished with everDefaulted true. `observationWindow` says how far back our view goes — loans deleted before we first saw this borrower are invisible to us. Params: borrower (r..., required). Free, no signup.
Input schema (server-provided preview — do not copy)
{
  "type": "object",
  "required": [
    "borrower"
  ],
  "properties": {
    "borrower": {
      "type": "string",
      "description": "XRPL classic address (r...) of the borrower"
    }
  }
}
get_monitoring_info
No effect details provided
Show server-provided details
Server description (copied; language not verified)
Describe XRPLHub's continuous-monitoring service so an agent can decide whether to use it: what it watches for a list of wallets (score drops against a threshold YOU set, OFAC SDN list hits, and — once XLS-66 activates — first loan / overdue / impaired / defaulted), how it is delivered (HMAC-signed webhooks, once-a-day checks, attested Merkle-anchored history), per-plan watch slots, the shared capacity limit, the consumer-use acknowledgement text that subscribing requires (no FCRA/ECOA consumer credit, insurance, employment or housing decisions) and the endpoints. Layered on top of underwriting, never a replacement; no recommendation, no probability of default. Subscribing needs an API key over HTTP (POST /api/monitor/subscribe), not this tool. No params. Free.
Input schema (server-provided preview — do not copy)
{
  "type": "object",
  "properties": {}
}
get_underwriting_inputs
No effect details provided
Show server-provided details
Server description (copied; language not verified)
The full underwriting-inputs bundle a LoanBroker needs for an XLS-66 decision, in one call: cross-broker exposure, XRPLScore + grade, OFAC SDN screening (with its own verifiable receipt), observation history + gaps, and one Merkle-anchored attestation over the whole bundle. FACTS ONLY — it never returns a recommended principal, rate, approve/decline, or probability of default; the broker decides. This is a PAID x402 call: $0.05 USDC on Base at GET /api/x402/lending/underwrite?borrower=r... (no free tier, no API key). For the free components use get_lending_exposure and screen_address_ofac. This tool returns the payment resource details. Params: borrower (r..., required).
Input schema (server-provided preview — do not copy)
{
  "type": "object",
  "required": [
    "borrower"
  ],
  "properties": {
    "borrower": {
      "type": "string",
      "description": "XRPL classic address (r...) of the borrower"
    }
  }
}
issue_score_credential
No effect details provided
Show server-provided details
Server description (copied; language not verified)
Get a signed, tamper-evident certificate of a wallet's XRPLScore that any counterparty can verify without trusting the holder — the free score isn't provable to a third party, this is. Two calls: first returns a Xaman payment request (1 XRP or 1 RLUSD, valid 90 days); call again with the same wallet_address + returned uuid after signing to get certId and verifyUrl. Params: wallet_address (r..., required), currency (XRP|RLUSD, default XRP), uuid (2nd call only). No signup.
Input schema (server-provided preview — do not copy)
{
  "type": "object",
  "required": [
    "wallet_address"
  ],
  "properties": {
    "uuid": {
      "type": "string",
      "description": "Only for the second call: the payment uuid returned by the first call, after the user has signed in Xaman."
    },
    "currency": {
      "enum": [
        "XRP",
        "RLUSD"
      ],
      "type": "string",
      "description": "Payment currency. Defaults to XRP."
    },
    "wallet_address": {
      "type": "string",
      "description": "XRP Ledger wallet address the credential will attest to (starts with r)"
    }
  }
}
list_xrpl_services
No effect details provided
Show server-provided details
Server description (copied; language not verified)
List all 34 XRPL actions that build_xrpl_transaction can produce. For each you get: id, plain-English label, category, safety tier, and every parameter (name, type, required, example). Call this FIRST so you pass the right product_id and params in one shot instead of guessing and getting a missing-params error. No parameters. Free, no signup.
Input schema (server-provided preview — do not copy)
{
  "type": "object",
  "properties": {}
}
screen_address_ofac
No effect details provided
Show server-provided details
Server description (copied; language not verified)
Compare one XRPL address against a vintage-pinned snapshot of the US Treasury OFAC SDN list (exact address-string match only) and get a factual, Merkle-anchored receipt. ATTESTS TO PROCESS, NOT GROUND TRUTH: the receipt records that the address was compared against a named list snapshot (its OFAC publish date + the SHA-256 of the exact file) at a stated time, and what the comparison found. A "no match" means the address did NOT appear on that list version — it is NOT a statement that the address is clean, safe, or unsanctioned. This is not legal or compliance advice, makes no compliance decision, and does not discharge your own screening obligations. Scope: OFAC SDN only — no EU/UK/UN lists, no name/alias/fuzzy matching, no transaction-graph analysis. Returns queryId (verify it later with verify_attestation), the list {name,vintage,sha256}, result {listed, matches[]}, and a one-sentence factual statement. Params: address (r..., required). Free via MCP. Terms: /legal/screening.
Input schema (server-provided preview — do not copy)
{
  "type": "object",
  "required": [
    "address"
  ],
  "properties": {
    "address": {
      "type": "string",
      "description": "XRPL classic address (r..., 25–35 chars) to compare against the OFAC SDN list"
    }
  }
}
search_mpts
No effect details provided
Show server-provided details
Server description (copied; language not verified)
Search the XRPL Multi-Purpose Token (XLS-33) registry index by issuer address, MPTokenIssuanceID (or a hex prefix of one), or token name / ticker. Returns each match with issuer powers (clawback, freeze, require-auth, transferable), supply, holder count and source. Served from the index — the response carries coverage ('complete' or 'partial') and lastCompletedPassAt; treat 'partial' as a floor, not the whole population. Params: q (required). Free, no signup.
Input schema (server-provided preview — do not copy)
{
  "type": "object",
  "required": [
    "q"
  ],
  "properties": {
    "q": {
      "type": "string",
      "description": "Issuer address (r...), MPTokenIssuanceID or hex prefix, or token name/ticker"
    }
  }
}
submit_grant_application
No effect details provided
Show server-provided details
Server description (copied; language not verified)
Apply for a community micro-grant ($25–$100) paid wallet-to-wallet from the XRPLHub on-chain treasury for rent, utilities, groceries, medical, transport, or childcare. Returns a grant id and status. A person reviews every application and makes every decision — no automated triage, no middleman. Params: wallet_address (r..., required), category (RENT|UTILITIES|GROCERIES|MEDICAL|TRANSPORT|CHILDCARE|OTHER, required), amount (25–100, required), description (2–4 sentences, required). No signup.
Input schema (server-provided preview — do not copy)
{
  "type": "object",
  "required": [
    "amount",
    "category",
    "description",
    "wallet_address"
  ],
  "properties": {
    "amount": {
      "type": "number",
      "description": "Amount requested in RLUSD (1–100)"
    },
    "category": {
      "type": "string",
      "description": "Grant category: RENT, UTILITIES, GROCERIES, MEDICAL, TRANSPORT, CHILDCARE, or OTHER"
    },
    "currency": {
      "type": "string",
      "description": "Payout currency. Default and recommended: RLUSD"
    },
    "description": {
      "type": "string",
      "description": "Clear description of the need, situation, and urgency (2–4 sentences). Be specific — vague applications are harder for the reviewer to verify."
    },
    "wallet_address": {
      "type": "string",
      "description": "XRPL wallet address where the grant will be sent if approved"
    }
  }
}
verify_attestation
No effect details provided
Show server-provided details
Server description (copied; language not verified)
Given a queryId from screen_address_ofac OR get_lending_exposure, return everything needed to verify that receipt WITHOUT trusting XRPLHub: the canonical leaf, its Merkle inclusion proof, the on-ledger anchor transaction hash + ledger close time, and the SHA-256 of the source data (the OFAC SDN snapshot, or — for lending — the exact list of Loan ids observed). Rebuild the leaf, fold the proof to the Merkle root, confirm that root is in the anchor tx's MemoData. Before the daily anchor runs it shows status "pending" with the leaf hash only. Params: query_id (UUID, required). Free, no signup.
Input schema (server-provided preview — do not copy)
{
  "type": "object",
  "required": [
    "query_id"
  ],
  "properties": {
    "query_id": {
      "type": "string",
      "description": "The queryId (UUID) from screen_address_ofac or get_lending_exposure"
    }
  }
}
verify_mpt_registry
No effect details provided
Show server-provided details
Server description (copied; language not verified)
Get the latest on-ledger anchor of the MPT registry (BIS Working Paper 1374 pattern): a Merkle root over the canonicalised index, committed in a Memo on a transaction from a dedicated anchor wallet (not the credential issuer). Returns the root, its tx hash, ledger index, issuance/issuer counts, coverage, and the exact canonicalisation + Merkle scheme so you can reproduce the root from the published /api/mpt/search + /api/mpt/issuer data and check that those rows match the root we anchored on-ledger at a known time (proves published-rows-match-anchored-root, not immutability). No params. Free, no signup.
Input schema (server-provided preview — do not copy)
{
  "type": "object",
  "properties": {}
}

How to use this MCP

Talandor checks the server; it does not connect the server to your assistant.

Choose your client below, then copy the endpoint or configuration. Authentication is completed with the MCP provider, never inside Talandor.

Open the official client guide (opens in a new tab)
Observation history
Operational
· stable since
2025-11-25 · 20 tools · no change · 4 checks
Operational
2025-11-25 · 19 tools
Unreachable now
No protocol
Unreachable now
No protocol
Operational
· stable since
2025-11-25 · 19 tools · no change · 3 checks
Unreachable now
No protocol
Operational
· stable since
2025-11-25 · 19 tools · no change · 4 checks
Complete public contract · 2025-11-25 · 20 tools
d0c01af77846
Complete public contract · 2025-11-25 · 19 tools
8a0f330b7aa6
Complete public contract · 2025-11-25 · 19 tools
779605b22fae

Deep monitoring eligibility

Eligible for deep monitoring

A complete public tools/list contract was observed, so a future deep-monitoring baseline can be compared safely.

Personal Watch is not open yet. This report does not start a Watch or a payment.

See public monitoring
Watch · 9 €/month

Watch this MCP

Your agent depends on this MCP. We tell you before a change breaks it.

  • Know when it goes downWe confirm an outage before we alert you, so a single failed check is not treated as a lasting outage.
  • Know when its contract changesWe compare complete public tool catalogs and authentication surfaces over time.
  • Know what changed and what to fixAn alert names the change and the next step for the client you selected.

Full public-contract coverage: Availability, protocol, auth and public tool contract changes can be compared.

Full WatchAvailability, protocol, auth and public tool contract changes
Surface WatchAvailability, TLS, protocol and auth surface — no private tool diff

When Watch is open, you will be able to add, pause, resume, replace, or remove up to five endpoints. Watch checkout is not open. This page does not start a payment. You can sign in from the header; that creates an account, not a Watch. Opening date: not announced yet. Hosted checkout remains closed.

See Watch price, terms and refunds