Xrpl Identity Mcp

io.github.jarod-vyentPublished by GitHub account jarod-vyentv0.1.1Updated Oct 24, 2026

MCP server for XRPL identity: DIDs, credentials, signer lists, and safe transaction workflows.

VerifiedSTDIODesktop onlyFinanceSecurity & Monitoring

Overview

AI-generated overview

Local MCP server for XRP Ledger identity: resolve DIDs, manage credentials and signer lists, and prepare, verify and submit signed transactions.

What you can do
  • Resolve XLS-40 DIDs and fetch linked DID documents
  • Prepare unsigned DID set/delete and credential create/accept/delete transactions
  • Read credentials and list them per account, and summarize an account's identity posture
  • Prepare multisig signer list changes
  • Decode and verify a signed blob against expected intent, then submit it and poll for validation
When to use it
Useful when an assistant needs to work with XRPL identity features — DIDs, credentials or multisig signer lists — or to run a prepare, verify, submit transaction flow where signing stays in the user's own wallet. Defaults to testnet, so it suits experimentation before mainnet use.
Requirements
Runs locally via npx (Node.js). No API key or account is needed; the server holds no keys. Optional environment variables: XRPL_NETWORK (mainnet, testnet or devnet; default testnet), XRPL_ENDPOINT to override the WebSocket endpoint, and ALLOW_MAINNET_SUBMIT=true to permit mainnet submission. Network access to an XRPL WebSocket endpoint is required.
Before you install
tx_submit_signed sends a pre-signed transaction to the ledger and can move real value on mainnet; mainnet submission is blocked unless ALLOW_MAINNET_SUBMIT is set to true. The server never holds seeds or private keys, so signing happens elsewhere and the signed blob you pass in is what gets broadcast. Verify with tx_decode_verify before submitting, and check the network reported in each result.

Installation

In SourceWeft

  1. Open Xrpl Identity Mcp in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

xrpl-identity-mcp

[CI] [npm] [License: MIT]

xrpl-identity-mcp is the first identity-focused MCP server for the XRP Ledger: DIDs (XLS-40), credentials (XLS-70), multisig signer lists, and safe transaction prepare/verify/submit workflows. It prepares unsigned transactions, reads ledger state, verifies signed blobs against intent, and can submit pre-signed blobs without ever taking custody of keys.

Built by Jarod Vyent, from the team behind SciPHR.

Security Model

These invariants are core behavior:

  1. No key custody. The server has no seed, private key, mnemonic, wallet import, or signing path. Signing happens in the user's wallet or agent.
  2. Network is explicit. XRPL_NETWORK is mainnet, testnet, or devnet. The default is testnet. Every tool result includes network.
  3. Mainnet submit is opt-in. tx_submit_signed on mainnet is blocked unless ALLOW_MAINNET_SUBMIT=true is set.
  4. Prepare, verify, then submit. Write workflows return unsigned JSON with instructions to sign externally, call tx_decode_verify, and only then call tx_submit_signed.

Quickstart

Claude MCP:

bash
claude mcp add xrpl-identity -- npx -y xrpl-identity-mcp

Generic MCP client config:

json
{  "mcpServers": {    "xrpl-identity": {      "command": "npx",      "args": ["-y", "xrpl-identity-mcp"],      "env": {        "XRPL_NETWORK": "testnet"      }    }  }}

Environment variables:

VariableValuesDefaultPurpose
XRPL_NETWORKmainnet, testnet, devnettestnetSelects the XRPL network.
XRPL_ENDPOINTWebSocket URLNetwork defaultOverrides the rippled WebSocket endpoint.
ALLOW_MAINNET_SUBMITtrue or unsetunsetRequired for tx_submit_signed on mainnet.

Default endpoints:

NetworkEndpoint
mainnetwss://xrplcluster.com
testnetwss://s.altnet.rippletest.net:51233
devnetwss://s.devnet.rippletest.net:51233

Tools

ToolWhat it doesNetwork writes?
did_resolveResolve an XLS-40 DID object and fetch an ipfs:// or https:// DID document when present.No
did_prepare_setPrepare an unsigned DIDSet transaction.No
did_prepare_deletePrepare an unsigned DIDDelete transaction.No
credential_prepare_createPrepare an unsigned CredentialCreate transaction.No
credential_prepare_acceptPrepare an unsigned CredentialAccept transaction.No
credential_prepare_deletePrepare an unsigned CredentialDelete transaction.No
credential_verifyRead a credential object and report existence, acceptance, and expiration.No
credential_listList up to 400 credential objects visible to an account, with issuer/subject filtering.No
account_identity_summarySummarize auth posture, signer list, DID presence, and credential counts for an account.No
signer_list_prepare_setPrepare an unsigned SignerListSet transaction for multisig create, replace, or delete.No
tx_decode_verifyDecode a signed blob, compute hash, and compare against expected intent.No
tx_submit_signedSubmit a pre-signed blob and poll for validation. Mainnet requires ALLOW_MAINNET_SUBMIT=true.Yes

Example Agent Flows

Resolve a DID and read its document:

  1. Call did_resolve with address set to a classic XRPL address or did:xrpl:<address>.
  2. Inspect decoded.URI, decoded.Data, and decoded.DIDDocument.
  3. If the URI is ipfs:// or https://, inspect document and documentSource. Only text and JSON documents are inlined; binary content (for example an image) is reported as documentSource, documentContentType, and documentByteLength with documentSkipped explaining why the body was omitted.

Issue and accept a credential on testnet:

  1. Set XRPL_NETWORK=testnet.
  2. Call credential_prepare_create with issuer, subject, credential type, optional expiration, and optional URI.
  3. Sign the returned unsignedTx externally with the issuer account.
  4. Call tx_decode_verify with the signed blob and the expected intent.
  5. Call tx_submit_signed.
  6. Call credential_prepare_accept for the subject, sign externally, verify with tx_decode_verify, then submit.
  7. Call credential_verify to confirm accepted: true and expired: false.

Verify a signed blob before submitting:

  1. Call tx_decode_verify with signedBlob and an expectedIntent partial transaction JSON.
  2. Check matches and any mismatches.
  3. Submit only when the decoded transaction matches the user's intent.

Development

bash
npm installnpm run typechecknpm run buildSKIP_INTEGRATION=1 npm test

Integration tests target testnet and are skipped when SKIP_INTEGRATION=1. To run the account summary integration test, set XRPL_INTEGRATION_ACCOUNT to a funded testnet account address.

License

MIT

Source: README.md at commit d8d5c2b

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.1.1LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts