io.github.vdappdev2/identity
NPM · @VERUSIDX/IDENTITY-MCP · SCANNED AUG 3
MCP server for VerusID identities — register, update, revoke, recover, query, set timelock
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score →
Supply Chain Security87
- No malware found by supply-chain analysis.Pass
- Only part of the dependency tree could be resolved (96 of 100), so this covers what we could see, not the whole tree.Partial
- No install/post-install scripts declared.Pass
- Only part of the dependency tree could be resolved (96 of 100), so this covers what we could see, not the whole tree. View diagnostics → Partial
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 84 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability61
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 4133 tokens (~375/item across 11 items; 11 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management23
- Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
npm · @verusidx/identity-mcp
claude mcp add vdappdev2-identity -- npx -y @verusidx/identity-mcp
codex mcp add vdappdev2-identity -- npx -y @verusidx/identity-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"vdappdev2-identity": {
"type": "local",
"command": [
"npx",
"-y",
"@verusidx/identity-mcp"
],
"enabled": true
}
}
} openclaw mcp add vdappdev2-identity --command npx --arg -y --arg @verusidx/identity-mcp
mcp_servers:
vdappdev2-identity:
command: "npx"
args: ["-y", "@verusidx/identity-mcp"] {
"mcpServers": {
"vdappdev2-identity": {
"command": "npx",
"args": [
"-y",
"@verusidx/identity-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 3 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.
- 2 Aug 26 +48
- Provenance: unverified → fail ▼ security
- Known CVEs: unverified → partial ▲ security
- Install scripts: unverified → pass ▲ security
- Malware scan: unverified → pass ▲ security
- License: unverified → pass ▲ functional
- Dependency health: unverified → partial ▲ functional
- Stability: unverified → 0.20 ▲ functional
- Maintenance: unverified → pass ▲ functional
- MCP protocol: unverified → pass ▲ functional
- Schema quality: unverified → excellent ▲ functional
- Licence: MIT functional
- 31 Jul 26 −7
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 30 Jul 26 −17
- Tool coverage: 100 → unverified ▼ functional
- First check of Schema quality: unverified functional
- 27 Jul 26 41
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 3 Aug 2026 · Analysed npm/@verusidx/[email protected]
Provenance none
Ecosystem: npm · Outcome: none
Dependencies 96 packages
96 packages in the resolved dependency tree · 96 deprecated · 29 stale.
The dependency tree was only partially resolved, so these counts may be incomplete.
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
getidentity ~210
Look up a VerusID by name or i-address. Returns the identity's current state including primary addresses, signing authorities, content data (contentmultimap), revocation/recovery authorities, and wallet relationship (canspendfor/cansignfor). Optionally retrieve the identity as it existed at a specific block height. Use this to check if an identity exists, inspect its configuration, or verify wallet authority before performing write operations.
| Name | Type | Req | Description |
|---|---|---|---|
| chain | string | yes | Chain to query (e.g., "VRSC", "vrsctest") |
| height | number | — | Return identity as of this block height. Default: current height. Pass -1 to include mempool. |
| identity | string | yes | VerusID name (e.g., "alice@") or i-address |
| txproof | boolean | — | If true, returns a proof of the identity. Default: false. |
| txproofheight | number | — | Height from which to generate the proof. Default: same as height. |
No output schema declared.
No examples provided.
getidentitycontent ~262
Get identity content/data with optional VDXF key filter and height range. Returns the cumulative content state — all content across all updates within the specified range. Unlike getidentityhistory, this does not return per-revision snapshots. Use this to read structured data stored on an identity (profiles, timestamps, application data) without needing to process the full revision history.
| Name | Type | Req | Description |
|---|---|---|---|
| chain | string | yes | Chain to query (e.g., "VRSC", "vrsctest") |
| heightend | number | — | Only return content up to this height (inclusive). Default: 0 (max height). Pass -1 to include mempool. |
| heightstart | number | — | Only return content from this height forward (inclusive). Default: 0. |
| identity | string | yes | VerusID name (e.g., "alice@") or i-address |
| keepdeleted | boolean | — | If true, include deleted items. Default: false. |
| txproofheight | number | — | Height from which to generate proofs. |
| txproofs | boolean | — | If true, returns proofs. Default: false. |
| vdxfkey | string | — | Filter to a specific VDXF key. The key is automatically bound to the identity and multimap key. |
No output schema declared.
No examples provided.
getidentityhistory ~242
Get the full revision history of a VerusID. Returns an array of identity snapshots, one per update transaction. Each entry shows the identity state as it was set in that specific transaction, along with the block hash, height, and transaction details. Use this to audit changes to an identity over time — primary address changes (transfers), content updates, authority changes, etc. Note: each history entry's contentmultimap shows only the content set in that specific update, not the cumulative state.
| Name | Type | Req | Description |
|---|---|---|---|
| chain | string | yes | Chain to query (e.g., "VRSC", "vrsctest") |
| heightend | number | — | Only return history up to this height (inclusive). Default: 0 (max height). Pass -1 to include mempool. |
| heightstart | number | — | Only return history from this height forward (inclusive). Default: 0. |
| identity | string | yes | VerusID name (e.g., "alice@") or i-address |
| txproofheight | number | — | Height from which to generate proofs. |
| txproofs | boolean | — | If true, returns proofs. Default: false. |
No output schema declared.
No examples provided.
getvdxfid ~215
Get the VDXF key ID from a URI string. Converts a human-readable VDXF URI (e.g., "vrsc::system.currency.export") into its on-chain i-address representation. Optionally combine with additional data (another VDXF key, a 256-bit hash, or an index number) to derive bound keys. Use this to resolve VDXF key names to i-addresses before querying getidentitycontent with a vdxfkey filter.
| Name | Type | Req | Description |
|---|---|---|---|
| chain | string | yes | Chain to query (e.g., "VRSC", "vrsctest") |
| indexnum | number | — | Integer to combine with the key |
| uint256 | string | — | 256-bit hex hash to combine with the key |
| vdxfkey | string | — | VDXF key or i-address to combine via hash |
| vdxfuri | string | yes | VDXF URI string (e.g., "vrsc::system.currency.export", "idname::userdefinedgroup.subgroup.name") |
No output schema declared.
No examples provided.
listidentities ~164
List VerusIDs in the local wallet. Returns all identities that this wallet can spend for, sign for, or watch. Use this to discover which identities are available before performing identity operations. By default includes identities we can spend for and sign for, but not watch-only.
| Name | Type | Req | Description |
|---|---|---|---|
| chain | string | yes | Chain to query (e.g., "VRSC", "vrsctest") |
| includecansign | boolean | — | Include identities we can only sign for but not spend. Default: true. |
| includecanspend | boolean | — | Include identities we can spend/authorize for. Default: true. |
| includewatchonly | boolean | — | Include identities we can neither sign nor spend, but are watched or are co-signers. Default: false. |
No output schema declared.
No examples provided.
recoveridentity ~499
Recover a revoked or compromised identity. Only the recovery authority (or token recovery authority) can perform this. Typically used to set new primary addresses after a key compromise, effectively transferring control to new keys. Pass the full identity definition with the desired recovery state (new primary addresses, etc.). Always include "parent" in the identity definition. PRIVATEADDRESS BEHAVIOR: Omit privateaddress entirely to preserve the existing one (carried over). Pass null to clear/remove it. Include a new zs1... address to change it. Empty string "" does NOT clear — daemon treats it the same as omitting. TIMELOCK: Do NOT include timelock in the identity JSON unless you deliberately intend to set an absolute block height lock or clear an existing one. Omitting timelock resets it to 0 (unlocked) — timelock does NOT carry over like privateaddress does. To clear a timelock via recovery, simply omit the timelock field. If setting a timelock value, ensure revocationauthority and recoveryauthority are set to identities that can perform a future revoke+recover to remove it, since absolute locks CANNOT be removed by updateidentity. Use setidentitytimelock after recovery for safe timelock configuration. SAFETY: When setting new authorities during recovery, NEVER set revocationauthority to another identity while leaving recoveryauthority as self — if later revoked by the external authority, the identity cannot recover itself. This bricks the identity. If delegating revocation, always also delegate recovery to a different identity.
| Name | Type | Req | Description |
|---|---|---|---|
| chain | string | yes | Chain to recover on (e.g., "VRSC", "vrsctest") |
| feeoffer | number | — | Non-standard fee amount. |
| jsonidentity | object | yes | New identity definition for the recovered state. Always include "parent" for correct namespace resolution. revocationauthority/recoveryauthority accept friendly name (e.g., "alice@") or i-address. |
| returntx | boolean | — | If true, return signed transaction hex instead of broadcasting. Default: false. |
| sourceoffunds | string | — | Source address for funds. If the user has not specified a preferred address, ask which address to use or if they prefer a wildcard ("*", "R*", "i*", or "z*" for private txs). |
| tokenrecover | boolean | — | If true, use the tokenized ID control token to recover. Default: false. |
No output schema declared.
No examples provided.
registeridentity ~875
Step 2 of identity registration. Uses a confirmed name commitment to register the identity on-chain. The commitment must have been mined (wait 1 block after registernamecommitment). The tool checks for saved commitment data from a previous registernamecommitment call — if available, the agent does not need to pass the commitment details manually. On successful registration, the saved commitment file is cleaned up. IDENTITY DEFINITION: Keep it minimal — only include fields you are explicitly setting to non-default values. Omit revocationauthority/recoveryauthority to default to self. TIMELOCK: Do NOT include timelock in the identity JSON unless you deliberately intend to set an absolute block height lock. Omitting timelock defaults to 0 (unlocked). To configure timelocks safely after registration, use setidentitytimelock which provides setunlockdelay and unlockatblock controls. Setting a timelock value here creates an absolute block height lock that CANNOT be removed by updateidentity — only by revoke+recover. Omit privateaddress unless explicitly assigning one. SAFETY: NEVER set revocationauthority to another identity while leaving recoveryauthority as self — if the identity is revoked by the external authority, it cannot recover itself (recovery requires the recovery authority to act, and a revoked identity cannot authorize its own recovery). This bricks the identity. If delegating revocation, always also delegate recovery to a different identity. POSITIONAL PARAMS: The daemon RPC is positional: registeridentity jsonidregistration (returntx) (feeoffer) (sourceoffunds). If passing sourceoffunds, you must also fill returntx and feeoffer. FEE DISCOVERY: Call getcurrency (chain-mcp) on the parent currency to find idregistrationfees. For basket currencies, if idimportfees is a satoshi-scale value it encodes a reserve currency index: 0.00000000 = first reserve (index 0), 0.00000001 = second reserve (index 1), etc. The idregistrationfees amount is then denominated in tha…
| Name | Type | Req | Description |
|---|---|---|---|
| chain | string | yes | Chain to register on (e.g., "VRSC", "vrsctest") |
| feeoffer | number | — | Amount to offer miner/staker for the registration fee. Default: standard price. |
| jsonidregistration | object | yes | Registration object containing: txid (from registernamecommitment), namereservation {name, salt, referral}, and identity definition {name, parent, primaryaddresses, minimumsignatures}. Only include r… |
| returntx | boolean | — | If true, return the signed transaction hex instead of broadcasting. Default: false. |
| sourceoffunds | string | — | Source address for funds. If the user has not specified a preferred address, ask which address to use or if they prefer a wildcard ("*", "R*", "i*"). Sub-ID creation requires a transparent address. |
No output schema declared.
No examples provided.
registernamecommitment ~322
Step 1 of identity registration. Creates a name commitment transaction that reserves a name without revealing it. The commitment hides the name itself while ensuring miners cannot front-run the registration. After this tool succeeds, wait 1 block before calling registeridentity (step 2). The commitment data is saved to disk so it persists across conversations — if a session ends before registration, the next session can pick up the commitment. Names must not have leading, trailing, or multiple consecutive spaces and must not include: \ / : * ? " < > | @
| Name | Type | Req | Description |
|---|---|---|---|
| chain | string | yes | Chain to register on (e.g., "VRSC", "vrsctest") |
| controladdress | string | yes | Address that will control this commitment. Must be present in the current wallet. This is not necessarily the address that will control the actual identity. |
| name | string | yes | The unique name to commit to. Creating a commitment is not a registration — if the name already exists, the daemon will reject the transaction. |
| parentnameorid | string | — | Parent name or currency i-address. Dictates issuance rules and pricing. Only for PBaaS sub-identities. |
| referralidentity | string | — | Friendly name or i-address of a referral identity, used to lower network cost of the ID. |
| sourceoffunds | string | — | Source address for funds. If the user has not specified a preferred address, ask which address to use or if they prefer a wildcard ("*", "R*", "i*"). Sub-ID creation requires a transparent address. |
No output schema declared.
No examples provided.
revokeidentity ~230
Revoke an identity, making it unable to spend funds or sign transactions. Only the revocation authority (or token revocation authority) can perform this action. A revoked identity can only be restored by the recovery authority using recoveridentity. This is a safety mechanism — use it if the identity's private keys are compromised.
| Name | Type | Req | Description |
|---|---|---|---|
| chain | string | yes | Chain to revoke on (e.g., "VRSC", "vrsctest") |
| feeoffer | number | — | Non-standard fee amount. |
| identity | string | yes | VerusID name (e.g., "alice@") or i-address to revoke |
| returntx | boolean | — | If true, return signed transaction hex instead of broadcasting. Default: false. |
| sourceoffunds | string | — | Source address for funds. If the user has not specified a preferred address, ask which address to use or if they prefer a wildcard ("*", "R*", "i*", or "z*" for private txs). |
| tokenrevoke | boolean | — | If true, use the tokenized ID control token to revoke. Default: false. |
No output schema declared.
No examples provided.
setidentitytimelock ~589
Set or modify a timelock on a VerusID. Timelocking restricts when an identity can spend funds on this chain. This only affects the identity on the current chain. Two modes: - setunlockdelay: Set a delay (in blocks) that must pass after an unlock request. Sets flags=2 (delay lock active), timelock=N (the delay in blocks). The identity cannot spend until an unlock is triggered and the delay passes. - unlockatblock: Set an absolute block height at which the identity unlocks. When used with unlockatblock=0 on a delay-locked identity (flags=2), it TRIGGERS the unlock countdown — the daemon converts the delay into an absolute block height (approximately current_block + delay) and clears the delay flag. This is the standard way to initiate unlocking a delay-locked identity. unlockatblock=0 does NOT work on absolute block height locks (flags=0, timelock > 0) — those can only be removed by revoke+recover. Exactly one of unlockatblock or setunlockdelay must be specified. TIMELOCK WORKFLOW: 1) Set delay: setunlockdelay=N → identity locked with N-block delay. 2) Trigger unlock: unlockatblock=0 → countdown starts, identity unlocks at ~current_block+N. 3) Wait for block to pass. 4) Identity can spend again. To cancel a countdown (e.g., attacker triggered unlock), the revocation authority can revoke — revocation destroys the countdown entirely. Then recover to restore the identity with no timelock. REMOVING TIMELOCKS: Delay locks (flags=2) can be cleared by revoke+recover (omit timelock in recovery JSON). Absolute locks (flags=0, timelock > 0) can ONLY be cleared by revoke+recover. updateidentity CANNOT modify or remove any timelock once set.
| Name | Type | Req | Description |
|---|---|---|---|
| chain | string | yes | Chain to set timelock on (e.g., "VRSC", "vrsctest") |
| feeoffer | number | — | Non-standard fee amount. |
| identity | string | yes | VerusID name (e.g., "alice@") or i-address |
| returntx | boolean | — | If true, return signed transaction hex instead of broadcasting. Default: false. |
| setunlockdelay | number | — | Number of blocks to delay after unlock request. Mutually exclusive with unlockatblock. |
| sourceoffunds | string | — | Source address for funds. If the user has not specified a preferred address, ask which address to use or if they prefer a wildcard ("*", "R*", "i*", or "z*" for private txs). |
| unlockatblock | number | — | Absolute block height to unlock at. Mutually exclusive with setunlockdelay. |
No output schema declared.
No examples provided.
updateidentity ~525
Update an identity's fields — primary addresses, content, authorities, or any other mutable property. The wallet must hold authority to update (either primary authority, or token authority if tokenupdate is true). Pass the full identity definition with the desired changes. Fields not included revert to defaults — to preserve existing values, first read them with getidentity and include them in the update. Always include "parent" in the identity definition. PRIVATEADDRESS BEHAVIOR: Omit privateaddress entirely to preserve the existing one (carried over). Pass null to clear/remove it. Include a new zs1... address to change it. Empty string "" does NOT clear — daemon treats it the same as omitting. TIMELOCK: Do NOT include timelock in the identity JSON unless you deliberately intend to set an absolute block height lock. An absolute lock CANNOT be removed by updateidentity — only by revoke+recover. If setting a timelock, ensure revocationauthority and recoveryauthority are set to identities that can perform the revoke+recover to remove it. Omit timelock entirely to preserve the current value. Setting timelock to 0 is ONLY valid when there is no active timelock — it will be rejected if any timelock (delay or absolute) is currently set. Use setidentitytimelock for safe timelock configuration. SAFETY: NEVER set revocationauthority to another identity while leaving recoveryauthority as self — if revoked by the external authority, the identity cannot recover itself (a revoked identity cannot authorize its own recovery). This bricks the identity. If delegating revocation, always also delegate recovery to a different identity.
| Name | Type | Req | Description |
|---|---|---|---|
| chain | string | yes | Chain to update on (e.g., "VRSC", "vrsctest") |
| feeoffer | number | — | Non-standard fee amount. |
| jsonidentity | object | yes | New identity definition. Must include "name" at minimum. Always include "parent" to ensure correct namespace resolution. revocationauthority/recoveryauthority accept friendly name (e.g., "alice@") or… |
| returntx | boolean | — | If true, return signed transaction hex instead of broadcasting. Default: false. |
| sourceoffunds | string | — | Source address for funds. If the user has not specified a preferred address, ask which address to use or if they prefer a wildcard ("*", "R*", "i*", or "z*" for private txs). |
| tokenupdate | boolean | — | If true, use the tokenized ID control token for authority. Default: false. |
No output schema declared.
No examples provided.