Skip to main content
Glama
jarod-vyent

xrpl-identity-mcp

by jarod-vyent

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.

Related MCP server: attest-mcp-server

Quickstart

Claude MCP:

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

Generic MCP client config:

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

Environment variables:

Variable

Values

Default

Purpose

XRPL_NETWORK

mainnet, testnet, devnet

testnet

Selects the XRPL network.

XRPL_ENDPOINT

WebSocket URL

Network default

Overrides the rippled WebSocket endpoint.

ALLOW_MAINNET_SUBMIT

true or unset

unset

Required for tx_submit_signed on mainnet.

Default endpoints:

Network

Endpoint

mainnet

wss://xrplcluster.com

testnet

wss://s.altnet.rippletest.net:51233

devnet

wss://s.devnet.rippletest.net:51233

Tools

Tool

What it does

Network writes?

did_resolve

Resolve an XLS-40 DID object and fetch an ipfs:// or https:// DID document when present.

No

did_prepare_set

Prepare an unsigned DIDSet transaction.

No

did_prepare_delete

Prepare an unsigned DIDDelete transaction.

No

credential_prepare_create

Prepare an unsigned CredentialCreate transaction.

No

credential_prepare_accept

Prepare an unsigned CredentialAccept transaction.

No

credential_prepare_delete

Prepare an unsigned CredentialDelete transaction.

No

credential_verify

Read a credential object and report existence, acceptance, and expiration.

No

credential_list

List up to 400 credential objects visible to an account, with issuer/subject filtering.

No

account_identity_summary

Summarize auth posture, signer list, DID presence, and credential counts for an account.

No

signer_list_prepare_set

Prepare an unsigned SignerListSet transaction for multisig create, replace, or delete.

No

tx_decode_verify

Decode a signed blob, compute hash, and compare against expected intent.

No

tx_submit_signed

Submit 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

npm install
npm run typecheck
npm run build
SKIP_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

Available Tools

12 tools
account_identity_summaryAccount Identity SummaryA

Summarize an XRPL account identity posture: AccountRoot auth flags, RegularKey and Domain state, signer list, DID presence, and visible credential counts as issuer and subject (each with a *Truncated boolean flagging when the count hit the 400-object scan cap).

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesClassic XRPL account address to summarize.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It proactively discloses the 400-object scan cap and the *Truncated flag, which is critical behavioral information about result limits. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that efficiently lists all relevant components, though it is somewhat dense. It is front-loaded with the main purpose and includes necessary detail without excess.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description adequately explains the components of the summary (flags, keys, signer list, DID, credential counts with truncation). It does not detail the return format, but the listed components provide sufficient context for an agent to understand what the tool returns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is only one parameter (address) with 100% schema description coverage. The tool description does not add additional parameter details beyond the schema, but this is acceptable given the high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Summarize') and clearly identifies the resource ('XRPL account identity posture') and the specific components included. It distinguishes from siblings like credential_list or did_resolve by covering multiple identity aspects.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for getting an overview of account identity, but it does not explicitly state when to use it versus alternatives like credential_list or did_resolve, nor does it mention when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

credential_listList Account CredentialsA

List up to 400 XLS-70 Credential objects visible in an account owner directory, optionally filtered by whether the account is issuer or subject.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNoOptional role filter comparing the account to Issuer or Subject fields.
addressYesClassic XRPL account address.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description mentions the hard limit of 400 credentials, which is an important behavioral trait. However, it does not disclose pagination behavior, authorization requirements, or potential rate limits. Since there are no annotations, the description carries the full burden, and while the cap is useful, more behavioral details would be beneficial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that concisely covers all key aspects: what the tool does, the maximum results, the source, and the optional filter. No unnecessary words or redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lacks an explanation of the output format or fields, and there is no output schema to compensate. It also omits error conditions or limits beyond the 400 cap. For a listing tool, hints about the returned structure would improve completeness, but the description is adequate for basic understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the baseline is 3. The description adds the context of 'account owner directory' but otherwise repeats the schema's optional role filter information. It does not provide additional details like the format of the address or the effect of not providing the role, so it adds marginal value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists up to 400 XLS-70 Credential objects from an account owner directory with an optional role filter. It uses specific verb and resource, and the sibling tool names (e.g., credential_prepare_create, credential_verify) indicate distinct actions, making this tool's purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly states when to use the tool (to list credentials visible in an account directory with optional filtering). It does not explicitly state when not to use or alternatives, but the context from sibling tools implies that for creating, verifying, or deleting credentials, other tools should be used. This provides sufficient guidance for most use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

credential_prepare_acceptPrepare CredentialAcceptA

Prepare an unsigned XLS-70 CredentialAccept transaction for a subject to accept an issued credential. Signing happens outside this server.

ParametersJSON Schema
NameRequiredDescriptionDefault
issuerYesClassic XRPL issuer account address.
accountYesClassic XRPL subject account accepting the credential.
credentialTypeYesCredential type as UTF-8 text. Encoded to XRPL hex and capped at 64 bytes.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses that signing happens outside the server, which is good. However, it does not discuss permissions, reversibility, or effects on credential state, leaving some behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with key information. No superfluous words; every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 3-parameter tool with no output schema, the description covers the main purpose and external signing. Could mention that the prepared transaction is returned as a blob, but this is a minor omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description does not add extra meaning beyond the schema; it merely restates the purpose without explaining parameter details or constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the verb 'prepare', the resource 'CredentialAccept transaction', and the context 'for a subject to accept an issued credential'. It effectively distinguishes from sibling tools like credential_prepare_create and credential_prepare_delete.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use (accepting a credential) and notes that signing is done externally, but it does not explicitly contrast with sibling tools or provide 'when not to use' guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

credential_prepare_createPrepare CredentialCreateA

Prepare an unsigned XLS-70 CredentialCreate transaction. The issuer signs externally; this server only prepares JSON and never custodies keys.

ParametersJSON Schema
NameRequiredDescriptionDefault
uriNoOptional credential URI encoded as XRPL hex URI.
subjectYesClassic XRPL subject account address.
expirationNoOptional ISO-8601 expiration time converted to Ripple epoch seconds.
issuerAccountYesClassic XRPL issuer account address.
credentialTypeYesCredential type as UTF-8 text. Encoded to XRPL hex and capped at 64 bytes.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses that the transaction is unsigned, the issuer signs externally, and the server never custodies keys, providing critical behavioral traits for a tool dealing with credentials.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the purpose, and every sentence adds value. There is no wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool lacks an output schema, but the description mentions it prepares JSON. For a transaction preparation tool, this is adequate. It covers the signing process but could mention return format more explicitly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description does not add additional parameter semantics beyond what the schema already provides, so no extra value is given.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Prepare an unsigned XLS-70 CredentialCreate transaction', specifying the exact verb and resource. It distinguishes from sibling tools like credential_prepare_accept and credential_prepare_delete by focusing on creation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains that the issuer signs externally and the server only prepares JSON, making the usage context clear. It does not explicitly state when not to use this tool versus alternatives, but the context is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

credential_prepare_deletePrepare CredentialDeleteA

Prepare an unsigned XLS-70 CredentialDelete transaction. The submitter signs externally; this server never signs or stores keys.

ParametersJSON Schema
NameRequiredDescriptionDefault
issuerNoOptional issuer account; if omitted, Account may be treated as issuer by XRPL.
accountYesClassic XRPL account submitting the delete transaction.
subjectNoOptional subject account; if omitted, Account may be treated as subject by XRPL.
credentialTypeYesCredential type as UTF-8 text. Encoded to XRPL hex and capped at 64 bytes.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses that the server never signs or stores keys, but does not explain other behavioral traits such as side effects, latency, or error conditions. This is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with zero waste. It is front-loaded with the purpose and efficiently conveys the key behavioral trait.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 4 parameters, no output schema, and no annotations, the description is minimal. It conveys the essential purpose and signing model but lacks details on transaction behavior, prerequisites, or return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds no additional parameter meaning beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool prepares an unsigned XLS-70 CredentialDelete transaction, using a specific verb (Prepare) and resource (CredentialDelete transaction). The name and description distinguish it from sibling credential tools like credential_prepare_accept or credential_prepare_create.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description indicates that the submitter signs externally and the server never signs or stores keys, providing clear usage context. However, it does not explicitly state when not to use this tool or mention alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

