XRPL-Utilities
XR-Trust

XR-Trust

The permissioned XRPL directory

A directory of every permissioned domain on XRPL, the credentials each one accepts, the issuers backing those credentials, and any identity the owner has published. Updates live. No scoring. No editorial filter. No endorsement.

Updates live as the network changes · Refreshes every 5 minutes · No human curation
Domains tracked
Credential issuers
addresses issuing in-use credentials

Live directory

Loading directory…

Free from this page. Agents pay $0.10 per query over the x402 API at trust.xrpl-utilities.io. The directory is materialized by a background indexer that re-walks the ledger every 6 hours; reads are instant.

For developers & AI agents

Pay $0.10 per query, no API key

XR-Trust implements x402 v2 with the exact scheme on XRPL mainnet. Verification and settlement are delegated to the t54 XRPL facilitator.

  1. 1. POST /scan returns 402 Payment Required with the XRP option (RLUSD coming in a follow-up).
  2. 2. Sign an XRPL Payment matching the requirement, base64-JSON-encode it, send as PAYMENT-SIGNATURE.
  3. 3. Server verifies, looks up the domain or owner, then settles. Returns 200 with the JSON and a PAYMENT-RESPONSE header.

Or skip the integration: call xrpl_trust_list_domains, xrpl_trust_get_domain, xrpl_trust_credential_issuers, or xrpl_trust_recent_events from any MCP client (Claude Desktop etc.) via @xrpl-utilities/mcp or the hosted endpoint at mcp.xrpl-utilities.io/mcp. Same x402 model, just wrapped as MCP tools.

# pip install x402-xrpl
from x402_xrpl import X402RequestsSession
from xrpl.wallet import Wallet

session = X402RequestsSession(
    wallet=Wallet.from_seed(seed),
    rpc_url="https://xrplcluster.com",
    payment_requirements_selector="XRP",
)

# look up a single domain by its 64-hex LedgerIndex
record = session.post(
    "https://trust.xrpl-utilities.io/scan",
    json={"domain_id": "AB12…"},
).json()

for match in record["matches"]:
    print(match["owner_address"],
          match["accepted_credentials"])

Output shape

What you get back

Reserved fields surfaced as null in v1, populated later: member_count_estimate, verified_attestation, health_score. Full field-level details at /schema.

How it works

Reads the validated XRPL ledger directly

Source. XR-Trust reads PermissionedDomain ledger objects directly from the validated XRPL ledger via a Clio data-layer node (ledger_data type=permissioned_domain). No third-party indexer, no editorial filter, no curated list. If it's on-ledger and validated, it's in the directory.

Materialization. A background warmer task walks the full PermissionedDomain set every six hours and atomically swaps the in-memory snapshot. The previous snapshot keeps serving while the next walk runs, so reads stay instant. Every response carries a walk_status field so you can tell whether the snapshot is complete, warming on first boot, or partial.

Drill-down vs enumeration. Looking up a single domain by its domain_id is O(1) regardless of warmer state. The service goes straight to ledger_entry. Whole-network enumeration relies on the materialized snapshot.

Owner labels. Where XRPScan recognizes a domain owner (banks, asset managers, infrastructure providers), the label appears on the directory row and the drill-down panel. Unlabeled owners surface their raw classic address.

Cross-product link. Every drill-down includes a one-click jump to XR-Sentinel to inspect the owner's on-chain behavioral pattern. Eventually the same panel will surface XR-Telemetry macro context and the XR-Pulse permissioned_domain_lifecycle event feed; both are queued for v2.

What XR-Trust is not

Descriptive directory, not a verdict

Inclusion in this directory does not imply legitimacy. Absence does not imply illegitimacy. We surface what the validated XRPL ledger says exists; we do not certify it.

XR-Trust describes what's on-chain. Compliance, verification, and trust judgments remain the responsibility of the consumer.

Sister products

Also part of the XRPL-Utilities Portfolio