XRPL wallet scores, wallet permissions, batch send, MPT risk, screening, pre-checks. Never signs.
One address for any MCP client. No sign-in needed on this server.
16 read1 act4 other
Grouped by tool name. At most: moves money, runs code or commands, deletes data, or sends messages for you.
Odel charges nothing per call. The publisher may charge for its own service.
On-chain creditworthiness for the XRP Ledger. XRPLHub builds only what nobody else on the XRP Ledger offers:
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).
The production app is the Next.js project in kreditkarma-backend/.
A 300–850 number on an absolute scale (like FICO — not a percentile that drifts with the population), from 8 signals:
| Signal | What it measures |
|---|---|
| Account age | Age from the wallet's genuine first transaction |
| Transaction activity | Lifetime on-chain activity (log curve, no cap) |
| Financial health | Spendable XRP + buffer above the real reserve line |
| Token engagement | Trust lines to issued assets |
| DEX activity | Order history on the native DEX |
| AMM participation | Liquidity-pool activity |
| Security config | Multisig, regular key, domain, escrow |
| NFT activity | NFT 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).
# Free, no key, any wallet:
curl https://www.xrplhub.io/api/score/rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De
Streamable HTTP, JSON-RPC 2.0, no auth.
https://www.xrplhub.io/api/mcp
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
| Tool | What you get | Cost |
|---|---|---|
check_xrpl_score | 300–850 score, grade, percentile, 8-signal breakdown, tips. Param: wallet_address. | free |
issue_score_credential | Score 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_payment | Before 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_health | Is 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
| Tool | What you get | Cost |
|---|---|---|
get_account_credentials | Every 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_credentials | Everything one issuer has issued: types, subject count, acceptance rate, from a network-wide census (coverage says complete/partial). Param: issuer_address. | free |
check_domain_eligibility | Does 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)
| Tool | What you get | Cost |
|---|---|---|
check_mpt_risk | One 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_mpts | Search the MPT registry index by issuer, issuance id (or hex prefix), or name/ticker. Param: q. | free |
get_issuer_mpts | Everything one issuer has issued as MPTs, with issuer powers per issuance and the issuer's XRPLScore. Param: issuer_address. | free |
verify_mpt_registry | The 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
| Tool | What you get | Cost |
|---|---|---|
screen_address_ofac | Compare 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_attestation | Given 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
| Tool | What you get | Cost |
|---|---|---|
get_monitoring_info | What 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)
| Tool | What you get | Cost |
|---|---|---|
get_lending_exposure | A borrower's total exposure across every loan broker in one call — the ledger has no aggregate object for this. Param: borrower. | free |
get_lending_history | Every loan ever observed for a borrower, including ones since deleted from the ledger (a deleted default still shows, flagged). Param: borrower. | free |
get_underwriting_inputs | The 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
| Tool | What you get | Cost |
|---|---|---|
submit_grant_application | Apply for a community micro-grant. Currently paused — returns an error until applications reopen. Params: wallet_address, category, amount, description. | free |
donate_to_community_fund | Donate 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 |
GET /api/x402/score?wallet=r... — 300–850 score + 8 signalsGET /api/x402/report?wallet=r... — score + risk flags + recommendations + on-chain snapshotGET /api/x402/precheck?destination=r... — agent payment pre-check: one verdict (block / caution / proceed) by published ruleshttps://www.xrplhub.io/llms.txt
Buy a key at https://www.xrplhub.io/pricing — pay in XRP or RLUSD, connect Xaman and sign (no address typing), no signup.
curl -H "Authorization: Bearer xrs_live_..." \
"https://www.xrplhub.io/api/v1/score?wallet=rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De"
| Plan | Price | Included | Rate limit |
|---|---|---|---|
| Free | $0 | 200 scored calls/mo | 10 req/min |
| Starter | $29/mo | 10,000 | 60 req/min |
| Growth | $149/mo | 100,000 | 300 req/min |
| Scale | $499/mo | 1,000,000 | 1,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.
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
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.