credential_verifyVerify CredentialA

Read an XLS-70 Credential ledger object and report whether it exists, has been accepted, and is expired relative to the validated ledger close time.

ParametersJSON Schema
NameRequiredDescriptionDefault
issuerYesClassic XRPL issuer account address.
subjectYesClassic XRPL subject account address.
credentialTypeYesCredential type as UTF-8 text. Encoded to XRPL hex and capped at 64 bytes.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It clearly states the tool reads a ledger object (read-only) and checks existence, acceptance, and expiry relative to validated ledger close time. This discloses key behaviors and side-effect-free nature. However, it does not mention any network requirements or potential performance implications.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence that is clear and front-loaded with the main action. It could be slightly more concise by splitting into two sentences, but it is efficient and contains no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, so description partially covers returns (existence, acceptance, expiry). It mentions relative to validated ledger close time, which adds context. Could be more complete by explicitly stating the return format. Given three parameters and a read operation, it is fairly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all three parameters. The description adds context about what it does with the parameters (reads the credential object), but does not add new constraints or format beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Read an XLS-70 Credential ledger object and report whether it exists, has been accepted, and is expired'. It uses a specific verb and resource, and the result is well-defined. It distinguishes from siblings like credential_list (which lists credentials) and credential_prepare_accept (which prepares acceptance).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not-to-use guidance. The description implies this tool is for checking the status of a specific credential, but does not compare to sibling tools like credential_list or account_identity_summary. Usage context is implied but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

did_prepare_deletePrepare DIDDeleteA

Prepare an unsigned XLS-40 DIDDelete transaction for an account DID. This server never signs; sign externally and verify the blob before submitting.

ParametersJSON Schema
NameRequiredDescriptionDefault
accountYesClassic XRPL account address deleting its DID.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description fully discloses that the server never signs and that the output requires external signing and verification, which is crucial behavioral information beyond the input schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is only two sentences, both essential: the first defines purpose, the second provides critical usage guidance. No redundant or irrelevant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the single parameter and no output schema, the description covers purpose and a key behavioral note. It could briefly mention the output format (e.g., a blob), but overall it is sufficiently complete for an agent to understand the tool's use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The sole parameter 'account' is fully described in the input schema (100% coverage), and the description merely restates it as 'for an account DID' without adding meaningful new semantics beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool prepares an unsigned XLS-40 DIDDelete transaction, specifying both the verb ('Prepare') and the resource ('unsigned DIDDelete transaction'). It distinguishes itself from sibling tools like 'did_prepare_set' by indicating deletion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly notes that the server never signs and instructs the user to sign externally and verify the blob before submitting, providing clear guidance on post-processing steps. However, it does not explicitly state when not to use this tool or compare it to direct alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

did_prepare_setPrepare DIDSetA

Prepare an unsigned XLS-40 DIDSet transaction. This server does not sign or custody keys; sign externally and verify the signed blob before submission.

