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

io.github.Dcroyalty由 GitHub 帳號 Dcroyalty 發布v1.18.0更新於 Oct 24, 2026

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

已驗證Streamable HTTP可網頁執行資料庫金融安全與監控

概覽

AI 產生的概覽

XRPLHub 遠端伺服器,讓助理對 XRP Ledger 做唯讀風險查核:錢包評分、MPT 發行方風險、憑證、制裁篩查與付款預檢。

可以做什麼
  • 評分與憑證:查詢 XRPLScore、簽發評分憑證、檢查 XLS-70 憑證與 PermissionedDomain 資格
  • MPT 風險:搜尋 MPT 登錄表、列出某發行方的全部發行、檢視發行方權限並核驗登錄表錨定
  • 篩查與核驗:OFAC SDN 位址篩查、Merkle 錨定證明核驗、服務健康檢查
  • 付款預檢:目的地位址判定、錢包權限與簽署人審查、2 至 8 個位址的批次付款準備
  • 借貸資料:跨經紀商的 XLS-66 曝險、核保輸入包與已觀測的借貸歷史
  • 社群基金:提交小額補助申請、取得金庫捐款資訊
適用情境
適合助理處理 XRP Ledger 交易對手時使用:在付款、放貸、交易或接納某錢包之前取得風險訊號,或在接觸某個 MPT 發行前做判斷。也適用於需要制裁篩查回執、付款預檢或 XLS-66 借貸曝險資料的工作流程。
執行需求
需要連線到 xrplhub.io 的遠端 streamable HTTP 端點;MCP 端點未宣告需要安裝套件、帳號、API 金鑰或請求標頭。部分底層服務按次付費或需 API 金鑰,且伺服器讀取主網即時帳本資料,因此需要網路存取。
安裝前請注意
評分、等級與篩查回執皆為 XRPLHub 自身的證明,並非可獨立驗證的證據或事實真相;README 說明其不是銀行、徵信機構或受監管實體,回傳內容不構成法律、財務或法遵建議。補助申請目前暫停。捐款與補助工具會回傳金庫位址和待簽署付款交易,簽署前應自行核對;伺服器本身不簽署。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 XRPLHub — XRPLScore, MPT issuer risk & payment pre-checks,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.Dcroyalty%2Fxrplhub/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "xrplhub-xrplscore-mpt-issuer-risk-paymen": {
      "type": "http",
      "url": "https://www.xrplhub.io/api/mcp"
    }
  }
}

README

XRPLHub.io — backend

The production app for xrplhub.io: Next.js (App Router, TypeScript) on Vercel, Neon Postgres through Prisma, XRP Ledger reads through a rotated pool of public nodes, and Xaman / Crossmark / GemWallet for signing. There is no AI or LLM anywhere in the shipped code.

What it does

