{"x402Version":2,"name":"XRPLHub — XRPLScore","description":"On-chain creditworthiness scoring for the XRP Ledger. A 300–850 score from 8 signals, full risk reports, and ready-to-sign prebuilt XRPL transactions for 34 actions. Pay per call in RLUSD — no account, no API key, no signup.","provider":{"name":"XRPLHub.io","url":"https://kreditkarma-obi2.vercel.app","contact":"support@xrplhub.io"},"facilitator":"https://xrpl-facilitator-mainnet.t54.ai","network":"xrpl:0","payTo":"rs59g3amo5iT6T64Cg96XXMAWuw3WPQcLF","resources":[{"resource":"https://kreditkarma-obi2.vercel.app/api/x402/score","method":"GET","name":"XRPLScore — wallet creditworthiness score","description":"Get a 300–850 creditworthiness score for one XRPL wallet with an 8-signal breakdown (account age, tx history, financial health, tokens, DEX, AMM, security config, NFTs). Use it before you pay, lend to, or onboard a wallet.","scheme":"exact","asset":"524C555344000000000000000000000000000000","assetSymbol":"RLUSD","issuer":"rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De","network":"xrpl:0","maxTimeoutSeconds":600,"extra":{"sourceTag":804681468,"issuer":"rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De"},"noSignup":true,"x402Version":2,"amount":"0.020000","inputSchema":{"type":"object","properties":{"wallet":{"type":"string","pattern":"^r[1-9A-HJ-NP-Za-km-z]{24,34}$","description":"XRPL classic address (r...) to score.","example":"rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De"}},"required":["wallet"]},"outputSchema":{"type":"object","properties":{"wallet":{"type":"string","description":"The address that was scored."},"score":{"type":"integer","minimum":300,"maximum":850,"description":"XRPLScore, 300–850 (absolute scale)."},"grade":{"type":"string","enum":["Building","Fair","Good","Excellent","Exceptional"]},"percentile":{"type":"number","description":"Peer percentile band, 0–100."},"signals":{"type":"object","description":"The 8 component scores, 0–100 each.","properties":{"accountAge":{"type":"number"},"txActivity":{"type":"number"},"financialHealth":{"type":"number"},"tokenEngagement":{"type":"number"},"dexActivity":{"type":"number"},"ammActivity":{"type":"number"},"securityConfig":{"type":"number"},"nftActivity":{"type":"number"}}},"methodology":{"type":"string"},"disclaimer":{"type":"string","description":"What the number is and is not: informational only, NOT a FICO score / consumer report / NRSRO rating, and not permissible for FCRA- or ECOA-governed decisions. Always present."},"dataCompleteness":{"type":"object","description":"Whether every XRPL input the score depends on was read. `complete` is always true on a 200 — the engine returns 503 (not a score) if any call could not be read, rather than folding a failure into a signal.","properties":{"complete":{"type":"boolean"},"unread":{"type":"array","items":{"type":"string"}},"source":{"type":"string"}}},"computedAt":{"type":"string","format":"date-time"}},"required":["wallet","score","grade","signals","disclaimer","dataCompleteness"]},"outputExample":{"wallet":"rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De","score":721,"grade":"Good","percentile":74,"signals":{"accountAge":88,"txActivity":71,"financialHealth":64,"tokenEngagement":61,"dexActivity":40,"ammActivity":12,"securityConfig":30,"nftActivity":0},"methodology":"XRPLHub XRPLScore v1.1 — 8-signal native on-chain behavioral scoring, absolute scale","disclaimer":"XRPLScore is an informational analytics signal computed only from public XRP Ledger data. It is NOT a FICO score, a consumer credit score, a consumer report, or an NRSRO rating, and must not be used for any purpose governed by the U.S. Fair Credit Reporting Act or the Equal Credit Opportunity Act.","dataCompleteness":{"complete":true,"unread":[],"source":"xrpl-mainnet-jsonrpc (xrplcluster → s1 → s2)"},"computedAt":"2026-09-04T00:00:00.000Z"}},{"resource":"https://kreditkarma-obi2.vercel.app/api/x402/report","method":"GET","name":"Full wallet risk report","description":"Everything the score returns plus machine-readable risk flags, ranked recommendations, and an on-chain snapshot (balance, spendable XRP, trust lines, tx count, DEX/AMM/NFT activity). One RLUSD payment = one report.","scheme":"exact","asset":"524C555344000000000000000000000000000000","assetSymbol":"RLUSD","issuer":"rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De","network":"xrpl:0","maxTimeoutSeconds":600,"extra":{"sourceTag":804681468,"issuer":"rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De"},"noSignup":true,"x402Version":2,"amount":"0.080000","inputSchema":{"type":"object","properties":{"wallet":{"type":"string","pattern":"^r[1-9A-HJ-NP-Za-km-z]{24,34}$","description":"XRPL classic address (r...) to score.","example":"rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De"}},"required":["wallet"]},"outputSchema":{"type":"object","properties":{"wallet":{"type":"string","description":"The address that was scored."},"score":{"type":"integer","minimum":300,"maximum":850,"description":"XRPLScore, 300–850 (absolute scale)."},"grade":{"type":"string","enum":["Building","Fair","Good","Excellent","Exceptional"]},"percentile":{"type":"number","description":"Peer percentile band, 0–100."},"signals":{"type":"object","description":"The 8 component scores, 0–100 each.","properties":{"accountAge":{"type":"number"},"txActivity":{"type":"number"},"financialHealth":{"type":"number"},"tokenEngagement":{"type":"number"},"dexActivity":{"type":"number"},"ammActivity":{"type":"number"},"securityConfig":{"type":"number"},"nftActivity":{"type":"number"}}},"methodology":{"type":"string"},"disclaimer":{"type":"string","description":"What the number is and is not: informational only, NOT a FICO score / consumer report / NRSRO rating, and not permissible for FCRA- or ECOA-governed decisions. Always present."},"dataCompleteness":{"type":"object","description":"Whether every XRPL input the score depends on was read. `complete` is always true on a 200 — the engine returns 503 (not a score) if any call could not be read, rather than folding a failure into a signal.","properties":{"complete":{"type":"boolean"},"unread":{"type":"array","items":{"type":"string"}},"source":{"type":"string"}}},"computedAt":{"type":"string","format":"date-time"},"riskFlags":{"type":"array","items":{"type":"string"},"description":"Machine-readable risk flags."},"recommendations":{"type":"array","items":{"type":"object","properties":{"action":{"type":"string"},"points":{"type":"string"},"priority":{"type":"string","enum":["high","medium","low"]}}}},"snapshot":{"type":"object","properties":{"balanceXRP":{"type":"number"},"spendableXRP":{"type":"number"},"trustLines":{"type":"integer"},"txCount":{"type":"integer"},"hasMultiSig":{"type":"boolean"},"hasOffers":{"type":"boolean"},"hasAMM":{"type":"boolean"}}}},"required":["wallet","score","grade","signals","disclaimer","dataCompleteness"]},"outputExample":{"wallet":"rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De","score":721,"grade":"Good","percentile":74,"signals":{"accountAge":88,"txActivity":71,"financialHealth":64,"tokenEngagement":61,"dexActivity":40,"ammActivity":12,"securityConfig":30,"nftActivity":0},"methodology":"XRPLHub XRPLScore v1.1 — 8-signal native on-chain behavioral scoring, absolute scale","disclaimer":"XRPLScore is an informational analytics signal computed only from public XRP Ledger data. It is NOT a FICO score, a consumer credit score, a consumer report, or an NRSRO rating, and must not be used for any purpose governed by the U.S. Fair Credit Reporting Act or the Equal Credit Opportunity Act.","dataCompleteness":{"complete":true,"unread":[],"source":"xrpl-mainnet-jsonrpc (xrplcluster → s1 → s2)"},"computedAt":"2026-09-04T00:00:00.000Z","riskFlags":[],"recommendations":[{"action":"Add 2–3 trust lines to established issuers","points":"+18","priority":"medium"}],"snapshot":{"balanceXRP":2500.4,"spendableXRP":2480.1,"trustLines":6,"txCount":4200,"hasMultiSig":false,"hasOffers":true,"hasAMM":false}}},{"resource":"https://kreditkarma-obi2.vercel.app/api/x402/tx","method":"GET","name":"Prebuilt XRPL transaction (34 actions)","description":"The signable XRPL transaction JSON for any of 34 actions (CheckCreate, Escrow, TrustSet, NFT, AMM, DEX order, MPT, multisig, DID, credentials, and more), delivered after payment. Priced per action at the storefront price ($15–$80; /api/pricing). Pay USDC on Base or RLUSD on XRPL. You sign with your own wallet. Caution-tier actions need confirmCaution=true. Free preview: MCP preview_xrpl_transaction.","scheme":"exact","asset":"524C555344000000000000000000000000000000","assetSymbol":"RLUSD","issuer":"rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De","network":"xrpl:0","maxTimeoutSeconds":600,"extra":{"sourceTag":804681468,"issuer":"rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De"},"noSignup":true,"x402Version":2,"amount":"20.000000","pricing":{"model":"per-action storefront price (USD = RLUSD = USDC)","amountShownIsFor":"productId=checkcreate","minUsd":15,"maxUsd":80,"table":"https://kreditkarma-obi2.vercel.app/api/pricing"},"cautionTier":"Irreversible actions are refused unpaid (HTTP 409 confirmation_required, not charged) until confirmCaution=true.","freePreview":"MCP tool preview_xrpl_transaction (no signable txjson)","inputSchema":{"type":"object","properties":{"productId":{"type":"string","enum":["multisig","regkey","depositauth","desttag","issuerdecl","issuercfg","tokenfee","trustline","trustsend","rippling","mptissue","mptsend","globalfreeze","freezeline","dexorder","ammwithdraw","smartswap","ammlaunch","ammentry","paychannel","tickets","nftmint","nftburn","nftoffer","checkcreate","checkcash","checkcancel","depositpreauth","escrow","identity","did","compliance","credentialissue","permdomain"],"description":"Which XRPL action to build. Full catalogue + per-action params: /api/mcp list_xrpl_services.","example":"checkcreate"},"account":{"type":"string","pattern":"^r[1-9A-HJ-NP-Za-km-z]{24,34}$","description":"XRPL classic address that will sign the returned transaction.","example":"rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De"},"confirmCaution":{"type":"string","enum":["true"],"description":"Caution-tier actions (multisig lockdown, No Freeze, MPT issuance, …) are refused unpaid with the irreversibility copy until the wallet owner has read it; then repeat with confirmCaution=true."}},"required":["productId","account"],"additionalProperties":{"type":"string","description":"Per-action parameters (destination, amount, issuer, currency, uri, ...). See list_xrpl_services."}},"outputSchema":{"type":"object","properties":{"data":{"type":"object","properties":{"productId":{"type":"string"},"label":{"type":"string"},"tier":{"type":"string","enum":["safe","caution","blocked"]},"txjson":{"type":"object","description":"The unsigned XRPL transaction, ready for the account to sign."},"signWith":{"type":"string"},"instructions":{"type":"string"}}},"x402":{"type":"object","properties":{"success":{"type":"boolean"},"settled":{"type":"boolean"},"transaction":{"type":"string"},"network":{"type":"string"}}}}},"outputExample":{"data":{"productId":"checkcreate","label":"Create Check","tier":"safe","txjson":{"TransactionType":"CheckCreate"},"signWith":"the account's own wallet","instructions":"Sign this in your XRPL wallet."},"x402":{"success":true,"settled":true,"transaction":"F0D0…","network":"xrpl"}}},{"resource":"https://kreditkarma-obi2.vercel.app/api/x402/tx","method":"GET","name":"Signable XRPL transaction (34 actions) — pay in USDC on Base","description":"The signable XRPL transaction JSON for any of 34 actions (CheckCreate, Escrow, TrustSet, NFT, AMM, DEX order, MPT, multisig, DID, credentials, and more), delivered after payment. Priced per action at the storefront price ($15–$80; /api/pricing). Pay USDC on Base or RLUSD on XRPL. You sign with your own wallet. Caution-tier actions need confirmCaution=true. Free preview: MCP preview_xrpl_transaction.","x402Version":1,"scheme":"exact","network":"base","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","assetSymbol":"USDC","payTo":"0xE0Ed7A30589Fec49e98F2085c7162B90FdbB83de","maxTimeoutSeconds":300,"facilitator":"https://api.cdp.coinbase.com/platform/v2/x402","noSignup":true,"amount":"20.000000","pricing":{"model":"per-action storefront price (USD = RLUSD = USDC)","amountShownIsFor":"productId=checkcreate","minUsd":15,"maxUsd":80,"table":"https://kreditkarma-obi2.vercel.app/api/pricing"},"cautionTier":"Irreversible actions are refused unpaid (HTTP 409 confirmation_required, not charged) until confirmCaution=true.","freePreview":"MCP tool preview_xrpl_transaction (no signable txjson)","inputSchema":{"type":"object","properties":{"productId":{"type":"string","enum":["multisig","regkey","depositauth","desttag","issuerdecl","issuercfg","tokenfee","trustline","trustsend","rippling","mptissue","mptsend","globalfreeze","freezeline","dexorder","ammwithdraw","smartswap","ammlaunch","ammentry","paychannel","tickets","nftmint","nftburn","nftoffer","checkcreate","checkcash","checkcancel","depositpreauth","escrow","identity","did","compliance","credentialissue","permdomain"],"description":"Which XRPL action to build. Full catalogue + per-action params: /api/mcp list_xrpl_services.","example":"checkcreate"},"account":{"type":"string","pattern":"^r[1-9A-HJ-NP-Za-km-z]{24,34}$","description":"XRPL classic address that will sign the returned transaction.","example":"rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De"},"confirmCaution":{"type":"string","enum":["true"],"description":"Caution-tier actions (multisig lockdown, No Freeze, MPT issuance, …) are refused unpaid with the irreversibility copy until the wallet owner has read it; then repeat with confirmCaution=true."}},"required":["productId","account"],"additionalProperties":{"type":"string","description":"Per-action parameters (destination, amount, issuer, currency, uri, ...). See list_xrpl_services."}},"outputSchema":{"type":"object","properties":{"data":{"type":"object","properties":{"productId":{"type":"string"},"label":{"type":"string"},"tier":{"type":"string","enum":["safe","caution","blocked"]},"txjson":{"type":"object","description":"The unsigned XRPL transaction, ready for the account to sign."},"signWith":{"type":"string"},"instructions":{"type":"string"}}},"x402":{"type":"object","properties":{"success":{"type":"boolean"},"settled":{"type":"boolean"},"transaction":{"type":"string"},"network":{"type":"string"}}}}}},{"resource":"https://kreditkarma-obi2.vercel.app/api/x402/usdc/mpt/{mptokenIssuanceID}","method":"GET","name":"MPT issuer risk (full)","description":"Full risk view of one XLS-33 Multi-Purpose Token issuance: issuer powers (clawback, freeze, require-auth, non-transferable) plus the issuer's XRPLScore, account age, xrp-ledger.toml-verified domain, and credentials held. Live reads, cross-checked against Bithomp. Not found returns 'unknown', never 'does not exist'. Path segment: the 48-hex MPTokenIssuanceID.","scheme":"exact","asset":"524C555344000000000000000000000000000000","assetSymbol":"RLUSD","issuer":"rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De","network":"xrpl:0","maxTimeoutSeconds":600,"extra":{"sourceTag":804681468,"issuer":"rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De"},"noSignup":true,"x402Version":2,"amount":"0.010000","inputSchema":{"type":"object","properties":{"mptokenIssuanceID":{"type":"string","pattern":"^[0-9A-Fa-f]{48}$","description":"The MPTokenIssuanceID — 48 hex chars (XLS-33 192-bit id). Passed as the last URL path segment.","example":"0641C7D1F9C6BB3B75EA31B353A54E2EFAC423498EF25045"}},"required":["mptokenIssuanceID"]}},{"resource":"https://kreditkarma-obi2.vercel.app/api/x402/screen/ofac","method":"GET","name":"OFAC SDN screening attestation","description":"Compare one XRPL address against a vintage-pinned OFAC SDN snapshot (exact address-string match only). Returns a factual, Merkle-anchored receipt: the list, its published version, the file SHA-256, and whether the address appeared on it. 'No match' = not on that version, NOT a statement that the address is clean or unsanctioned. Attests to process, not ground truth. Not legal/compliance advice; you keep your screening obligations.","scheme":"exact","asset":"524C555344000000000000000000000000000000","assetSymbol":"RLUSD","issuer":"rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De","network":"xrpl:0","maxTimeoutSeconds":600,"extra":{"sourceTag":804681468,"issuer":"rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De"},"noSignup":true,"x402Version":2,"amount":"0.010000","inputSchema":{"type":"object","properties":{"address":{"type":"string","pattern":"^r[1-9A-HJ-NP-Za-km-z]{24,34}$","description":"XRPL classic address (r...) to compare against the OFAC SDN list.","example":"rnXyVQzgxZe7TR1EPzTkGj2jxH4LMJYh66"}},"required":["address"],"description":"?address=<r-address> query parameter."},"outputSchema":{"type":"object","properties":{"attestation":{"type":"object","properties":{"queryId":{"type":"string","description":"UUID. GET /api/attest/verify?queryId= for the Merkle inclusion proof once anchored."},"canonVersion":{"type":"string","enum":["sanctions-screen-v2"]},"engineVersion":{"type":"string","enum":["sanction-screen-v2"],"description":"Immutable per receipt — the exact match algorithm."},"leafHash":{"type":"string","description":"64-hex SHA-256(0x00 || canonical leaf)."},"verify":{"type":"string"}}},"subject":{"type":"string"},"subjectChain":{"type":"string","enum":["xrpl","evm","btc","tron"]},"screenedAt":{"type":"string","format":"date-time"},"method":{"type":"string","enum":["exact-match"]},"ledgerIndex":{"type":"integer","description":"Validated XRPL ledger pinned as a time anchor; 0 if unavailable."},"lists":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","enum":["OFAC-SDN","EU-FSF","UK-SL"]},"vintage":{"type":"string","description":"The list's published version (ISO date) that was screened against."},"sha256":{"type":"string","description":"Hash of the canonical archive of that exact list snapshot — makes the snapshot reproducible."},"chainAddressCount":{"type":"integer","description":"How many addresses this list snapshot names on the subject's chain. 0 is meaningful (e.g. the EU list names no XRP Ledger address)."}}}},"result":{"type":"object","properties":{"listed":{"type":"boolean","description":"true = the address string is on at least one of the named list versions. false = it did not appear. false is NOT a statement that the address is clean, safe, or unsanctioned."},"matches":{"type":"array","items":{"type":"object","properties":{"list":{"type":"string"},"entryId":{"type":"string","description":"The list's own entry id (OFAC SDN uid, EU reference, UK Unique ID)."},"entryName":{"type":"string","description":"The entry's own listed name (the publisher's fact)."},"addressField":{"type":"string","description":"Where the list names the address, e.g. 'Digital Currency Address - XRP', or the free-text element for EU/UK."}}}}},"required":["listed"]},"statement":{"type":"string","description":"The one factual paragraph: compared X against list L at vintage V (names N addresses on this chain), and did / did not appear."},"canonicalLeaf":{"type":"string","description":"The exact JSON that was leaf-hashed."},"retention":{"type":"string","description":"The retention commitment in force at screening time (see /legal/screening)."},"disclaimer":{"type":"string"}},"required":["attestation","subject","screenedAt","method","lists","result","statement","disclaimer"]},"outputExample":{"attestation":{"queryId":"21e9db64-1cec-49e6-9891-3402bb40db5f","canonVersion":"sanctions-screen-v2","engineVersion":"sanction-screen-v2","leafHash":"cd890b5a640e37ae7e00983fd872f43daf7a88b52de3821d5bf1e23cb295c2a5","verify":"https://www.xrplhub.io/api/attest/verify?queryId=21e9db64-1cec-49e6-9891-3402bb40db5f"},"subject":"rnXyVQzgxZe7TR1EPzTkGj2jxH4LMJYh66","subjectChain":"xrpl","screenedAt":"2026-09-07T06:08:41.368Z","method":"exact-match","ledgerIndex":106817057,"lists":[{"name":"OFAC-SDN","vintage":"2026-09-04","sha256":"97d98ef8f8273db9326e3e7beb4163d2d8a171f8a0d90fb628c488b53339d340","chainAddressCount":1}],"result":{"listed":true,"matches":[{"list":"OFAC-SDN","entryId":"33854","entryName":"CHATEX","addressField":"Digital Currency Address - XRP"}]},"statement":"As of 2026-09-07T06:08:41.368Z, XRP Ledger address rnXyVQzgxZe7TR1EPzTkGj2jxH4LMJYh66 was compared against: OFAC-SDN published version 2026-09-04 (file SHA-256 97d98ef8…d340; names 1 XRP Ledger address). It appears on: OFAC-SDN entry 33854 (CHATEX), field 'Digital Currency Address - XRP'.","canonicalLeaf":"{\"queryId\":\"21e9db64-…\",\"subjectAddress\":\"rnXyVQzgxZe7TR1EPzTkGj2jxH4LMJYh66\",\"subjectChain\":\"xrpl\",…}","retention":"retain-10y-no-prune/v1","disclaimer":"This receipt records one factual comparison: the address was checked against the sanctions list versions named above, at the stated time. A \"no match\" means the address did not appear on those list versions — it is not a statement that the address is clean, safe, or unsanctioned. These lists are name/entity-based; address matching covers only the addresses they name. XRPLHub is not a regulated entity, gives no legal or compliance advice, and makes no compliance decision. Using this receipt does not satisfy or reduce your own screening, due-diligence or record-keeping obligations; you remain responsible for your compliance program and for verifying any result. Full terms: https://www.xrplhub.io/legal/screening"},"attestsProcessNotGroundTruth":true,"verify":"https://kreditkarma-obi2.vercel.app/api/attest/verify?queryId={queryId}","terms":"https://kreditkarma-obi2.vercel.app/legal/screening"},{"resource":"https://kreditkarma-obi2.vercel.app/api/x402/lending/exposure","method":"GET","name":"XLS-66 cross-broker lending exposure (full)","description":"A borrower's total XLS-66 lending exposure across ALL loan brokers in one call: outstanding by asset, loan count, broker count, impairments, defaults, plus XRPLHub's XRPLScore. The XRP Ledger has no aggregate borrower-debt object; a broker sees only its own loans. Reflects the validated ledger NOW: defaulted loans zero their own amounts and paid/defaulted loans get deleted, so absence is not proof of no borrowing history. Not underwriting or credit advice.","scheme":"exact","asset":"524C555344000000000000000000000000000000","assetSymbol":"RLUSD","issuer":"rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De","network":"xrpl:0","maxTimeoutSeconds":600,"extra":{"sourceTag":804681468,"issuer":"rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De"},"noSignup":true,"x402Version":2,"amount":"0.010000","inputSchema":{"type":"object","properties":{"borrower":{"type":"string","pattern":"^r[1-9A-HJ-NP-Za-km-z]{24,34}$","description":"XRPL classic address (r...) of the borrower to aggregate lending exposure for.","example":"rEjXbJh2hwn2SVME1EvdCiH6TnU5TEpvf"}},"required":["borrower"],"description":"?borrower=<r-address> query parameter."},"outputSchema":{"type":"object","properties":{"borrower":{"type":"string"},"amendmentActive":{"type":"boolean","description":"false = XLS-66 not yet enabled on mainnet; response still carries the XRPLScore."},"ledgerIndex":{"type":"integer"},"ledgerCloseAt":{"type":"string","format":"date-time","nullable":true},"disposition":{"type":"string","enum":["amendment-not-active","active-exposure","history-only","no-loans-ever"],"description":"no-loans-ever = we have never observed a loan (not proof of none). history-only = loans were observed before but none are on the ledger now."},"exposure":{"type":"object","properties":{"byAsset":{"type":"object","additionalProperties":{"type":"object","properties":{"principalOutstanding":{"type":"string"},"totalValueOutstanding":{"type":"string","description":"principal + scheduled interest + mgmt fee still owed."},"loanCount":{"type":"integer"},"currency":{"type":"string"},"issuer":{"type":"string"},"mptIssuanceId":{"type":"string"}}},"description":"Keyed by asset: 'XRP', '<currency>.<issuer>', or 'MPT:<id>'."},"loanCount":{"type":"integer","description":"Loan objects visible on the ledger now."},"brokerCount":{"type":"integer","description":"distinct loan brokers."}}},"events":{"type":"object","properties":{"defaulted":{"type":"integer"},"impaired":{"type":"integer"},"overdue":{"type":"integer"},"overdueGraceExpired":{"type":"integer","description":"past NextPaymentDueDate + GracePeriod — a broker can default it now."}}},"worstStatus":{"type":"string","enum":["none","current","overdue","overdueGraceExpired","impaired","defaulted","paid"]},"earliestNextPaymentDue":{"type":"string","format":"date-time","nullable":true},"xrplScore":{"type":"integer","nullable":true},"grade":{"type":"string","nullable":true},"observation":{"type":"object","properties":{"everObservedLoans":{"type":"boolean"},"firstObservedAt":{"type":"string","format":"date-time","nullable":true,"description":"when XRPLHub first saw ANY loan for this borrower — history before this is invisible to us."},"totalLoansEverObserved":{"type":"integer"},"currentlyVisible":{"type":"integer"},"vanished":{"type":"integer","description":"loans we observed before that are no longer on the ledger (deleted by borrower or broker)."},"vanishedLastSeenDefaultedOrImpaired":{"type":"integer","description":"of the vanished, the ones last seen in default or impairment."},"note":{"type":"string"}}},"leafHash":{"type":"string","description":"SHA-256(0x00 || canonical leaf). This snapshot is Merkle-anchored on-ledger daily; verify at /api/attest/verify?queryId=."},"disclaimer":{"type":"string"}},"required":["borrower","amendmentActive","disposition","exposure","events","observation","disclaimer"]},"attestsObservedStateNotCompleteHistory":true,"amendmentGated":"LendingProtocol (XLS-66) — returns 503 (error amendment_not_active, not charged) until enabled on mainnet","verify":"https://kreditkarma-obi2.vercel.app/api/attest/verify?queryId={queryId}"},{"resource":"https://kreditkarma-obi2.vercel.app/api/x402/lending/underwrite","method":"GET","name":"XLS-66 underwriting inputs (full bundle)","description":"Every input a LoanBroker needs for an XLS-66 underwriting decision in one call: cross-broker exposure, XRPLScore + grade, OFAC SDN screening with its own receipt, observation history + gaps, and one Merkle-anchored attestation over the whole bundle. FACTS ONLY — no recommended principal, rate, approve/decline, or probability of default. The broker decides. Not lending or underwriting advice.","scheme":"exact","asset":"524C555344000000000000000000000000000000","assetSymbol":"RLUSD","issuer":"rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De","network":"xrpl:0","maxTimeoutSeconds":600,"extra":{"sourceTag":804681468,"issuer":"rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De"},"noSignup":true,"x402Version":2,"amount":"0.050000","inputSchema":{"type":"object","properties":{"borrower":{"type":"string","pattern":"^r[1-9A-HJ-NP-Za-km-z]{24,34}$","description":"the borrower's XRPL address"}},"required":["borrower"]},"factsOnlyNoRecommendation":true,"amendmentGated":"LendingProtocol (XLS-66) — 503 (error amendment_not_active, not charged) until enabled on mainnet","verify":"https://kreditkarma-obi2.vercel.app/api/attest/verify?queryId={queryId}","disclaimer":"These are inputs for your underwriting, not a recommendation. XRPLHub does not recommend a principal, rate, or term, does not estimate probability of default, and does not approve or decline anyone. Every field is an on-ledger fact, XRPLHub's published XRPLScore, or a factual OFAC SDN list comparison. The lending decision, and responsibility for it, is entirely yours. Not lending, credit, or underwriting advice. Exposure reflects the validated ledger now — XLS-66 keeps current exposure only, a defaulted loan zeroes its own amounts, and paid/defaulted loans can be deleted, so absence is not proof of no borrowing history. The OFAC screening is a factual comparison against a named list snapshot at a stated time — a \"no match\" is not a statement that the address is clean or unsanctioned, and XRPLHub does not perform any regulated screening function."},{"resource":"https://kreditkarma-obi2.vercel.app/api/x402/usdc/score","method":"POST","name":"XRPLScore — wallet creditworthiness score (POST body)","description":"Get a 300–850 on-chain creditworthiness score for one XRPL wallet from 8 signals. $0.02 per call in RLUSD, the same price as GET /api/x402/score. POST JSON body {\"wallet\":\"r...\"}. No signup.","scheme":"exact","asset":"524C555344000000000000000000000000000000","assetSymbol":"RLUSD","issuer":"rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De","network":"xrpl:0","maxTimeoutSeconds":600,"extra":{"sourceTag":804681468,"issuer":"rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De"},"noSignup":true,"x402Version":2,"amount":"0.020000","inputSchema":{"type":"object","properties":{"wallet":{"type":"string","pattern":"^r[1-9A-HJ-NP-Za-km-z]{24,34}$","description":"XRPL classic address (r...) to score.","example":"rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De"}},"required":["wallet"],"description":"JSON request body."},"outputSchema":{"type":"object","properties":{"wallet":{"type":"string","description":"The address that was scored."},"score":{"type":"integer","minimum":300,"maximum":850,"description":"XRPLScore, 300–850 (absolute scale)."},"grade":{"type":"string","enum":["Building","Fair","Good","Excellent","Exceptional"]},"percentile":{"type":"number","description":"Peer percentile band, 0–100."},"signals":{"type":"object","description":"The 8 component scores, 0–100 each.","properties":{"accountAge":{"type":"number"},"txActivity":{"type":"number"},"financialHealth":{"type":"number"},"tokenEngagement":{"type":"number"},"dexActivity":{"type":"number"},"ammActivity":{"type":"number"},"securityConfig":{"type":"number"},"nftActivity":{"type":"number"}}},"methodology":{"type":"string"},"disclaimer":{"type":"string","description":"What the number is and is not: informational only, NOT a FICO score / consumer report / NRSRO rating, and not permissible for FCRA- or ECOA-governed decisions. Always present."},"dataCompleteness":{"type":"object","description":"Whether every XRPL input the score depends on was read. `complete` is always true on a 200 — the engine returns 503 (not a score) if any call could not be read, rather than folding a failure into a signal.","properties":{"complete":{"type":"boolean"},"unread":{"type":"array","items":{"type":"string"}},"source":{"type":"string"}}},"computedAt":{"type":"string","format":"date-time"}},"required":["wallet","score","grade","signals","disclaimer","dataCompleteness"]},"outputExample":{"wallet":"rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De","score":721,"grade":"Good","percentile":74,"signals":{"accountAge":88,"txActivity":71,"financialHealth":64,"tokenEngagement":61,"dexActivity":40,"ammActivity":12,"securityConfig":30,"nftActivity":0},"methodology":"XRPLHub XRPLScore v1.1 — 8-signal native on-chain behavioral scoring, absolute scale","disclaimer":"XRPLScore is an informational analytics signal computed only from public XRP Ledger data. It is NOT a FICO score, a consumer credit score, a consumer report, or an NRSRO rating, and must not be used for any purpose governed by the U.S. Fair Credit Reporting Act or the Equal Credit Opportunity Act.","dataCompleteness":{"complete":true,"unread":[],"source":"xrpl-mainnet-jsonrpc (xrplcluster → s1 → s2)"},"computedAt":"2026-09-04T00:00:00.000Z"}},{"resource":"https://kreditkarma-obi2.vercel.app/api/x402/usdc/score","method":"POST","name":"XRPLScore — pay per call in USDC on Base","description":"Get a 300–850 on-chain creditworthiness score for one XRPL wallet from 8 signals (account age, tx history, financial health, tokens, DEX, AMM, security, NFTs). $0.02 per call, payable in USDC on Base or RLUSD on XRPL — the same price as GET /api/x402/score. POST JSON body {\"wallet\":\"r...\"}.","x402Version":1,"scheme":"exact","network":"base","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","assetSymbol":"USDC","payTo":"0xE0Ed7A30589Fec49e98F2085c7162B90FdbB83de","maxTimeoutSeconds":300,"facilitator":"https://api.cdp.coinbase.com/platform/v2/x402","noSignup":true,"amount":"0.020000","alsoPayableOnXrpl":"this same URL accepts RLUSD on the XRP Ledger (see the xrpl:0 entry); GET /api/x402/score is the same product at the same price","inputSchema":{"type":"object","properties":{"wallet":{"type":"string","pattern":"^r[1-9A-HJ-NP-Za-km-z]{24,34}$","description":"XRPL classic address (r...) to score.","example":"rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De"}},"required":["wallet"],"description":"JSON request body."},"outputSchema":{"type":"object","properties":{"wallet":{"type":"string","description":"The address that was scored."},"score":{"type":"integer","minimum":300,"maximum":850,"description":"XRPLScore, 300–850 (absolute scale)."},"grade":{"type":"string","enum":["Building","Fair","Good","Excellent","Exceptional"]},"percentile":{"type":"number","description":"Peer percentile band, 0–100."},"signals":{"type":"object","description":"The 8 component scores, 0–100 each.","properties":{"accountAge":{"type":"number"},"txActivity":{"type":"number"},"financialHealth":{"type":"number"},"tokenEngagement":{"type":"number"},"dexActivity":{"type":"number"},"ammActivity":{"type":"number"},"securityConfig":{"type":"number"},"nftActivity":{"type":"number"}}},"methodology":{"type":"string"},"disclaimer":{"type":"string","description":"What the number is and is not: informational only, NOT a FICO score / consumer report / NRSRO rating, and not permissible for FCRA- or ECOA-governed decisions. Always present."},"dataCompleteness":{"type":"object","description":"Whether every XRPL input the score depends on was read. `complete` is always true on a 200 — the engine returns 503 (not a score) if any call could not be read, rather than folding a failure into a signal.","properties":{"complete":{"type":"boolean"},"unread":{"type":"array","items":{"type":"string"}},"source":{"type":"string"}}},"computedAt":{"type":"string","format":"date-time"}},"required":["wallet","score","grade","signals","disclaimer","dataCompleteness"]},"outputExample":{"wallet":"rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De","score":721,"grade":"Good","percentile":74,"signals":{"accountAge":88,"txActivity":71,"financialHealth":64,"tokenEngagement":61,"dexActivity":40,"ammActivity":12,"securityConfig":30,"nftActivity":0},"methodology":"XRPLHub XRPLScore v1.1 — 8-signal native on-chain behavioral scoring, absolute scale","disclaimer":"XRPLScore is an informational analytics signal computed only from public XRP Ledger data. It is NOT a FICO score, a consumer credit score, a consumer report, or an NRSRO rating, and must not be used for any purpose governed by the U.S. Fair Credit Reporting Act or the Equal Credit Opportunity Act.","dataCompleteness":{"complete":true,"unread":[],"source":"xrpl-mainnet-jsonrpc (xrplcluster → s1 → s2)"},"computedAt":"2026-09-04T00:00:00.000Z"}},{"resource":"https://kreditkarma-obi2.vercel.app/api/x402/usdc/mpt/{mptokenIssuanceID}","method":"GET","name":"MPT issuer risk (full) — pay per call in USDC on Base","description":"Full risk view of one XLS-33 Multi-Purpose Token issuance: issuer powers (clawback, freeze, require-auth, non-transferable) plus the issuer's XRPLScore, account age, xrp-ledger.toml-verified domain, and credentials held. Live reads, cross-checked against Bithomp. Not found returns 'unknown', never 'does not exist'. $0.01 USDC on Base. Path segment: the 48-hex MPTokenIssuanceID.","x402Version":1,"scheme":"exact","network":"base","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","assetSymbol":"USDC","payTo":"0xE0Ed7A30589Fec49e98F2085c7162B90FdbB83de","maxTimeoutSeconds":300,"facilitator":"https://api.cdp.coinbase.com/platform/v2/x402","noSignup":true,"amount":"0.010000","inputSchema":{"type":"object","properties":{"mptokenIssuanceID":{"type":"string","pattern":"^[0-9A-Fa-f]{48}$","description":"The MPTokenIssuanceID — 48 hex chars (XLS-33 192-bit id). Passed as the last URL path segment.","example":"0641C7D1F9C6BB3B75EA31B353A54E2EFAC423498EF25045"}},"required":["mptokenIssuanceID"]},"outputSchema":{"type":"object","properties":{"found":{"type":"boolean"},"source":{"type":"object"},"issuer":{"type":"string"},"issuerPowers":{"type":"object"},"issuerRisk":{"type":"object"},"related":{"type":"array"}}}},{"resource":"https://kreditkarma-obi2.vercel.app/api/x402/screen/ofac","method":"GET","name":"OFAC SDN screening attestation — pay per call in USDC on Base","description":"Compare one XRPL address against a vintage-pinned OFAC SDN snapshot (exact address-string match only). Returns a factual, Merkle-anchored receipt: the list, its published version, the file SHA-256, and whether the address appeared on it. 'No match' = not on that version, NOT a statement that the address is clean or unsanctioned. Attests to process, not ground truth. Not legal/compliance advice; you keep your screening obligations.","x402Version":1,"scheme":"exact","network":"base","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","assetSymbol":"USDC","payTo":"0xE0Ed7A30589Fec49e98F2085c7162B90FdbB83de","maxTimeoutSeconds":300,"facilitator":"https://api.cdp.coinbase.com/platform/v2/x402","noSignup":true,"amount":"0.010000","inputSchema":{"type":"object","properties":{"address":{"type":"string","pattern":"^r[1-9A-HJ-NP-Za-km-z]{24,34}$","description":"XRPL classic address (r...) to compare against the OFAC SDN list.","example":"rnXyVQzgxZe7TR1EPzTkGj2jxH4LMJYh66"}},"required":["address"],"description":"?address=<r-address> query parameter."},"outputSchema":{"type":"object","properties":{"attestation":{"type":"object","properties":{"queryId":{"type":"string","description":"UUID. GET /api/attest/verify?queryId= for the Merkle inclusion proof once anchored."},"canonVersion":{"type":"string","enum":["sanctions-screen-v2"]},"engineVersion":{"type":"string","enum":["sanction-screen-v2"],"description":"Immutable per receipt — the exact match algorithm."},"leafHash":{"type":"string","description":"64-hex SHA-256(0x00 || canonical leaf)."},"verify":{"type":"string"}}},"subject":{"type":"string"},"subjectChain":{"type":"string","enum":["xrpl","evm","btc","tron"]},"screenedAt":{"type":"string","format":"date-time"},"method":{"type":"string","enum":["exact-match"]},"ledgerIndex":{"type":"integer","description":"Validated XRPL ledger pinned as a time anchor; 0 if unavailable."},"lists":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","enum":["OFAC-SDN","EU-FSF","UK-SL"]},"vintage":{"type":"string","description":"The list's published version (ISO date) that was screened against."},"sha256":{"type":"string","description":"Hash of the canonical archive of that exact list snapshot — makes the snapshot reproducible."},"chainAddressCount":{"type":"integer","description":"How many addresses this list snapshot names on the subject's chain. 0 is meaningful (e.g. the EU list names no XRP Ledger address)."}}}},"result":{"type":"object","properties":{"listed":{"type":"boolean","description":"true = the address string is on at least one of the named list versions. false = it did not appear. false is NOT a statement that the address is clean, safe, or unsanctioned."},"matches":{"type":"array","items":{"type":"object","properties":{"list":{"type":"string"},"entryId":{"type":"string","description":"The list's own entry id (OFAC SDN uid, EU reference, UK Unique ID)."},"entryName":{"type":"string","description":"The entry's own listed name (the publisher's fact)."},"addressField":{"type":"string","description":"Where the list names the address, e.g. 'Digital Currency Address - XRP', or the free-text element for EU/UK."}}}}},"required":["listed"]},"statement":{"type":"string","description":"The one factual paragraph: compared X against list L at vintage V (names N addresses on this chain), and did / did not appear."},"canonicalLeaf":{"type":"string","description":"The exact JSON that was leaf-hashed."},"retention":{"type":"string","description":"The retention commitment in force at screening time (see /legal/screening)."},"disclaimer":{"type":"string"}},"required":["attestation","subject","screenedAt","method","lists","result","statement","disclaimer"]},"outputExample":{"attestation":{"queryId":"21e9db64-1cec-49e6-9891-3402bb40db5f","canonVersion":"sanctions-screen-v2","engineVersion":"sanction-screen-v2","leafHash":"cd890b5a640e37ae7e00983fd872f43daf7a88b52de3821d5bf1e23cb295c2a5","verify":"https://www.xrplhub.io/api/attest/verify?queryId=21e9db64-1cec-49e6-9891-3402bb40db5f"},"subject":"rnXyVQzgxZe7TR1EPzTkGj2jxH4LMJYh66","subjectChain":"xrpl","screenedAt":"2026-09-07T06:08:41.368Z","method":"exact-match","ledgerIndex":106817057,"lists":[{"name":"OFAC-SDN","vintage":"2026-09-04","sha256":"97d98ef8f8273db9326e3e7beb4163d2d8a171f8a0d90fb628c488b53339d340","chainAddressCount":1}],"result":{"listed":true,"matches":[{"list":"OFAC-SDN","entryId":"33854","entryName":"CHATEX","addressField":"Digital Currency Address - XRP"}]},"statement":"As of 2026-09-07T06:08:41.368Z, XRP Ledger address rnXyVQzgxZe7TR1EPzTkGj2jxH4LMJYh66 was compared against: OFAC-SDN published version 2026-09-04 (file SHA-256 97d98ef8…d340; names 1 XRP Ledger address). It appears on: OFAC-SDN entry 33854 (CHATEX), field 'Digital Currency Address - XRP'.","canonicalLeaf":"{\"queryId\":\"21e9db64-…\",\"subjectAddress\":\"rnXyVQzgxZe7TR1EPzTkGj2jxH4LMJYh66\",\"subjectChain\":\"xrpl\",…}","retention":"retain-10y-no-prune/v1","disclaimer":"This receipt records one factual comparison: the address was checked against the sanctions list versions named above, at the stated time. A \"no match\" means the address did not appear on those list versions — it is not a statement that the address is clean, safe, or unsanctioned. These lists are name/entity-based; address matching covers only the addresses they name. XRPLHub is not a regulated entity, gives no legal or compliance advice, and makes no compliance decision. Using this receipt does not satisfy or reduce your own screening, due-diligence or record-keeping obligations; you remain responsible for your compliance program and for verifying any result. Full terms: https://www.xrplhub.io/legal/screening"},"attestsProcessNotGroundTruth":true,"verify":"https://kreditkarma-obi2.vercel.app/api/attest/verify?queryId={queryId}","terms":"https://kreditkarma-obi2.vercel.app/legal/screening"},{"resource":"https://kreditkarma-obi2.vercel.app/api/x402/lending/exposure","method":"GET","name":"XLS-66 cross-broker lending exposure (full) — pay per call in USDC on Base","description":"A borrower's total XLS-66 lending exposure across ALL loan brokers in one call: outstanding by asset, loan count, broker count, impairments, defaults, plus XRPLHub's XRPLScore. The XRP Ledger has no aggregate borrower-debt object; a broker sees only its own loans. Reflects the validated ledger NOW: defaulted loans zero their own amounts and paid/defaulted loans get deleted, so absence is not proof of no borrowing history. Not underwriting or credit advice.","x402Version":1,"scheme":"exact","network":"base","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","assetSymbol":"USDC","payTo":"0xE0Ed7A30589Fec49e98F2085c7162B90FdbB83de","maxTimeoutSeconds":300,"facilitator":"https://api.cdp.coinbase.com/platform/v2/x402","noSignup":true,"amount":"0.010000","inputSchema":{"type":"object","properties":{"borrower":{"type":"string","pattern":"^r[1-9A-HJ-NP-Za-km-z]{24,34}$","description":"XRPL classic address (r...) of the borrower to aggregate lending exposure for.","example":"rEjXbJh2hwn2SVME1EvdCiH6TnU5TEpvf"}},"required":["borrower"],"description":"?borrower=<r-address> query parameter."},"outputSchema":{"type":"object","properties":{"borrower":{"type":"string"},"amendmentActive":{"type":"boolean","description":"false = XLS-66 not yet enabled on mainnet; response still carries the XRPLScore."},"ledgerIndex":{"type":"integer"},"ledgerCloseAt":{"type":"string","format":"date-time","nullable":true},"disposition":{"type":"string","enum":["amendment-not-active","active-exposure","history-only","no-loans-ever"],"description":"no-loans-ever = we have never observed a loan (not proof of none). history-only = loans were observed before but none are on the ledger now."},"exposure":{"type":"object","properties":{"byAsset":{"type":"object","additionalProperties":{"type":"object","properties":{"principalOutstanding":{"type":"string"},"totalValueOutstanding":{"type":"string","description":"principal + scheduled interest + mgmt fee still owed."},"loanCount":{"type":"integer"},"currency":{"type":"string"},"issuer":{"type":"string"},"mptIssuanceId":{"type":"string"}}},"description":"Keyed by asset: 'XRP', '<currency>.<issuer>', or 'MPT:<id>'."},"loanCount":{"type":"integer","description":"Loan objects visible on the ledger now."},"brokerCount":{"type":"integer","description":"distinct loan brokers."}}},"events":{"type":"object","properties":{"defaulted":{"type":"integer"},"impaired":{"type":"integer"},"overdue":{"type":"integer"},"overdueGraceExpired":{"type":"integer","description":"past NextPaymentDueDate + GracePeriod — a broker can default it now."}}},"worstStatus":{"type":"string","enum":["none","current","overdue","overdueGraceExpired","impaired","defaulted","paid"]},"earliestNextPaymentDue":{"type":"string","format":"date-time","nullable":true},"xrplScore":{"type":"integer","nullable":true},"grade":{"type":"string","nullable":true},"observation":{"type":"object","properties":{"everObservedLoans":{"type":"boolean"},"firstObservedAt":{"type":"string","format":"date-time","nullable":true,"description":"when XRPLHub first saw ANY loan for this borrower — history before this is invisible to us."},"totalLoansEverObserved":{"type":"integer"},"currentlyVisible":{"type":"integer"},"vanished":{"type":"integer","description":"loans we observed before that are no longer on the ledger (deleted by borrower or broker)."},"vanishedLastSeenDefaultedOrImpaired":{"type":"integer","description":"of the vanished, the ones last seen in default or impairment."},"note":{"type":"string"}}},"leafHash":{"type":"string","description":"SHA-256(0x00 || canonical leaf). This snapshot is Merkle-anchored on-ledger daily; verify at /api/attest/verify?queryId=."},"disclaimer":{"type":"string"}},"required":["borrower","amendmentActive","disposition","exposure","events","observation","disclaimer"]},"attestsObservedStateNotCompleteHistory":true,"amendmentGated":"LendingProtocol (XLS-66) — returns 503 until enabled on mainnet, then serves with no redeploy","verify":"https://kreditkarma-obi2.vercel.app/api/attest/verify?queryId={queryId}"},{"resource":"https://kreditkarma-obi2.vercel.app/api/x402/lending/underwrite","method":"GET","name":"XLS-66 underwriting inputs — full bundle, pay per call in USDC on Base","description":"Every input a LoanBroker needs for an XLS-66 underwriting decision in one call: cross-broker exposure, XRPLScore + grade, OFAC SDN screening with its own receipt, observation history + gaps, and one Merkle-anchored attestation over the whole bundle. FACTS ONLY — no recommended principal, rate, approve/decline, or probability of default. The broker decides. Not lending or underwriting advice.","x402Version":1,"scheme":"exact","network":"base","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","assetSymbol":"USDC","payTo":"0xE0Ed7A30589Fec49e98F2085c7162B90FdbB83de","maxTimeoutSeconds":300,"facilitator":"https://api.cdp.coinbase.com/platform/v2/x402","noSignup":true,"amount":"0.050000","inputSchema":{"type":"object","properties":{"borrower":{"type":"string","pattern":"^r[1-9A-HJ-NP-Za-km-z]{24,34}$","description":"the borrower's XRPL address"}},"required":["borrower"]},"factsOnlyNoRecommendation":true,"amendmentGated":"LendingProtocol (XLS-66) — 503 (with the live XRPLScore + OFAC result) until enabled on mainnet","verify":"https://kreditkarma-obi2.vercel.app/api/attest/verify?queryId={queryId}","disclaimer":"These are inputs for your underwriting, not a recommendation. XRPLHub does not recommend a principal, rate, or term, does not estimate probability of default, and does not approve or decline anyone. Every field is an on-ledger fact, XRPLHub's published XRPLScore, or a factual OFAC SDN list comparison. The lending decision, and responsibility for it, is entirely yours. Not lending, credit, or underwriting advice. Exposure reflects the validated ledger now — XLS-66 keeps current exposure only, a defaulted loan zeroes its own amounts, and paid/defaulted loans can be deleted, so absence is not proof of no borrowing history. The OFAC screening is a factual comparison against a named list snapshot at a stated time — a \"no match\" is not a statement that the address is clean or unsanctioned, and XRPLHub does not perform any regulated screening function."},{"resource":"https://kreditkarma-obi2.vercel.app/api/checkout/usdc/starter","method":"GET","name":"Starter plan — pay in USDC on Base","description":"Buy the Starter XRPLHub API plan (10,000 scored XRPL wallet-risk calls/month, 60 req/min) with USDC on Base. One signed EIP-3009 authorization — no gas, no separate on-chain tx from you — settles immediately and returns a live API key in the same response. No signup, no invoice, no polling.","x402Version":1,"scheme":"exact","network":"base","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","assetSymbol":"USDC","payTo":"0xE0Ed7A30589Fec49e98F2085c7162B90FdbB83de","maxTimeoutSeconds":300,"facilitator":"https://api.cdp.coinbase.com/platform/v2/x402","noSignup":true,"amount":"29.000000","inputSchema":{"type":"object","properties":{},"required":[],"description":"No parameters — the plan is fixed by the URL path."},"outputSchema":{"type":"object","properties":{"status":{"type":"string","enum":["paid"],"description":"Always 'paid' — this response is only returned after the CDP facilitator settles the payment."},"plan":{"type":"string","enum":["starter","growth","scale"],"description":"The plan that was purchased."},"currency":{"type":"string","enum":["USDC"]},"network":{"type":"string","enum":["base"]},"invoiceId":{"type":"string","description":"Internal purchase record id."},"key":{"type":"string","description":"The live XRPLHub API key (xrs_live_...). Shown exactly once in this response — store it immediately, it cannot be retrieved again."},"expiresAt":{"type":"string","format":"date-time","description":"The key stops working at this time (30 days). Purchase again to continue — there is no auto-renew (XRPL/Base rails, no card on file)."},"termDays":{"type":"integer","description":"Days the key is valid from purchase (30)."},"note":{"type":"string"}},"required":["status","plan","currency","network","key","expiresAt"]},"outputExample":{"status":"paid","plan":"starter","currency":"USDC","network":"base","invoiceId":"clx0000000000000000000000","key":"xrs_live_ExampleKeyDoNotUseXXXXXXXXXXXXXXXX","expiresAt":"2026-10-06T00:00:00.000Z","termDays":30,"note":"Store this key now — it cannot be shown again. It works for 30 days; buy another to continue."}},{"resource":"https://kreditkarma-obi2.vercel.app/api/checkout/usdc/growth","method":"GET","name":"Growth plan — pay in USDC on Base","description":"Buy the Growth XRPLHub API plan (100,000 scored XRPL wallet-risk calls/month, 300 req/min) with USDC on Base. One signed EIP-3009 authorization — no gas, no separate on-chain tx from you — settles immediately and returns a live API key in the same response. No signup, no invoice, no polling.","x402Version":1,"scheme":"exact","network":"base","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","assetSymbol":"USDC","payTo":"0xE0Ed7A30589Fec49e98F2085c7162B90FdbB83de","maxTimeoutSeconds":300,"facilitator":"https://api.cdp.coinbase.com/platform/v2/x402","noSignup":true,"amount":"149.000000","inputSchema":{"type":"object","properties":{},"required":[],"description":"No parameters — the plan is fixed by the URL path."},"outputSchema":{"type":"object","properties":{"status":{"type":"string","enum":["paid"],"description":"Always 'paid' — this response is only returned after the CDP facilitator settles the payment."},"plan":{"type":"string","enum":["starter","growth","scale"],"description":"The plan that was purchased."},"currency":{"type":"string","enum":["USDC"]},"network":{"type":"string","enum":["base"]},"invoiceId":{"type":"string","description":"Internal purchase record id."},"key":{"type":"string","description":"The live XRPLHub API key (xrs_live_...). Shown exactly once in this response — store it immediately, it cannot be retrieved again."},"expiresAt":{"type":"string","format":"date-time","description":"The key stops working at this time (30 days). Purchase again to continue — there is no auto-renew (XRPL/Base rails, no card on file)."},"termDays":{"type":"integer","description":"Days the key is valid from purchase (30)."},"note":{"type":"string"}},"required":["status","plan","currency","network","key","expiresAt"]},"outputExample":{"status":"paid","plan":"growth","currency":"USDC","network":"base","invoiceId":"clx0000000000000000000000","key":"xrs_live_ExampleKeyDoNotUseXXXXXXXXXXXXXXXX","expiresAt":"2026-10-06T00:00:00.000Z","termDays":30,"note":"Store this key now — it cannot be shown again. It works for 30 days; buy another to continue."}},{"resource":"https://kreditkarma-obi2.vercel.app/api/checkout/usdc/scale","method":"GET","name":"Scale plan — pay in USDC on Base","description":"Buy the Scale XRPLHub API plan (1,000,000 scored XRPL wallet-risk calls/month, 1000 req/min) with USDC on Base. One signed EIP-3009 authorization — no gas, no separate on-chain tx from you — settles immediately and returns a live API key in the same response. No signup, no invoice, no polling.","x402Version":1,"scheme":"exact","network":"base","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","assetSymbol":"USDC","payTo":"0xE0Ed7A30589Fec49e98F2085c7162B90FdbB83de","maxTimeoutSeconds":300,"facilitator":"https://api.cdp.coinbase.com/platform/v2/x402","noSignup":true,"amount":"499.000000","inputSchema":{"type":"object","properties":{},"required":[],"description":"No parameters — the plan is fixed by the URL path."},"outputSchema":{"type":"object","properties":{"status":{"type":"string","enum":["paid"],"description":"Always 'paid' — this response is only returned after the CDP facilitator settles the payment."},"plan":{"type":"string","enum":["starter","growth","scale"],"description":"The plan that was purchased."},"currency":{"type":"string","enum":["USDC"]},"network":{"type":"string","enum":["base"]},"invoiceId":{"type":"string","description":"Internal purchase record id."},"key":{"type":"string","description":"The live XRPLHub API key (xrs_live_...). Shown exactly once in this response — store it immediately, it cannot be retrieved again."},"expiresAt":{"type":"string","format":"date-time","description":"The key stops working at this time (30 days). Purchase again to continue — there is no auto-renew (XRPL/Base rails, no card on file)."},"termDays":{"type":"integer","description":"Days the key is valid from purchase (30)."},"note":{"type":"string"}},"required":["status","plan","currency","network","key","expiresAt"]},"outputExample":{"status":"paid","plan":"scale","currency":"USDC","network":"base","invoiceId":"clx0000000000000000000000","key":"xrs_live_ExampleKeyDoNotUseXXXXXXXXXXXXXXXX","expiresAt":"2026-10-06T00:00:00.000Z","termDays":30,"note":"Store this key now — it cannot be shown again. It works for 30 days; buy another to continue."}}],"links":{"mcp":"https://kreditkarma-obi2.vercel.app/api/mcp","openapi":"https://kreditkarma-obi2.vercel.app/openapi.json","llms":"https://kreditkarma-obi2.vercel.app/llms.txt","pricing":"https://kreditkarma-obi2.vercel.app/pricing","freeScore":"https://kreditkarma-obi2.vercel.app/api/score/{wallet}","freeCredentialsAccount":"https://kreditkarma-obi2.vercel.app/api/credentials/account?address={wallet}","freeCredentialsIssuer":"https://kreditkarma-obi2.vercel.app/api/credentials/issuer?address={issuer}","freeDomainsEligible":"https://kreditkarma-obi2.vercel.app/api/domains/eligible?address={wallet}&domain={domainId}","freeMptRisk":"https://kreditkarma-obi2.vercel.app/api/mpt/{mptokenIssuanceID}","health":"https://kreditkarma-obi2.vercel.app/api/health","freeMptSearch":"https://kreditkarma-obi2.vercel.app/api/mpt/search?q={query}","freeMptIssuer":"https://kreditkarma-obi2.vercel.app/api/mpt/issuer?address={issuer}","freeMptAnchor":"https://kreditkarma-obi2.vercel.app/api/mpt/anchor","ofacScreenWithApiKey":"https://kreditkarma-obi2.vercel.app/api/screen/ofac?address={wallet}","screeningVerify":"https://kreditkarma-obi2.vercel.app/api/attest/verify?queryId={queryId}","screeningSpec":"https://kreditkarma-obi2.vercel.app/api/attest/anchor","screeningTerms":"https://kreditkarma-obi2.vercel.app/legal/screening","lendingExposureAggregateWithApiKey":"https://kreditkarma-obi2.vercel.app/api/lending/exposure?borrower={wallet}","lendingHistoryWithApiKey":"https://kreditkarma-obi2.vercel.app/api/lending/history?borrower={wallet}","lendingAttestationVerify":"https://kreditkarma-obi2.vercel.app/api/attest/verify?queryId={queryId}","monitoringInfo":"https://kreditkarma-obi2.vercel.app/api/monitor","monitoringSubscribeWithApiKey":"https://kreditkarma-obi2.vercel.app/api/monitor/subscribe","monitoringHistoryWithApiKey":"https://kreditkarma-obi2.vercel.app/api/monitor/history?subject={wallet}","monitoringEventsWithApiKey":"https://kreditkarma-obi2.vercel.app/api/monitor/events"},"errorCodes":{"payment_required":"No PAYMENT-SIGNATURE header — this is the 402 challenge.","bad_request":"Missing or invalid request parameters (see the message).","invalid_payment_payload":"PAYMENT-SIGNATURE could not be decoded, wrong x402Version, or missing `accepted`.","invoice_binding_missing":"The payment payload has no accepted.extra.invoiceId to bind the payment to.","payment_verification_failed":"The facilitator rejected the payment at /verify. You were NOT charged. See `facilitator`.","handler_failed":"The paid work failed AFTER verification but BEFORE settlement. You were NOT charged. Retry with the same PAYMENT-SIGNATURE within maxTimeoutSeconds, or fetch a new challenge.","account_not_found":"The wallet is not an activated account on XRPL mainnet. You were NOT charged.","xrpl_unavailable":"One or more XRPL calls could not be read (rate-limit / timeout / upstream error). No result was produced and you were NOT charged. Retry shortly — see `message` for which calls failed.","confirmation_required":"This service is caution-tier: it changes account security or permissions and can be hard or impossible to undo. You were NOT charged. Show `details` (what is irreversible) to the wallet owner and, once they have confirmed, repeat the request with confirmCaution=true.","amendment_not_active":"The XRPL amendment this data depends on (XLS-66 LendingProtocol) is not enabled on mainnet yet. You were NOT charged; any facts that are available are in `details`. The route starts serving on activation with no redeploy.","settlement_failed":"The result was computed and is returned, but on-ledger settlement FAILED (after one inline retry): no payment was collected and none will be retried automatically. The response says x402.success:false and x402.settled:false. You were NOT charged.","idempotent_replay":"This Idempotency-Key (or invoiceId) was already processed — the original response is returned unchanged.","request_in_progress":"A request with this Idempotency-Key (or invoiceId) is still being processed. Retry shortly.","retired":"This endpoint is retired. Use the endpoint named in `useInstead`."},"guarantees":{"settlement":"On /api/x402/{score,report,tx} and on the XRPL rail of the dual-rail routes (mpt, screen/ofac, lending/exposure, lending/underwrite): the on-ledger payment settles ONLY after the paid work returns success. A handler failure returns error:handler_failed and does NOT charge you — retry with the same PAYMENT-SIGNATURE within maxTimeoutSeconds.","idempotency":"Send an Idempotency-Key header (or rely on the payment's invoiceId). A retried request replays the original response — you can never pay twice."}}