ParametersJSON Schema
NameRequiredDescriptionDefault
uriNoOptional DID document URI. UTF-8 encoded to XRPL hex URI.
dataNoOptional DID data. UTF-8 encoded to XRPL hex Data.
accountYesClassic XRPL account address setting the DID.
didDocumentNoOptional DID document JSON/string payload. UTF-8 encoded to XRPL hex DIDDocument.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully carries the burden. It discloses that the server does not sign or custody keys and that the output is unsigned, informing the agent of important behavioral traits without contradicting annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero wasted words; the critical behavioral warning is front-loaded. Every sentence provides essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description explains the tool's role as a preparation step and warns about key custody, which is sufficient given the lack of output schema. It could be slightly more complete by hinting at the return format, but overall adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and each parameter has a description in the schema. The tool description adds no additional semantic value beyond what the schema already provides, so baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Prepare') and resource ('unsigned XLS-40 DIDSet transaction'), clearly distinguishing it from sibling tools like did_prepare_delete or credential_prepare_create.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly advises external signing and verification before submission, providing clear context. However, it does not explicitly state when to use this tool over alternatives, though sibling names imply distinct purposes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

did_resolveResolve XRPL DIDA

Resolve an XLS-40 DID object for an XRPL account or did:xrpl identifier. Returns raw ledger data, UTF-8 decoded DID fields where valid, and fetched DID document content for ipfs:// or https:// URIs. Only text/JSON documents are inlined; binary content is reported as metadata (source, content type, byte length) with the body omitted.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesClassic XRPL address, did:xrpl:<address>, or did:xrpl:1:<address>.

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations present, so description carries full burden. It thoroughly discloses behaviors: returns raw ledger data, decoded DID fields, fetched documents for URIs, inline vs binary handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose, efficient. Could be slightly more structured (e.g., bullet points) but still concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Complex tool with no output schema; description fully explains input, output types (raw data, decoded fields, document content), and edge cases (binary content handling).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Single parameter 'address' well-documented in schema (coverage 100%). Description adds no extra semantics beyond schema; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Excellent clarity: Description specifies verb 'resolve' and resource 'XLS-40 DID object', clearly distinguishing from sibling tools like did_prepare_set (creation) or credential_verify.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implied usage for resolving DIDs, but no explicit guidance on when to use this vs alternatives (e.g., account_identity_summary). Does not state exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

signer_list_prepare_setPrepare SignerListSetA

Prepare an unsigned SignerListSet transaction to create, replace, or delete an XRPL multisign signer list. This server never signs or stores keys.

ParametersJSON Schema
NameRequiredDescriptionDefault
quorumYesRequired signer weight sum. Use 0 with no signers to delete the list.
accountYesClassic XRPL account whose signer list is being changed.
signersYesSigner entries. Use an empty array only when quorum is 0 to delete the list.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It explicitly states the tool does not sign or store keys, which is important for security transparency. It mentions deletion capability but does not fully disclose whether the preparation has any side effects (likely none). Overall, it provides useful behavioral context beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences: the first states the purpose clearly, and the second adds a crucial behavioral note. No superfluous words or structure issues.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the main purpose and operation but does not explain the output format (expected return value). Since there is no output schema, the description could have been more complete by stating what the tool returns (e.g., an unsigned transaction blob). Also, prerequisites or side effects are not mentioned.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description does not add meaning beyond what the schema already provides for each parameter (quorum, account, signers). The schema itself has clear descriptions, so no additional value from the tool description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it prepares an unsigned SignerListSet transaction for creating, replacing, or deleting an XRPL multisign signer list. It uses a specific verb (prepare) and resource (SignerListSet transaction), distinguishing it from sibling tools like credential_prepare_* and did_prepare_*.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for multisign setup but provides no explicit guidance on when to use this tool versus alternative prepare tools (e.g., credential_prepare_*). It does not state when to use or when not to use, nor does it mention prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tx_decode_verifyDecode and Verify Signed TransactionA

Decode a signed XRPL transaction blob, compute its hash, and optionally compare it against an expected partial intent before submission. This is the WYSIWYS safety gate.

