MCP server: One MCP server.

XRPLHub — XRPLScore, MPT issuer risk & payment pre-checks

@dcroyaltyMCP server · External

XRPL wallet scores, wallet permissions, batch send, MPT risk, screening, pre-checks. Never signs.

Blockchain datav1.18.0TypeScript
Freeno charge per call

One address for any MCP client. No sign-in needed on this server.

What it does

16 read1 act4 other

Grouped by tool name. At most: moves money, runs code or commands, deletes data, or sends messages for you.

What it costs

Free

Odel charges nothing per call. The publisher may charge for its own service.

Tools

21 · grouped by tool name · checked 7 Oct 2026

Read · 16Look things up

  • check_xrpl_score
  • get_account_credentials
  • get_issuer_credentials
  • check_mpt_risk
  • search_mpts
  • get_issuer_mpts
  • check_service_health
  • verify_mpt_registry
  • check_domain_eligibility
  • list_xrpl_services
  • preview_xrpl_transaction
  • get_monitoring_info
  • verify_attestation
  • get_lending_exposure
  • get_underwriting_inputs
  • get_lending_history

Act · 1Change something

  • submit_grant_application

Other · 4Neither hinted nor named

  • issue_score_credential
  • build_xrpl_transaction
  • donate_to_community_fund
  • screen_address_ofac
Try it in the Inspector
README7 min read

XRPLHub.io

On-chain creditworthiness for the XRP Ledger. XRPLHub builds only what nobody else on the XRP Ledger offers:

  • XRPLScore — a 300–850 credit-style score for any XRPL wallet from 8 public-ledger signals, with continuous monitoring (signed webhooks) and XLS-66 lending readiness (cross-broker exposure, underwriting inputs).
  • Spend Controls — budgets a payee can only spend at places you approve, and subscriptions (one check per period, never issued ahead), paid by XRPL checks you sign. Free. Also as a Xaman xApp.
  • MPT issuer-power risk — what a Multi-Purpose Token's issuer can do to holders (clawback, freeze, require-auth, transfer limits) plus the issuer's own XRPLScore.
  • Agent payment pre-check — one paid call before an agent pays an XRPL address: score, sanctions screen, account flags, and whether the ledger would reject the payment.

Plus signed score certificates and credentials (XLS-70), sanctions screening receipts, and a community micro-grant fund (human-reviewed; applications currently paused). XRPLHub does not build generic XRPL transactions; the few it builds live inside the products above (Spend Controls checks, XRPLScore-gated Permissioned Domains, MPT issuance with a recorded backing declaration).

  • Live app: https://www.xrplhub.io
  • Unsigned only, no custody: XRPLHub scores and checks; any transaction it builds is unsigned — it never signs or holds keys. Agents sign with their own wallet (see Ripple's XRPL AI Starter Kit Wallet and Payment skills).
  • The wallet score is free and unauthenticated. Paid actions settle in XRP or RLUSD — no account, no signup.
  • Next.js + TypeScript on Vercel · Neon Postgres (Prisma) · Xaman (XUMM) for signing.

The production app is the Next.js project in kreditkarma-backend/.


XRPLScore

A 300–850 number on an absolute scale (like FICO — not a percentile that drifts with the population), from 8 signals:

SignalWhat it measures
Account ageAge from the wallet's genuine first transaction
Transaction activityLifetime on-chain activity (log curve, no cap)
Financial healthSpendable XRP + buffer above the real reserve line
Token engagementTrust lines to issued assets
DEX activityOrder history on the native DEX
AMM participationLiquidity-pool activity
Security configMultisig, regular key, domain, escrow
NFT activityNFT portfolio + trading

One engine computes the number for the public site, the free endpoint, the paid API, the x402 endpoints and the MCP server. Free and site lookups may be served from a 15-minute cache; every response says whether it was (fromCache, cacheAgeSeconds).

bash
# Free, no key, any wallet:
curl https://www.xrplhub.io/api/score/rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De

For AI agents

MCP server

Streamable HTTP, JSON-RPC 2.0, no auth.

https://www.xrplhub.io/api/mcp
bash
claude mcp add xrplhub --url https://www.xrplhub.io/api/mcp

Every tool that returns a transaction returns an unsigned txjson — the wallet owner signs it in their own wallet; XRPLHub never signs for anyone. (The generic transaction tools were removed on 2026-10-07.)

Score

ToolWhat you getCost
check_xrpl_score300–850 score, grade, percentile, 8-signal breakdown, tips. Param: wallet_address.free
issue_score_credentialScore certificate signed by XRPLHub (score computed fresh at issuance), with a URL where XRPLHub confirms it — XRPLHub's own attestation, not independently verifiable. 90 days. Params: wallet_address, currency, uuid.1 XRP / 1 RLUSD
precheck_paymentBefore paying an XRPL address: returns the x402 payment resource for the pre-check (verdict block / caution / proceed, score, sanctions screen, account flags, whether the ledger would reject the payment). Params: destination, amount, currency, destination_tag, from.$0.03 (USDC on Base or RLUSD on XRPL, x402)
check_service_healthIs the money path working right now — database, Xaman, both x402 facilitators, the anchor config, alerting — before you pay. No params.free

Credentials (XLS-70) & Permissioned Domains

ToolWhat you getCost
get_account_credentialsEvery credential an account holds — issuer, type, accepted?, expired?, expiry. Live, never stale. Params: wallet_address, issuer (optional, direct lookup), credential_type (optional).free
get_issuer_credentialsEverything one issuer has issued: types, subject count, acceptance rate, from a network-wide census (coverage says complete/partial). Param: issuer_address.free
check_domain_eligibilityDoes an account hold a credential satisfying a PermissionedDomain (XLS-80d)? Any one accepted, unexpired, matching credential is enough. Params: wallet_address, domain_id.free

Multi-Purpose Tokens (XLS-33)

ToolWhat you getCost
check_mpt_riskOne issuance's risk view before touching it: issuer powers (clawback, freeze, require-auth, transferable) + the issuer's XRPLScore. Param: issuance_id (48-hex).free
search_mptsSearch the MPT registry index by issuer, issuance id (or hex prefix), or name/ticker. Param: q.free
get_issuer_mptsEverything one issuer has issued as MPTs, with issuer powers per issuance and the issuer's XRPLScore. Param: issuer_address.free
verify_mpt_registryThe latest on-ledger Merkle anchor of the MPT registry (BIS WP 1374 pattern) — root, tx hash, ledger index, coverage, and the exact scheme to reproduce it. No params.free

Sanctions screening & attestation

ToolWhat you getCost
screen_address_ofacCompare one XRPL address against a vintage-pinned OFAC SDN snapshot (exact match only); a Merkle-anchored receipt. Attests to process, not ground truth — "no match" is not "clean." OFAC SDN only (no EU/UK/UN, no fuzzy matching) — see GET /api/screen for the multi-list version. Param: address.free
verify_attestationGiven a queryId from screen_address_ofac or get_lending_exposure, the full Merkle inclusion proof + on-ledger anchor tx + source hash, so it can be checked without trusting XRPLHub. Param: query_id.free

Continuous monitoring

ToolWhat you getCost
get_monitoring_infoWhat the monitoring service watches (score drops, sanctions hits, loan events), how it's delivered (HMAC webhooks, daily), the required consumer-use acknowledgement text, and the endpoints. Subscribing itself needs an API key over HTTP, not this tool. No params.free

XLS-66 lending (returns amendment-not-active until XLS-66 is live on mainnet)

ToolWhat you getCost
get_lending_exposureA borrower's total exposure across every loan broker in one call — the ledger has no aggregate object for this. Param: borrower.free
get_lending_historyEvery loan ever observed for a borrower, including ones since deleted from the ledger (a deleted default still shows, flagged). Param: borrower.free
get_underwriting_inputsThe full underwriting bundle a broker needs — exposure + score + OFAC screening + history, facts only, no recommendation. Param: borrower.$0.05 USDC on Base (x402, no free tier)

Community grants

ToolWhat you getCost
submit_grant_applicationApply for a community micro-grant. Currently paused — returns an error until applications reopen. Params: wallet_address, category, amount, description.free
donate_to_community_fundDonate XRP or RLUSD to the grant treasury; returns a ready-to-sign Payment if you pass donor_wallet. Params: amount, currency, donor_wallet, message.free

x402 (pay-per-call data: RLUSD on XRPL or USDC on Base, no signup)

  • Discovery: https://www.xrplhub.io/.well-known/x402
  • OpenAPI 3.1: https://www.xrplhub.io/openapi.json
  • GET /api/x402/score?wallet=r... — 300–850 score + 8 signals
  • GET /api/x402/report?wallet=r... — score + risk flags + recommendations + on-chain snapshot
  • GET /api/x402/precheck?destination=r... — agent payment pre-check: one verdict (block / caution / proceed) by published rules

llms.txt

https://www.xrplhub.io/llms.txt


B2B API (subscription)

Buy a key at https://www.xrplhub.io/pricing — pay in XRP or RLUSD, connect Xaman and sign (no address typing), no signup.

bash
curl -H "Authorization: Bearer xrs_live_..." \
  "https://www.xrplhub.io/api/v1/score?wallet=rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De"
PlanPriceIncludedRate limit
Free$0200 scored calls/mo10 req/min
Starter$29/mo10,00060 req/min
Growth$149/mo100,000300 req/min
Scale$499/mo1,000,0001,000 req/min

Quotas are hard: past the monthly quota a key gets HTTP 429 until the next month (or an upgrade). There is no overage billing.


Community grants

Donate XRP or RLUSD to the treasury. When applications are open, anyone can apply for a $25–$100 micro-grant (rent, utilities, groceries, medical, transport, childcare); a person reviews every application — nothing is decided or paid automatically — and approved funds go straight to the applicant's wallet. Every donation and payout is on-ledger. Applications are currently paused until the treasury is funded (GRANT_APPLICATIONS_OPEN in src/lib/grantsStatus.ts).

Treasury: rs59g3amo5iT6T64Cg96XXMAWuw3WPQcLF · view on XRPScan


Development

bash
cd kreditkarma-backend
npm install
cp .env.example .env   # fill in the values
npx prisma generate
npm run dev

See kreditkarma-backend/.env.example for every environment variable the app reads.


Similar modules

Browse Blockchain data