ProductWhat it is
XRPLScoreA 300–850 score for an XRPL wallet, from 8 public-ledger signals (one engine, src/lib/xrplscore.ts). Free lookups may be served from a 15-minute cache; the response says so (fromCache, cacheAgeSeconds).
Transaction servicesPaid on-chain actions (trust lines, escrows, AMM, NFT, …). We build the exact transaction; the buyer signs it in their own wallet. The count comes only from BUILDABLE_SERVICE_IDS in src/app/api/execute/serviceCatalog.ts.
B2B APIKeys sold for RLUSD/XRP (/api/v1/*, /api/monitor/*, /api/screen/ofac, lending endpoints). Plans in src/lib/plans.ts; quotas are hard (HTTP 429 at the limit).
x402 pay-per-callPer-request payment for the score, report and screening endpoints (RLUSD via the t54 XRPL facilitator; USDC on Base via Coinbase's facilitator).
Continuous monitoringWatched wallets, HMAC-signed webhooks, sparse attested observations. Once a day, not real-time. See docs/MONITORING.md.
OFAC screening receiptsAn exact-match check against the OFAC SDN list's XRP addresses, recorded as a receipt that attests to the process only — never to an address being clean or sanctioned.
MPT / credential lookupsRead-only views of Multi-Purpose Token issuers and XLS-70 credentials, each labelled with its coverage.
Community grantsA person reviews every application; nothing is decided or paid automatically. Applications are currently paused (GRANT_APPLICATIONS_OPEN in src/lib/grantsStatus.ts) because approved grants are waiting for funds. Donations stay open.

XRPLHub is not a bank, credit bureau, consumer reporting agency or regulated entity, and nothing it returns is legal, financial or compliance advice.

Things that are deliberately true of this codebase

  • The server decides every price. src/lib/servicePrices.ts is the only price table. Nothing the client sends about amount or currency is read.
  • Payments are verified on the ledger, once. src/lib/paymentGate.ts checks a validated, successful Payment to the treasury in XRP or RLUSD from the real issuer, covering the price; each payment hash is single-use in the database.
  • Invoices are matched without a scan window. Checkout invoices (src/lib/rlusd.ts) are found by exact transaction hash when known, otherwise by walking the treasury's history back to the invoice's creation — dust traffic cannot push a real payment out of view. An invoice is only closed after the ledger was read completely.
  • A mistyped address is rejected, not screened. Every address goes through src/lib/address.ts (base58check).
  • A cached score never reaches an attestation. scripts/check-attestation-freshness.mjs runs in npm run build and fails if any attestation module imports the cache or fetches a cache-backed score route.
  • Partial data never reads as whole. A failed ledger read is a 503 or a degraded / complete:false flag, never a clean-looking answer.
  • Every judgment carries a disclaimer in its response.
  • The treasury is a single-key XRPL account. It has no signer list on the ledger; nothing here may claim multi-sig protection until it does.

Layout

src/app/api/…      route handlers (payments, scoring, screening, monitoring, x402, MCP, admin, cron)src/app/…          the site (homepage, pricing, donate, verify pages)src/lib/…          engine, pricing + payment gate, x402, monitoring, screening, MPT/credentials, watchdogprisma/schema.prismascripts/           build gates (freshness, service parity) and operator scriptsdocs/              AUTONOMY.md (what runs unattended), MONITORING.md, CREDENTIAL-SPEC.md, calibration notes

Running it locally

bash
npm installcp .env.example .env        # fill in DATABASE_URL and the keys you neednpx prisma db push          # creates/updates tables on your Neon databasenpm run dev

npm run build runs the two build gates (attestation freshness, service parity), prisma generate, then next build with TypeScript errors enforced.

Main environment variables (see .env.example; anything unset degrades loudly, not silently):

VariableUsed for
DATABASE_URLNeon Postgres
TREASURY_ADDRESS, RLUSD_ISSUER, RLUSD_CURRENCYWhere payments go and which RLUSD counts
XUMM_API_KEY, XUMM_API_SECRETXaman sign-in and payment requests
ADMIN_API_TOKENEvery admin route (fails closed when unset)
CRON_SECRETThe two daily crons
CREDENTIAL_SIGNING_SECRETThe paid off-ledger certificate (nothing is issued without it)
ANCHOR_WALLET_SEED, MPT_ANCHOR_ENABLEDOn-ledger Merkle-root anchors
BITHOMP_API_KEYMPT registry holder counts
CDP_API_KEY_ID, CDP_API_KEY_SECRETUSDC-on-Base x402 facilitator
ERROR_WEBHOOK_URL, HEALTHCHECK_PING_URLAlerts and the external dead-man's switch

Operations

docs/AUTONOMY.md is the source of truth for what runs unattended (two Vercel crons, 06:00 and 07:00 UTC), what expires and when, the watchdog, and what to check first after a long absence. Deploys go out on every push to main; redeploy with the Vercel build cache off.

Contact: [email protected]

來源:kreditkarma-backend/README.md,提交 9913ac1

工具

21

issue_score_credential

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.

輸入參數uuidcurrencywallet_address必填

check_xrpl_score

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.

輸入參數wallet_address必填

get_account_credentials

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.

輸入參數issuerwallet_address必填credential_type

get_issuer_credentials

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.

輸入參數issuer_address必填

check_mpt_risk

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.

輸入參數issuance_id必填

search_mpts

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.

輸入參數q必填

get_issuer_mpts

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.

輸入參數issuer_address必填

check_service_health

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.

無需輸入參數。

verify_mpt_registry

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.

無需輸入參數。

check_domain_eligibility

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.

輸入參數domain_id必填wallet_address必填

submit_grant_application

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.

輸入參數amount必填category必填currencydescription必填wallet_address必填

donate_to_community_fund

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.

輸入參數amount必填messagecurrencydonor_wallet

screen_address_ofac

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.

輸入參數address必填

get_monitoring_info

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.

無需輸入參數。

verify_attestation

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.

輸入參數query_id必填

get_lending_exposure

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.

輸入參數borrower必填

get_underwriting_inputs

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).

輸入參數borrower必填

precheck_payment

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).

輸入參數fromamountcurrencydestination必填destination_tag

check_wallet_permissions

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.

輸入參數address必填

prepare_batch_send

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).

輸入參數from必填recipients必填

get_lending_history

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.

輸入參數borrower必填

版本歷史

5
  1. v1.18.0最新Oct 9, 2026
  2. v1.16.0Oct 7, 2026
  3. v1.14.0Oct 6, 2026
  4. v1.13.0Sep 26, 2026
  5. v1.3.0Sep 16, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

    請在儲存庫或註冊中心條目中宣告授權條款。