ParametersJSON Schema
NameRequiredDescriptionDefault
signedBlobYesSigned XRPL transaction blob as a hexadecimal string.
expectedIntentNoOptional partial transaction JSON. Every provided field is compared against the decoded transaction.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It states decoding, hashing, and optional comparison but does not discuss side effects, authentication needs, rate limits, or error conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with front-loaded key information. The 'WYSIWYS safety gate' phrase is memorable and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 2 parameters (one nested) and no output schema, the description does not mention return values (e.g., hash, comparison result) which would help the agent understand the tool's output.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the description adds value by clarifying signedBlob is a hexadecimal string and expectedIntent is a partial JSON for field comparison, enhancing schema meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The title and description clearly state the tool decodes and verifies a signed XRPL transaction, computes hash, and optionally compares to expected intent. The phrase 'WYSIWYS safety gate' adds context, and it is distinguishable from siblings like tx_submit_signed.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage as a pre-submission safety gate but does not explicitly state when to use or not use, nor does it mention alternatives or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tx_submit_signedSubmit Signed TransactionA

Submit a pre-signed XRPL transaction blob and poll for validation. On mainnet this is blocked unless ALLOW_MAINNET_SUBMIT=true is set.

ParametersJSON Schema
NameRequiredDescriptionDefault
failHardNoForward fail_hard behavior to rippled submit; defaults to false.
signedBlobYesSigned XRPL transaction blob as a hexadecimal string.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears the full burden of behavioral disclosure. It mentions polling for validation and mainnet blocking, but does not elaborate on what 'poll for validation' entails (e.g., timeout, success criteria), or whether the operation is idempotent or irreversible. More detail would improve transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of two concise sentences that front-load the purpose. Every sentence adds value: the first states the action, the second adds an important usage caveat. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and moderate complexity (2 params, no nested objects), the description covers the core action and a mainnet restriction. However, it omits details about polling behavior, error handling, and what happens on non-mainnet networks, leaving some gaps for an AI agent to infer.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents both parameters (signedBlob and failHard) adequately. The description does not add semantics beyond what the schema provides, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Submit a pre-signed XRPL transaction blob and poll for validation,' which is a specific verb and resource. It distinguishes from sibling tools like tx_decode_verify (decode only) and credential_prepare_* (prepare actions).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a key usage context: 'On mainnet this is blocked unless ALLOW_MAINNET_SUBMIT=true is set.' However, it does not explicitly state when to use this tool versus alternatives, such as tx_decode_verify for verification before submission.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 12 tool updatesv0.1.2
    • First observedaccount_identity_summary
    • First observedcredential_list
    • First observedcredential_prepare_accept
    • First observedcredential_prepare_create
    • First observedcredential_prepare_delete
    • First observedcredential_verify
    • First observeddid_prepare_delete
    • First observeddid_prepare_set
    • First observeddid_resolve
    • First observedsigner_list_prepare_set
    • First observedtx_decode_verify
    • First observedtx_submit_signed

TDQS

A4.2/5.0

Scored across 12 tools

Disambiguation5/5

Each tool targets a distinct operation: account summary, credential CRUD, DID management, signer list preparation, and transaction verification/submission. No two tools have overlapping purposes.

Naming Consistency5/5

All tools use snake_case with a consistent verb_noun pattern (e.g., credential_prepare_create, did_resolve). The naming is uniform and predictable.

Tool Count5/5

12 tools are well-scoped for the XRPL identity domain, covering credentials, DIDs, signer lists, and transaction safety without being excessive.

Completeness4/5

The tool set covers the main identity operations (credential lifecycle, DID, signer list) and includes transaction safety tools. Missing are account root flag modification and regular key management, but these are minor gaps for the focused purpose.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    MCP server for AI agent identity — verify agents with Ed25519 signatures, check trust scores, sign and verify content, exchange encrypted messages. Built on the Agent Identity Protocol (AIP).
    8
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    An MCP server that exposes tools for issuing scoped agent credentials, delegating narrower child credentials, handling approvals, revoking task trees, and retrieving audit trails and evidence packets.
    14
    1
    Apache 2.0
  • F
    license
    A
    quality
    B
    maintenance
    An MCP server for interacting with the AT Protocol (ATProto) ecosystem, including Bluesky, providing tools for identity, profiles, and social discovery.
    6
    1
    -