XRPLHub — XRPLScore, MPT issuer risk & payment pre-checks
Server Details
XRPL wallet scores, wallet permissions, batch send, MPT risk, screening, pre-checks. Never signs.
- Status
- Healthy
- Uptime
- 100.0% over 42 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2024-11-05
- URL
- Repository
- Dcroyalty/XRPLHub.io
- GitHub Stars
- 0
TDQS
Scored across 21 tools
Every tool targets a clearly distinct purpose, with detailed descriptions that explicitly define boundaries (e.g., check_xrpl_score vs check_mpt_risk, get_lending_exposure vs get_lending_history). Overlaps are minimal and well-qualified, so an agent can easily select the right tool.
All tool names follow a consistent snake_case verb_noun pattern (check_*, get_*, verify_*, issue_*, etc.) with no mixing of conventions or vague verbs. The naming is predictable and readable.
21 tools is slightly above the typical 3–15 range, but the server covers many distinct domains (scoring, MPT, lending, payments, credentials, grants, attestation), so each tool has a justified place. It is heavy but not excessive for the breadth.
Core workflows are well-covered: score retrieval, MPT risk, payment prechecks, credentials, lending exposure/history, grants, and verification. The only minor gap is that some paid tools (e.g., check_wallet_permissions, precheck_payment, get_underwriting_inputs) only return payment resource details rather than executing the check, requiring an extra external step.
Available Tools
21 toolscheck_domain_eligibilityAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain_id | Yes | The PermissionedDomain's ledger index — 64 hex characters | |
| wallet_address | Yes | XRPL classic address to check (starts with r) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden and does well: it states live mainnet behavior, OR eligibility semantics, accepted/expired credential rules, and 'Free, no signup' for auth. It does not mention return format or error behavior, which prevents a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and informative, with useful facts front-loaded: mainnet live, OR logic, params, and no signup. The rhetorical phrase 'the question every domain operator...' adds flavor but not function, slightly reducing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only eligibility check with two required params and no output schema, the description covers the core semantics well: what is checked, the OR condition, live mainnet behavior, and auth requirements. It omits explicit return value/error details, which would make it more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description mostly restates the schema's parameter info, but it adds meaningful interaction semantics: 'Eligibility is OR: any ONE accepted, unexpired credential matching the domain's AcceptedCredentials is enough', clarifying how wallet_address and domain_id relate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Check whether an XRPL account holds a credential that satisfies a PermissionedDomain (XLS-80d)'. This clearly differentiates the tool from siblings like check_xrpl_score, check_mpt_risk, and get_account_credentials by focusing on PermissionedDomain eligibility.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: it is the check 'before a real transaction' and operates 'against a validated mainnet ledger'. It does not explicitly name alternative tools or state when not to use it, so it stops short of a 5, but the intended use case is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_mpt_riskAInspect
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 (live ledger reads) — 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.
| Name | Required | Description | Default |
|---|---|---|---|
| issuance_id | Yes | The MPTokenIssuanceID — 48 hexadecimal characters (XLS-33, 192-bit) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses cost ('Free'), no signup, that every response states its source, and the failure semantic that it returns 'unknown' rather than 'does not exist'. It omits rate limits and whether reads hit the live ledger, so it stops short of exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core value (risk view and the fields it exposes), followed by cost, the paid alternative, and failure semantics. Dense but nearly every clause earns its place; the pricing detail on the alternative endpoint is the only mildly expendable element.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must describe returns — and it does, listing the concrete risk fields and the 'unknown' fallback. It leaves the exact response shape and any rate/access limits unspecified, but for a free read-only risk lookup it is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter's format (48-hex MPTokenIssuanceID) is already documented in the schema. The description repeats the same '48-hex MPTokenIssuanceID, required' fact, adding no meaning beyond the structured field, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Get the risk view of one XLS-33 Multi-Purpose Token issuance') and enumerates exactly what it returns: clawback, freeze, require-auth, transferability, and issuer XRPLScore. An agent can distinguish this from search_mpts, verify_mpt_registry, or get_issuer_mpts without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Frames the when ('before touching it') and names an explicit alternative: the paid x402 endpoint at GET /api/x402/usdc/mpt/{id} for the full issuer picture. The routing is clear, though it's presented as a paid upgrade path rather than a when-not-to-use-this condition, and no other sibling is compared.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_service_healthAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral disclosure responsibility. It explicitly states the return format (overall 'ok' | 'warn' | 'down' plus per-component list), notes that the tool is free and requires no signup, and implies readiness checks without side effects. It does not mention potential rate limits or how to handle a 'down' response, but covers the essential behavior well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the first sentence states the trigger condition and scope, followed by the return format, then usage guidance and cost/friction notes. Every sentence earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema, the description is remarkably complete. It explains what is checked, what the output looks like, when to poll, and that no signup or cost is involved. An agent has enough context to invoke the tool and interpret the result correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema coverage is 100% (empty object). Per the rubric, a baseline of 4 applies, and the description reinforces this with 'No params.' No additional parameter semantics are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Check'), a defined resource ('XRPLHub money path'), and a precise context ('BEFORE you pay'). It enumerates the exact components checked, distinguishing it from sibling tools like check_mpt_risk or check_domain_eligibility, which target entirely different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: use it before paying and poll it if a prior paid call failed. This tells an agent exactly when to invoke the tool, though it does not explicitly name alternatives or exclusion conditions, leaving room for a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_wallet_permissionsAInspect
Who can move money out of an XRPL wallet: its master key, a regular key, a multi-sign signer list, permission delegations (given and received — live on mainnet since 2026-10-08), and money others can pull without a new approval (checks, payment channels, escrows, open DEX and NFT offers, tickets). One plain-English sentence per finding plus the raw ledger facts. This is a PAID x402 call: $0.02 in USDC on Base or RLUSD on the XRP Ledger at GET /api/x402/permissions?address=r.... This tool returns the payment resource to call; it does not run the check. People can use the free page at https://www.xrplhub.io/permissions.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | The XRPL account (r...) to check |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so: it discloses the exact cost ($0.02 USDC on Base or RLUSD on XRPL), the endpoint, and the critical behavioral quirk that this tool returns the payment resource to call rather than performing the check. That non-execution caveat is exactly the kind of trait an agent would otherwise get wrong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose in the first sentence and keeps the payment/non-execution caveat prominent. The output-format sentence and the free-page pointer each earn their place, though the enumeration of permission types is denser than strictly necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, yet the description explains what comes back — one plain-English sentence per finding plus raw ledger facts — and fully covers the payment flow and the tool's non-executing nature. Nothing needed to invoke or interpret it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single address parameter, so the schema already documents it fully. The description reinforces the r... format via the endpoint example but adds no semantics beyond that; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource — determining who can move money out of an XRPL wallet — and enumerates the exact permission surfaces covered (master key, regular key, signer list, permission delegations, checks, channels, escrows, offers, tickets). This distinguishes it cleanly from siblings like check_xrpl_score or precheck_payment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context: it is a paid x402 call returning the payment resource rather than running the check, and names the alternative for people who just want the result (the free page at xrplhub.io/permissions). It does not explicitly say when to prefer this over sibling check_* tools, so it falls short of full when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_xrpl_scoreAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet_address | Yes | XRP Ledger classic address to score (starts with r, 25–35 characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full transparency burden. It discloses that this is a read-only, public-ledger operation ('100% public ledger data'), that no API key or signup is required, and exactly what the caller receives. It stops short of covering failure modes or data freshness, but the essential behavioral profile is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is tightly organized: action and use case first, then the return payload, then the parameter, then access requirements. Every sentence adds useful information without fluff or repetition beyond a compact params reminder.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with no output schema, this description is unusually complete. It explains what the score means, the range, the signals used, the returned artifacts, the required address format, and the access model, so an agent has enough context to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single required parameter, and the schema already specifies that wallet_address starts with 'r' and is 25–35 characters. The description repeats these constraints rather than adding new semantic detail, so it meets the baseline but does not elevate it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Get a 300–850 creditworthiness score for any XRP Ledger wallet.' It also enumerates the exact output components (score, letter grade, percentile, per-signal breakdown, tips), which makes the tool's function unmistakable and separates it from sibling tools like check_mpt_risk or issue_score_credential.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: 'before you pay, lend to, trade with, or onboard it.' It does not explicitly state when to avoid this tool or name an alternative for different wallet checks, but the intended decision-making context is well conveyed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
donate_to_community_fundAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Amount to donate. Minimum 1. Any size welcome — even 1-5 XRP helps fund a real grant. | |
| message | No | Optional. A short dedication or message to attach to the donation record. | |
| currency | No | XRP or RLUSD. Default: XRP. Use RLUSD for a stable USD-equivalent donation. | |
| donor_wallet | No | Optional. XRPL wallet address of the donor. Providing this allows building a ready-to-sign Payment transaction. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does a solid job: it states the return values (treasury address and txjson when donor_wallet is supplied), the on-chain transparency of donations, zero overhead, and no signup. 'Ready-to-sign' suggests the transaction is not yet signed/broadcast, which is useful behavioral context, though it is not spelled out that signing/submission is a separate step.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and includes only a few contextual clauses. The inline parameter summary is redundant given the 100% schema coverage, but it is compact and does not seriously bloat the text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even without an output schema, the description explains what the caller receives and why the fund is trustworthy. It gives enough context for an agent to supply amount, choose currency, and optionally pass donor_wallet/message. A minor gap is the lack of an explicit statement about the downstream signing/broadcast workflow for the returned txjson.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All four parameters have rich descriptions in the schema, so the baseline is 3. The description's inline 'Params' list mostly restates the schema without adding new semantic information, and the schema already covers the amount minimum, currency default, and optional fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action and object: 'Donate XRP or RLUSD to the XRPLHub Community Grant Treasury.' This unambiguously identifies the tool's purpose and separates it from nearby tools like submit_grant_application, which is for grant applicants rather than donors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use case is clear: use this tool when donating XRP/RLUSD to the community grant treasury. The 'No signup' note and the promise of a ready-to-sign Payment txjson also imply a low-friction donation path distinct from a generic transaction builder, though no sibling is explicitly named as an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_account_credentialsAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| issuer | No | Optional — restrict to one issuer via a direct ledger lookup (no owner-directory walk) | |
| wallet_address | Yes | XRPL classic address to look up (starts with r) | |
| credential_type | No | Optional — credential type (plain name or hex); required with issuer unless the issuer is XRPLHub's |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it delivers rich behavioral detail: it is live against a validated mainnet ledger, never stale, bounded at ~20s for the default walk, with a coverage field of complete/partial, and a direct-lookup mode that is always fast and complete. It also discloses that the result can be partial for large exchange-scale accounts, which is critical for correct use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence earns its place: purpose, use case, default behavior, alternative mode, parameter summary, and access requirements. The information is front-loaded and dense without being wordy, and the dash-separated parameter list makes it scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even without an output schema, the description tells the agent what the response will contain (issuer, type, accepted, expired, expiry date) and the completeness semantics. It covers performance characteristics, the two invocation modes, parameter constraints, and access prerequisites. An agent has enough to decide when to call it and how to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already explains the direct-ledger-lookup behavior for issuer and the conditional requirement for credential_type. The description mostly restates this, adding only minor conveniences like the 'r...' format and 'name or hex'. It does not meaningfully extend the parameter semantics beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Get every XLS-70 credential an XRPL account holds', and lists the exact attributes returned (issuer, type, acceptance, expiry, expiry date). This clearly distinguishes it from sibling tools like get_issuer_credentials or search_mpts by targeting credentials held by an account rather than issued or listed elsewhere.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use it: 'Use this before trusting a counterparty who claims to hold a credential.' It also provides clear routing between the default owner-directory walk and the faster direct lookup when an issuer is passed. It does not explicitly name alternative sibling tools as exclusions, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_issuer_credentialsAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| issuer_address | Yes | XRPL classic address of the credential issuer (starts with r) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and handles it well: it discloses the census/cached nature, the periodic rebuild, the coverage field, and the risk of mistaking a partial answer for final, plus free/no-signup access. This goes beyond a simple read hint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact chunks—purpose, provenance/coverage caveat, and param/access note—are front-loaded with no filler. Every sentence adds decision-relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema and no annotations, the description covers what data is returned, that it may be partial, and what access is needed. It does not spell out the exact response shape or update cadence, but these are minor for invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully documents issuer_address with a description, so the description adds little beyond restating it as required and noting the r-prefix. Baseline 3 is appropriate when schema coverage is complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get'), names the resource ('everything an issuer account has issued'), and enumerates the returned dimensions (credential type, distinct subject count, acceptance rate), making it clear what the tool does and separating it from account-level or MPT-focused siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The issuer-account wording and the list of aggregate metrics provide a clear context for when to call it. It does not explicitly name alternatives or say when not to use it, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_issuer_mptsAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| issuer_address | Yes | XRPL issuer address (starts with r) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It does well by revealing that the response includes a coverage status ('complete-per-known-issuer'/'partial'), explaining that each issuance lists the issuer's powers over a holder, and noting it is free and requires no signup. It does not explain what leads to 'partial' coverage or data freshness, but the disclosures are substantive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core purpose. Every sentence contributes useful information: scope, source, output composition, coverage, parameter hint, and access conditions. It is slightly dense but not wasteful, earning a strong score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with no output schema, the description covers the main return contents (MPTs, XRPLScore) and even the coverage nuance. It omits error behavior and exact formatting of the score, but the tool is relatively simple and the description gives enough to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for issuer_address, so the baseline is 3. The description adds only a duplicate note (r..., required) that mirrors the schema. It does not add meaningful parameter behavior beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific, well-scoped statement: 'Everything one issuer has put out as Multi-Purpose Tokens (XLS-33), from the registry index, plus the issuer's own XRPLScore.' This clearly identifies the resource (issuer MPTs), the operation (get all), and the unique addition (XRPLScore), effectively distinguishing it from siblings like search_mpts or verify_mpt_registry.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than explicit. The description implies 'use when you need all MPTs for a specific issuer and their XRPLScore,' but it never states when not to use it or names alternatives such as search_mpts for cross-issuer queries. There is clear context but no exclusions or explicit routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_lending_exposureAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| borrower | Yes | XRPL classic address (r..., 25–35 chars) of the borrower |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description transparently states that every call persists an immutable Merkle-anchored snapshot, which is a side effect an agent should know. It also clarifies the limitation of 'no-loans-ever' (not proof of none) and the risk of borrowers erasing defaults. However, it does not explicitly state whether the tool is read-only or has any destructive capabilities, though the snapshot mention implies a write. The description is largely transparent about behavioral nuances.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-structured. It front-loads the main purpose, then provides important caveats, return value hints, and operational notes. All sentences contribute value—some are warnings, some explain state meanings, and some clarify the mainnet status. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all essential context: what the tool does, what it returns (outstanding by asset, loan count, etc.), the meaning of disposition states, mainnet status, and a disclaimer. It also mentions the free pricing. Given there is no output schema, the description compensates by listing return fields. No critical missing information for an agent to decide to call this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The parameter 'borrower' is described with details: XRPL classic address format (r..., 25–35 chars) and required status. This matches the schema. The description adds contextual value by explaining the address format and the required constraint, but there is only one parameter and no enums or nested objects, so the coverage is adequate. A small deduction because the description does not elaborate on possible edge cases (e.g., invalid address handling), but it is clear enough.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to retrieve a borrower's total XLS-66 lending exposure across all loan brokers. It specifies the resource (borrower exposure data) and the action (get). It also differentiates itself from a sibling tool (get_lending_history) by focusing on aggregate exposure across brokers, which is distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool: when needing total lending exposure across all brokers. It also includes important caveats about XLS-66 not being enabled on mainnet, the meaning of 'disposition' values, and the fact that deletions can erase default evidence. This is actionable guidance for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_lending_historyAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| borrower | Yes | XRPL classic address (r...) of the borrower |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the data source (append-only exposure snapshots), the visibility limitation (loans before first observation are invisible), the behavior for deleted loans (shown as vanished with everDefaulted true), and the observationWindow concept. It also mentions 'Free, no signup' as a practical access trait. This is thorough and transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but each sentence contributes meaning. It front-loads the core purpose, then explains per-loan details, an example, the observationWindow, and the parameter. It is structured logically and avoids fluff, though it could be slightly more compact without losing important nuance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema, the description explains the output fields, the observationWindow, and the edge case of deleted loans. It gives the agent enough to know what to expect and how to interpret results. Missing error cases are minor and not critical for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes the borrower parameter as an XRPL classic address (r...), and the description repeats this without adding new meaning. It does not elaborate on formatting, validation, or any edge cases. Since schema coverage is 100%, the description adds minimal value beyond restating the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states exactly what the tool does: returns the complete observed loan history for a borrower, including deleted loans, with specific fields like first/last ledger, status, and flags. It is distinct from other lending tools by emphasizing the historical, append-only nature and the 'credit file' concept. The verb 'get' plus the resource 'lending history' is clear and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context that this is for historical loan data, especially for loans deleted from the ledger, which is a unique use case. It implies when to use it (when you need the full credit file) but does not explicitly name alternatives like get_lending_exposure or state when not to use it. The context is strong, but no explicit exclusions or alternative routing is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_monitoring_infoAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does so well: it says the tool has no parameters, is free, is not the subscription mechanism, and offers no recommendation or probability of default. It also discloses watcher categories and delivery mechanics, giving the agent a realistic model of the service without overstating side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is information-dense and front-loaded with its purpose, but it is a single long run-on passage that would be easier for an agent to parse as structured bullets. Every clause adds content, so it is not padded, but the structure is not ideal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description covers the key contents an agent needs: what is monitored, delivery mechanism, plan limits, capacity constraints, consumer-use restrictions, limitations, and the subscription endpoint. The phrase 'and the endpoints' is slightly vague, but enough is included to make the tool usable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the schema leaves nothing to document; the description explicitly confirms 'No params.' This matches the baseline for a zero-parameter tool and adds no confusing parameter information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action and resource: 'Describe XRPLHub's continuous-monitoring service' and immediately states the decision it supports. It also distinguishes itself from the subscription endpoint by saying 'Subscribing needs an API key over HTTP (POST /api/monitor/subscribe), not this tool.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context for when this information is relevant ('so an agent can decide whether to use it') and explicitly routes subscription actions away from the tool to the HTTP endpoint. It clarifies the service is advisory only ('never a replacement; no recommendation, no probability of default'), though it does not name sibling tools as alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_underwriting_inputsAInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| borrower | Yes | XRPL classic address (r...) of the borrower |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even without annotations, the description fully discloses behavior: it returns payment resource details, includes a Merkle-anchored attestation, and explicitly states what it does NOT return (no recommendation). Cost and endpoint are also transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence in the description adds value: purpose, contents, exclusions, cost, endpoint, alternatives, and parameter format. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Comprehensive for a paid, special-purpose tool. Covers purpose, components, payment details, endpoint, relationship to free siblings, and the single parameter. No critical operational details are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers the only parameter with a description matching the tool's mention of 'r...' format. Description adds no new semantic information beyond the schema, so baseline applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool returns the full underwriting-inputs bundle for an XLS-66 decision, listing specific components. Also distinguishes from sibling tools by noting free alternatives for some data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly notes this is a paid x402 call with cost and endpoint, states there is no free tier or API key, and directs users to get_lending_exposure and screen_address_ofac for free components. No ambiguity about when to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
issue_score_credentialAInspect
Get a certificate of a wallet's XRPLScore, signed by XRPLHub, with the score computed fresh at issuance. A counterparty checks it by asking XRPLHub's verify URL — the signature is an HMAC under a key only XRPLHub holds, so this is XRPLHub's own attestation, not independently verifiable proof, and the buyer need not control the wallet. 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.
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | No | Only for the second call: the payment uuid returned by the first call, after the user has signed in Xaman. | |
| currency | No | Payment currency. Defaults to XRP. | |
| wallet_address | Yes | XRP Ledger wallet address the credential will attest to (starts with r) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so thoroughly. It discloses that the signature is an HMAC under a key only XRPLHub holds, that the result is XRPLHub's own attestation not independently verifiable proof, that the buyer need not control the wallet, that the first call returns a payment request valid 90 days, and that the second call returns certId and verifyUrl.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence earns its place: purpose, trust model, call flow, parameters, and auth requirement. It is front-loaded with the primary purpose and proceeds logically through caveats and sequencing. The parameter sentence is compact and does not bloat the text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-step, paid credential tool with no output schema, the description fully explains the sequence, return values (payment request, then certId/verifyUrl), fee (1 XRP or 1 RLUSD), validity period, trust model, and the fact that no signup is required. Missing edge cases like invalid wallet or expired uuid are minor against this level of completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the description reinforces roles by noting wallet_address format ('r...'), currency default, and uuid for the second call only. It adds the explicit constraint that the second call must reuse the same wallet_address together with the returned uuid, which goes beyond the schema's individual parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action and resource: 'Get a certificate of a wallet's XRPLScore, signed by XRPLHub, with the score computed fresh at issuance.' This clearly distinguishes the tool from siblings like check_xrpl_score (score checking) and verify_attestation (verification) by focusing on issuance of a paid, signed credential.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear usage context: a two-call flow, payment amount and validity, parameter roles, and 'No signup.' It even hints at when not to use the tool for verification ('counterparty checks it by asking XRPLHub's verify URL'). However, it does not explicitly name sibling alternatives or state exclusion conditions, so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
precheck_paymentAInspect
Before your agent pays an XRPL address: one verdict (block / caution / proceed) by fixed published rules — the destination's XRPLScore, a sanctions screen against every list XRPLHub holds (with a verifiable receipt), account age and ledger flags, and whether the ledger would REJECT the payment (missing destination tag, Deposit Authorization, no RLUSD trust line, unfunded account). This is a PAID x402 call: $0.03 in USDC on Base or RLUSD on the XRP Ledger at GET /api/x402/precheck. This tool returns the payment resource to call; it does not run the check. Params: destination (r..., required), amount, currency (XRP|RLUSD), destination_tag, from (your paying address).
| Name | Required | Description | Default |
|---|---|---|---|
| from | No | Optional: your paying address — lets the check test Deposit Authorization preauth | |
| amount | No | Optional: the amount you intend to send (plain decimal) | |
| currency | No | Optional: XRP (default when amount is given) or RLUSD | |
| destination | Yes | The XRPL address (r...) you are about to pay | |
| destination_tag | No | Optional: the destination tag you will use |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it discloses a lot: paid x402 call at $0.03 in USDC on Base or RLUSD on XRPL, the exact endpoint, and critically that the tool returns the payment resource rather than running the check. Missing auth/prerequisite and failure handling, but this is well above the no-annotation baseline.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose and verdict shape, then cost/endpoint, then the crucial 'does not run the check' caveat. The closing param enumeration duplicates the input schema and is the one partly wasteful sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must convey returns, and it does specify the three-way verdict plus its components (score, sanctions with receipt, age/flags, rejection reasons). It does not describe the returned resource's structure or how to redeem the verifiable receipt, leaving a modest gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so every parameter including the 'from' Deposit-Authorization explanation is already documented in the schema. The description's trailing param list largely restates the schema, adding the currency enum inline but nothing the schema does not already convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('precheck payment') and enumerates the composite scope: XRPLScore, sanctions screen, account age/flags, and ledger-level rejection reasons. It clearly resolves the ambiguity that it returns a payment resource rather than performing the check. It does not explicitly name which sibling (check_xrpl_score, screen_address_ofac) it supersedes, so it stops short of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Before your agent pays an XRPL address' gives a clear trigger condition, and the note that it returns the resource to call (not the check) tells the agent a follow-up invocation is required. There is no explicit when-not or named alternative among the many sibling check_* tools, so it falls short of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_batch_sendAInspect
Pay 2 to 8 XRPL addresses with ONE signature, all or nothing (XRPL Batch, tfAllOrNothing — live on mainnet since 2026-10-09). Checks every payment on the live ledger first (destination exists or will be created, destination tag, Deposit Authorization, RLUSD trust line, sender balance + fee) and refuses a batch that would fail. Returns the UNSIGNED Batch transaction and a Xaman sign link. FREE. XRPLHub never signs: the sender signs with its own wallet, before sending any other transaction from that account (the batch uses the next sequence numbers).
| Name | Required | Description | Default |
|---|---|---|---|
| from | Yes | The paying XRPL account (r...) | |
| recipients | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and delivers: it enumerates the pre-flight validations (destination existence, destination tag, Deposit Authorization, RLUSD trust line, sender balance + fee), states it refuses failing batches, declares the tool is FREE and never signs (non-custodial), and warns about sequence-number ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and one dense paragraph with little waste, though it packs validations, pricing, custody, and sequencing into a single long sentence chain, making it slightly heavy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even without an output schema, the description states what is returned (an UNSIGNED Batch transaction plus a Xaman sign link) and covers the operator model, validation behavior, and ordering constraint. Nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%, so the description must compensate. It supplies the recipient count bounds (2–8), the significance of destination tags and currencies (XRP/RLUSD trust line handling), and the paying-account role, adding real meaning beyond the raw schema fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource+scope: 'Pay 2 to 8 XRPL addresses with ONE signature, all or nothing.' It binds the tool to the XRPL Batch / tfAllOrNothing feature and clearly frames it as a batch-payment preparation step, which distinguishes it from single-payment siblings like precheck_payment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for when this applies (one-signature multi-payment, all-or-nothing, checked against the live ledger) and a sequencing constraint ('before sending any other transaction from that account'). It does not name the specific alternative (e.g. precheck_payment) or an explicit when-not-to-use, so it stops short of the full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screen_address_ofacAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | XRPL classic address (r..., 25–35 chars) to compare against the OFAC SDN list |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the burden. It transparently discloses the nature of the output (a receipt attesting to process, not ground truth), clarifies that a 'no match' is not a statement of being clean, and includes legal disclaimers. It also conveys the operation is non-destructive (compare and receive receipt) and free.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is excessively verbose and repetitive. Key caveats are stated multiple times (e.g., 'not legal or compliance advice', 'NOT a statement that the address is clean'). It could be condensed into a few concise sentences without losing meaning, so it scores below average.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no output schema, the description compensates by clearly enumerating return fields (queryId, list, result, statement). It also includes operational details like the terms of service and cost (free), making it complete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides full coverage of the single 'address' parameter, including type, format, and requirement. The description adds no substantive meaning beyond the schema, merely restating 'Params: address (r..., required)', so it meets the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: comparing one XRPL address against an OFAC SDN list snapshot and returning a receipt. It also specifies the exact scope (OFAC SDN only, no EU/UK/UN lists), which distinguishes it from potential sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly guides usage by specifying the scope (OFAC SDN only) and directs users to verify the receipt later with 'verify_attestation'. However, it does not explicitly name alternative tools for non-OFAC screenings, though the sibling list includes other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_mptsAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Issuer address (r...), MPTokenIssuanceID or hex prefix, or token name/ticker |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It discloses that results are served from an index (not live), that coverage may be 'complete' or 'partial,' and that 'partial' should be treated as a floor. It also notes the response includes lastCompletedPassAt and source. It does not detail rate limits or error behavior, but the most important non-obvious behavioral trait (partial coverage) is explicitly surfaced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, information-dense, and well-ordered: what it searches, what it returns, how to interpret the index coverage, and the parameter. Every sentence earns its place, and the critical caveat about 'partial' coverage is front-loaded in the middle. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter search tool with no output schema, the description covers the search target, return fields, coverage semantics, and cost/auth requirements ('Free, no signup'). It could mention source values (e.g., what 'source' refers to) or example queries, but for an agent to invoke it correctly with q, the description is nearly sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description reinforces the meaning of 'q' by listing the accepted forms (issuer address, MPTokenIssuanceID or hex prefix, token name/ticker) but does not add formatting details, case sensitivity, or examples. The schema already documents the parameter adequately; the description adds modest enrichment.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Search'), a specific resource ('XRPL Multi-Purpose Token (XLS-33) registry index'), and the exact search dimensions (issuer address, MPTokenIssuanceID/hex prefix, token name/ticker). It also lists return fields, making it unmistakable what the tool does and how it differs from sibling tools like get_issuer_mpts (which fetches MPTs for a specific issuer) and verify_mpt_registry (which verifies registry membership).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states when to use this tool: when searching the registry by issuer, ID, or ticker. It also signals the index-backed nature and coverage semantics ('partial' as a floor), which helps an agent decide if results are sufficient. It does not explicitly name sibling alternatives to avoid, but the purpose clarity and context make the appropriate usage reasonably inferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_grant_applicationAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Amount requested in RLUSD (1–100) | |
| category | Yes | Grant category: RENT, UTILITIES, GROCERIES, MEDICAL, TRANSPORT, CHILDCARE, or OTHER | |
| currency | No | Payout currency. Default and recommended: RLUSD | |
| description | Yes | Clear description of the need, situation, and urgency (2–4 sentences). Be specific — vague applications are harder for the reviewer to verify. | |
| wallet_address | Yes | XRPL wallet address where the grant will be sent if approved |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of explaining behavior. It states the application is reviewed by a person, not automated, and that it returns a grant id and status. It does not mention potential side effects like whether submission guarantees approval or if funds are held, but the manual review process is transparently described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is reasonably concise and front-loads the core purpose, eligibility, and human review process. However, it includes a 'Params:' section that largely duplicates the input schema, which adds minor redundancy but does not become overly verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the application context, eligibility, review process, and expected return value (grant id and status). Since there is no output schema, the return information is useful, though not detailed. It is complete enough for an agent to understand the tool's role and basic expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds little beyond the schema. It repeats the category and amount constraints but omits the optional currency parameter from its inline param list. The schema already documents all parameters accurately, so the description provides no meaningful extra parameter-level meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: applying for a community micro-grant from the XRPLHub treasury, with eligible categories and amount range. It is easily distinguished from sibling tools like donate_to_community_fund because it is explicitly about applying rather than donating.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on how the tool is used: it is for grant applications, lists eligible spending categories, and notes that a human reviews every application with no automated triage. It does not explicitly name alternative tools or state 'do not use when', but the purpose and review process are clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_attestationAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query_id | Yes | The queryId (UUID) from screen_address_ofac or get_lending_exposure |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It explains the verification process step-by-step (rebuild leaf, fold proof, confirm root in MemoData) and mentions the pending status before the daily anchor runs. This fully discloses the tool's behavior without relying on annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and then provides necessary technical details about verification steps and the pending state. While somewhat verbose, the detail is directly relevant and the structure flows logically from purpose to method to edge case.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description fully equips the agent to understand what to expect: it lists all output components (canonical leaf, Merkle proof, anchor tx hash, ledger close time, SHA-256 of source data) and explains the verification flow. It also covers the pre-anchor edge case. Without an output schema, this level of detail is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description for query_id already states it is the queryId from screen_address_ofac or get_lending_exposure. The tool description repeats this exact information, adding no new semantic meaning. Since schema coverage is 100%, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: given a queryId from screen_address_ofac or get_lending_exposure, it returns all data needed to verify a receipt without trusting XRPLHub. It specifies the exact output components (canonical leaf, Merkle proof, anchor transaction hash, etc.), making the function unambiguous and distinct from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly indicates when to use this tool: whenever a receipt from the two named source tools needs verification. It mentions the prerequisite queryId and the workflow of rebuilding the leaf, folding the proof, and checking the anchor transaction. It does not explicitly contrast with alternatives, but the references to the sibling tools provide clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_mpt_registryBInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates that the tool returns data and is 'free, no signup', but it does not explicitly state whether it is read-only, what happens on error, or whether it performs any state-changing operations. Since no annotations are provided, the description carries the full burden of behavioral disclosure and does not fully meet it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is overly verbose and repetitive, restating the same idea of the on-ledger anchor and the reproduction/checking workflow multiple times. It could be condensed to a few clear sentences without losing meaning, and the long trailing explanation makes it less scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers what the tool returns, why it matters, and how the returned root can be used to verify published data. There is no output schema, so the explanation of return values is important and is provided. It does not discuss error cases, but for a parameterless read-style verification call the core context is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is empty and the description explicitly confirms 'No params', so there are no parameter details missing. This is essentially ideal for a parameterless tool, though it adds no extra semantic depth beyond confirming that no arguments are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to get the latest on-ledger anchor of the MPT registry and return the Merkle root plus associated metadata. It specifies the exact resource and action, and the output list makes it unambiguous what the tool does. The name 'verify_mpt_registry' aligns well with the described behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a verification use case by mentioning that you can reproduce the root from published data and check that rows match the anchor, but it never explicitly says when to use this tool versus alternatives like verify_attestation or search_mpts. It also does not state conditions under which this tool should be preferred, so guidance is mostly implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Added
check_wallet_permissions - Added
prepare_batch_send
1 tool update
- Added
precheck_payment
3 tool updates
- Removed
build_xrpl_transaction - Removed
list_xrpl_services - Removed
preview_xrpl_transaction
2 tool updates
- Changed
build_xrpl_transaction2 fields changed- changed
Input schema / properties / params / descriptionPrevious value: -"Per-service parameters. Call list_xrpl_services for types + examples for every field. Required fields by id — multisig: signers, quorum | regkey: regularKey | delegate: delegate, permissions | 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: (no params)"New value: +"Per-service parameters. Call list_xrpl_services for types + examples for every field. Required fields by id — multisig: signers, quorum | regkey: regularKey | delegate: delegate, permissions | 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 | ammlaunch: assetValue, asset2Value | 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: (no params)" - changed
Input schema / properties / product_id / enumPrevious value: -[ - "multisig", - "regkey", - "delegate", - "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" -]New value: +[ + "multisig", + "regkey", + "delegate", + "depositauth", + "desttag", + "issuerdecl", + "issuercfg", + "tokenfee", + "trustline", + "trustsend", + "rippling", + "mptissue", + "mptsend", + "globalfreeze", + "freezeline", + "ammlaunch", + "paychannel", + "tickets", + "nftmint", + "nftburn", + "nftoffer", + "checkcreate", + "checkcash", + "checkcancel", + "depositpreauth", + "escrow", + "identity", + "did", + "compliance", + "credentialissue", + "permdomain" +]
- Changed
preview_xrpl_transaction1 field changed- changed
Input schema / properties / product_id / enumPrevious value: -[ - "multisig", - "regkey", - "delegate", - "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" -]New value: +[ + "multisig", + "regkey", + "delegate", + "depositauth", + "desttag", + "issuerdecl", + "issuercfg", + "tokenfee", + "trustline", + "trustsend", + "rippling", + "mptissue", + "mptsend", + "globalfreeze", + "freezeline", + "ammlaunch", + "paychannel", + "tickets", + "nftmint", + "nftburn", + "nftoffer", + "checkcreate", + "checkcash", + "checkcancel", + "depositpreauth", + "escrow", + "identity", + "did", + "compliance", + "credentialissue", + "permdomain" +]
1 tool update
- Changed
build_xrpl_transaction2 fields changed- changed
Input schema / properties / confirm_caution / descriptionPrevious value: -"Caution-tier services (multisig lockdown, No Freeze, MPT issuance…) can be irreversible. Set true ONLY after the wallet owner has read the preview_xrpl_transaction `irreversible` block; it is added to the payment resource."New value: +"Caution-tier services (multisig lockdown, No Freeze, MPT issuance…) can be irreversible. Set true ONLY after the wallet owner has read the `irreversible` block (returned when this is missing, and by preview_xrpl_transaction)." - changed
Input schema / properties / product_id / descriptionPrevious value: -"Which XRPL action to buy. Call list_xrpl_services for the full catalogue with each id's label, tier, price and parameters."New value: +"Which XRPL action to build (free). Call list_xrpl_services for the full catalogue with each id's label, tier and parameters."
2 tool updates
- Changed
build_xrpl_transaction2 fields changed- changed
Input schema / properties / params / descriptionPrevious value: -"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: (no params)"New value: +"Per-service parameters. Call list_xrpl_services for types + examples for every field. Required fields by id — multisig: signers, quorum | regkey: regularKey | delegate: delegate, permissions | 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: (no params)" - changed
Input schema / properties / product_id / enumPrevious value: -[ - "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" -]New value: +[ + "multisig", + "regkey", + "delegate", + "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" +]
- Changed
preview_xrpl_transaction1 field changed- changed
Input schema / properties / product_id / enumPrevious value: -[ - "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" -]New value: +[ + "multisig", + "regkey", + "delegate", + "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" +]
1 tool update
- Changed
build_xrpl_transaction1 field changed- changed
Input schema / properties / params / descriptionPrevious value: -"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"New value: +"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: (no params)"
2 tool updates
- Changed
build_xrpl_transaction2 fields changed- added
Input schema / properties / confirm_cautionAdded value: +{ + "description": "Caution-tier services (multisig lockdown, No Freeze, MPT issuance…) can be irreversible. Set true ONLY after the wallet owner has read the preview_xrpl_transaction `irreversible` block; it is added to the payment resource.", + "type": "boolean" +} - changed
Input schema / properties / product_id / descriptionPrevious value: -"Which XRPL action to build. Call list_xrpl_services for the full catalogue with each id's label, tier and parameters."New value: +"Which XRPL action to buy. Call list_xrpl_services for the full catalogue with each id's label, tier, price and parameters."
- Added
preview_xrpl_transaction
1 tool update
- Added
get_monitoring_info
1 tool update
- Changed
build_xrpl_transaction2 fields changed- changed
Input schema / properties / params / descriptionPrevious value: -"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 | dextrade: takerGetsValue, takerPaysValue | 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 | desttagreq: (no params) | escrow: destination, amount, finishAfter | identity: domain | did: uri | compliance: domain, didUri | credentialissue: subject, credentialType | permdomain: credentialType"New value: +"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" - changed
Input schema / properties / product_id / enumPrevious value: -[ - "multisig", - "regkey", - "depositauth", - "desttag", - "lockdown", - "issuerdecl", - "issuercfg", - "tokenfee", - "trustline", - "trustsend", - "rippling", - "mptissue", - "mptsend", - "globalfreeze", - "freezeline", - "dexorder", - "dextrade", - "smartswap", - "ammlaunch", - "ammentry", - "paychannel", - "tickets", - "nftmint", - "nftburn", - "nftoffer", - "checkcreate", - "checkcash", - "checkcancel", - "desttagreq", - "escrow", - "identity", - "did", - "compliance", - "credentialissue", - "permdomain" -]New value: +[ + "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" +]
1 tool update
- Changed
build_xrpl_transaction1 field changed- changed
Input schema / properties / params / descriptionPrevious value: -"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 | rippling: (no params) | mptissue: name, ticker, maximumAmount | mptsend: destination, mptIssuanceId, amount | globalfreeze: (no params) | freezeline: holder, currency | dexorder: takerGetsValue, takerPaysValue | dextrade: takerGetsValue, takerPaysValue | smartswap: takerGetsValue, takerPaysValue | ammlaunch: assetValue, asset2Value | ammentry: assetValue, asset2Value | paychannel: destination, amount, publicKey | tickets: (no params) | nftmint: uri | nftburn: nftokenId | nftoffer: nftokenId, amount | checkcreate: destination, amount | checkcash: checkId, amount | checkcancel: checkId | desttagreq: (no params) | escrow: destination, amount, finishAfter | identity: data | did: uri | compliance: (no params) | credentialissue: subject, credentialType | permdomain: credentialType"New value: +"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 | dextrade: takerGetsValue, takerPaysValue | 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 | desttagreq: (no params) | escrow: destination, amount, finishAfter | identity: domain | did: uri | compliance: domain, didUri | credentialissue: subject, credentialType | permdomain: credentialType"
2 tool updates
- Changed
build_xrpl_transaction1 field changed- changed
Input schema / properties / params / descriptionPrevious value: -"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 | rippling: (no params) | mptissue: (no params) | mptsend: destination, mptIssuanceId, amount | globalfreeze: (no params) | freezeline: holder, currency | dexorder: takerGetsValue, takerPaysValue | dextrade: takerGetsValue, takerPaysValue | smartswap: takerGetsValue, takerPaysValue | ammlaunch: assetValue, asset2Value | ammentry: assetValue, asset2Value | paychannel: destination, amount, publicKey | tickets: (no params) | nftmint: uri | nftburn: nftokenId | nftoffer: nftokenId, amount | checkcreate: destination, amount | checkcash: checkId, amount | checkcancel: checkId | desttagreq: (no params) | escrow: destination, amount, finishAfter | identity: data | did: uri | compliance: (no params) | credentialissue: subject, credentialType | permdomain: credentialType"New value: +"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 | rippling: (no params) | mptissue: name, ticker, maximumAmount | mptsend: destination, mptIssuanceId, amount | globalfreeze: (no params) | freezeline: holder, currency | dexorder: takerGetsValue, takerPaysValue | dextrade: takerGetsValue, takerPaysValue | smartswap: takerGetsValue, takerPaysValue | ammlaunch: assetValue, asset2Value | ammentry: assetValue, asset2Value | paychannel: destination, amount, publicKey | tickets: (no params) | nftmint: uri | nftburn: nftokenId | nftoffer: nftokenId, amount | checkcreate: destination, amount | checkcash: checkId, amount | checkcancel: checkId | desttagreq: (no params) | escrow: destination, amount, finishAfter | identity: data | did: uri | compliance: (no params) | credentialissue: subject, credentialType | permdomain: credentialType"
- Added
get_underwriting_inputs
3 tool updates
- Added
get_lending_exposure - Added
get_lending_history - Changed
verify_attestation1 field changed- changed
Input schema / properties / query_id / descriptionPrevious value: -"The screening receipt queryId (UUID) returned by screen_address_ofac"New value: +"The queryId (UUID) from screen_address_ofac or get_lending_exposure"
2 tool updates
- Added
screen_address_ofac - Added
verify_attestation
1 tool update
- Added
check_service_health
Related MCP Connectors
Wallet trust scores for AI agents. Stellar, XRPL, EVM 81+ chains. OFAC sanctions. x402 payments.
41XRPL token rug-checks, issuer reputation & AMM data for AI agents. Pay-per-call USDC via x402.
XRPLOracle - 31 XRP Ledger tools: payments, DEX, AMM, hooks, NFTs, validators, DIDs.
Free wallet lookup, ENS, labels, caller ID. Paid x402: search, scrape, XRP yield and lending grades
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables interaction with XRP Ledger blockchain for managing wallets, creating and trading tokens, minting and managing NFTs, and executing DEX trades through 15+ comprehensive tools.9 npm2MIT
- AlicenseNot gradedqualityNot gradedmaintenanceProvides secure, policy-controlled wallet infrastructure for AI agents to autonomously manage XRP Ledger wallets and sign transactions. It features a tiered security model with encrypted key storage, a declarative policy engine, and full audit trails for compliance.-
- AlicenseAqualityDmaintenanceNon-custodial agent wallet with a transaction preflight that decodes an unsigned EVM tx and flags drain patterns (unlimited/large approval, approve-all, token & NFT transferFrom, proxy upgrade, on-chain permit, approvals hidden in multicall) before signing.9235 PyPI1MIT
- AlicenseAqualityBmaintenanceEnables MCP clients to screen blockchain addresses and evaluate payment counterparties before funds move, returning clear/caution/risky verdicts, risk scores, and clickable evidence across EVM chains, Tron, and Solana. It also supports anti-blind-signing checks, x402 payment-requirement verification, identity/control baselines, and signed evidence bundles, with free tools and optional paid compliance tools.15280 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.