The REST API and the MCP server both call the exact same deterministic core (orai/service.py) — the number never disagrees with itself depending on how you asked for it. No API key required today; this is read-only, public ledger data.
Base URL: https://vaultscore.io/api — everything below is relative to that.
Computes (or returns a cached) VaultScore for a real XRPL mainnet address. Add ?refresh=true to bypass the cache and recompute from live ledger data.
$ curl https://vaultscore.io/api/score/rrrrrrrrrrrrrrrrrrrrrhoLvTp { "address": "rrrrrrrrrrrrrrrrrrrrrhoLvTp", "score": 614, "scale": "300-850 (THIN_FILE)", "thin_file": true, "reason_codes": [ { "factor": "repayment_history", "weight": 0.35, "subscore": 0.5, "direction": "negative", "detail": "no repayment history on record" } ], "cached": false }
Opt any address into monthly re-scoring. No accounts, no API keys — the address is the identity, same as the rest of VaultScore.
Starts tracking. Safe to call more than once — returns the existing record instead of resetting the anniversary.
{
"tracked": true,
"first_tracked_at": "2026-09-10T02:00:00Z",
"next_check_due": "2026-10-10T02:00:00Z",
"last_checked_at": "2026-09-10T02:00:00Z"
}
Current tracking status for an address (whether it's tracked, and its schedule).
Every score snapshot recorded so far — the initial one plus one per monthly check — for plotting a trend.
{
"address": "rnNq...",
"history": [
{ "score": 614, "scale": "300-850 (THIN_FILE)", "thin_file": true, "checked_at": "2026-09-10T02:00:00Z" },
{ "score": 629, "scale": "300-850 (THIN_FILE)", "thin_file": true, "checked_at": "2026-10-10T02:00:00Z" }
]
}
VaultScore's scoring core also ships as an MCP tool — any MCP-compatible client (Claude Desktop, Claude Code, another agent framework) can call it directly, no web UI involved. This is what actually delivers "AI utility" as a callable capability, not just AI branding on a website.
# Add VaultScore as an MCP tool source, then call: score_xrpl_wallet(address="rrrrrrrrrrrrrrrrrrrrrhoLvTp") # Returns the same shape as the REST endpoint: { "score": 614, "scale": "300-850 (THIN_FILE)", "thin_file": true, "reason_codes": [...] }
Run it locally over stdio for testing, or as a standalone HTTP server for deployment — see mcp_server/server.py in the repo.
| Status | Meaning |
|---|---|
| 404 | Address has never been funded on XRPL mainnet. |
| 502 | The public XRPL node returned an error — safe to retry. |
| 503 | Tracking isn't configured on this deployment (no Supabase connection). |