keygenix-mcp
Allows generating keys, managing wallets, and signing transactions on the Bitcoin blockchain.
Allows generating keys, managing wallets, and signing transactions on the Cardano blockchain.
Allows generating keys, managing wallets, and signing transactions on the Dogecoin blockchain.
Allows generating keys, managing wallets, and signing transactions on the Litecoin blockchain.
Allows generating keys, managing wallets, and signing transactions on the Ripple blockchain.
Allows generating keys, managing wallets, and signing transactions on the Solana blockchain.
Allows generating keys, managing wallets, and signing transactions on the Sui blockchain.
Allows generating keys, managing wallets, and signing transactions on the TON blockchain.
Allows generating keys, managing wallets, and signing transactions on the Zcash blockchain.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@keygenix-mcpSign an ETH transaction sending 0.01 ETH to 0xabc"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
keygenix-mcp
Keygenix MCP Server — Non-custodial TEE key management & signing for AI agents.
Private keys are generated, stored, and used exclusively inside a Trusted Execution Environment (TEE). They never leave in plaintext — not to you, not to Keygenix, not to the AI.
Quick Start
1. Get your credentials
Register at keygenix.pro
Create an organization → note
orgCodeCreate a wallet → note
walletCodeGenerate two keypairs (run once):
# Use the CLI to generate keypairs (easiest)
git clone https://github.com/wallet-io/keygenix-skill
cd keygenix-skill/cli && npm install
node client.js keygen # → copy publicKey as API Auth Key
node client.js keygen # → copy publicKey as AuthKey (separate keypair)Register both public keys in the Keygenix dashboard.
2. Configure your AI client
Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"keygenix": {
"command": "node",
"args": ["/path/to/node_modules/keygenix-mcp/dist/index.js"],
"env": {
"KEYGENIX_API_PRIV_KEY": "your-api-auth-private-key-hex",
"KEYGENIX_AUTH_PRIV_KEY": "your-authkey-private-key-hex",
"KEYGENIX_ORG_CODE": "your-org-code",
"KEYGENIX_WALLET_CODE": "your-wallet-code"
}
}
}
}Once published to npm, replace with
"command": "npx", "args": ["keygenix-mcp"]
Cursor / Windsurf
Edit .cursor/mcp.json or .windsurf/mcp.json:
{
"mcpServers": {
"keygenix": {
"command": "node",
"args": ["/path/to/node_modules/keygenix-mcp/dist/index.js"],
"env": {
"KEYGENIX_API_PRIV_KEY": "...",
"KEYGENIX_AUTH_PRIV_KEY": "...",
"KEYGENIX_ORG_CODE": "...",
"KEYGENIX_WALLET_CODE": "..."
}
}
}
}OpenClaw
Add to your OpenClaw MCP config, or use the keygenix OpenClaw Skill directly.
Related MCP server: ows-mcp-wallet
Available Tools
Tool | Description |
| Generate a new secp256k1 keypair locally (no network) |
| List all keys in the wallet |
| Get details of a key by keyCode |
| Create a new key (mnemonic/private/secret) |
| Import existing key into TEE (ECIES encrypted) |
| List derived addresses for a key |
| Derive a new address for a chain |
| Sign a blockchain transaction (EVM/SOL/SUI/etc.) |
| Sign an arbitrary message |
Supported Chains
EVM · Solana · Bitcoin · Litecoin · Dogecoin · Zcash · Tron · Ripple · Sui · TON · Cardano · Aptos · Cosmos · Sei
Security Model
AI Agent
↓ calls MCP tool (no keys in prompt)
keygenix-mcp (local process)
↓ ECDSA-signed HTTPS requests
Keygenix TEE API
↓ private key never leaves enclave
Signed transaction returnedAPI Auth Private Key — signs every API request. Store in env, never hardcode.
AuthKey Private Key — authorizes sign/export. Signed locally; Keygenix only sees the public key.
Private keys — generated inside TEE, never exposed in plaintext.
Development
git clone https://github.com/wallet-io/keygenix-mcp
cd keygenix-mcp
npm install
npm run build
npm startDistribution
Channel | Command |
GitHub |
|
npm (coming soon) |
|
OpenClaw |
|
Smithery |
Links
Website: keygenix.pro
API Docs: keygenix.pro/docs.html
Skill + CLI: wallet-io/keygenix-skill
Available Tools
12 toolscreate_addressA
Derive a new address from a key for a specific chain. Idempotent — returns the existing address if already derived for the same path.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | BIP44 derivation path (e.g. m/44'/60'/0'/0/0). Uses chain default if omitted. | |
| curve | No | Elliptic curve. Uses chain default if omitted. | |
| keyCode | Yes | The key code to derive from | |
| deriveType | No | Derivation type. Uses chain default if omitted. | |
| addressType | Yes | Target address type / chain |
TDQS
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 usefully discloses idempotency ('returns the existing address if already derived for the same path'), but leaves permissions, side effects, persistence, and failure behavior unstated for a key-related derivation operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with action and scope, followed by a single idempotency caveat. Every sentence earns its place with no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter, 3-enum derivation tool with no annotations and no output schema, the description leaves the agent without return-format details beyond 'address', error behavior, or prerequisite checks. It covers purpose and idempotency but is not complete for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are already documented in the schema. The description only references 'key' and 'chain' generically and adds no parameter-level meaning beyond the schema, such as how optional path, curve, or deriveType default when omitted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('derive') and resource ('address') and scope ('from a key for a specific chain'). The resource is distinct from sibling key-management and signing tools, so an agent can route correctly without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to prefer this over siblings like get_public_key, list_addresses, or create_key. The idempotency note is behavioral, not a usage condition, so the agent must infer context entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_keyB
Create a new key in the TEE. Supports mnemonic (HD wallet), private key, or secret key types. curve is required for private (secp256k1 or ed25519) and secret (ed25519 only) key types.
| Name | Required | Description | Default |
|---|---|---|---|
| curve | No | Required for private/secret key types. Omit for mnemonic. | |
| chains | No | For mnemonic keys: chain addresses to derive on creation. Defaults to [EVM, SOL]. | |
| keyType | Yes | Type of key. 'mnemonic' = HD wallet (recommended for multi-chain). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. 'In the TEE' hints that key material is generated inside a trusted execution environment, but there is no mention of required permissions, whether the secret material is ever returned, whether the operation is idempotent, or what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, no waste, and the core action and its main variation (key types, curve rules) are front-loaded. Nothing is padded or restated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
It covers key-type and curve semantics well, but with no annotations and no output schema it says nothing about authorization requirements or what a successful creation returns (e.g. a key handle/ID), which an agent needs before calling a creation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds a real cross-parameter constraint the schema does not encode: secret keys accept only ed25519, whereas the schema enum alone would suggest either curve is valid for any non-mnemonic type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a new key in the TEE') and enumerates the three supported key types. It implicitly separates itself from import_key (creates rather than imports) but never names the sibling it must be distinguished from, so differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains the constraint that curve is required for private/secret but omitted for mnemonic, which is useful conditional guidance. However, it never says when to choose this tool over import_key or keygen, nor when each key type is appropriate, so alternatives are unaddressed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_keyA
Export a key from TEE. The key material is returned encrypted with your ephemeral public key (ECIES). Generates a local keypair, sends the public key to the server, receives encrypted key, decrypts locally.
| Name | Required | Description | Default |
|---|---|---|---|
| keyCode | Yes | The key code to export |
TDQS
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 discloses key behavioral traits: key material is returned encrypted via ECIES, the client generates an ephemeral keypair, and decryption happens locally. It doesn't specify auth requirements, rate limits, or whether export is audited/irreversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three efficient sentences that front-load the purpose and follow with the mechanism. No wasted words, though the final sentence is more procedural narrative than decision-relevant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-param tool with no output schema this is adequate, but given no annotations and the sensitivity of exporting key material, the description leaves gaps around permissions, audit implications, and error behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents the single keyCode parameter. The description adds no meaning beyond that baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Export a key from TEE') and clearly distinguishes from siblings like import_key, get_key, and keygen. An agent immediately knows this retrieves key material from a TEE.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides operational context about how the export happens but doesn't state when to use this tool versus get_key or get_public_key, nor any prerequisites or 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.
get_keyC
Get details of a specific key by keyCode.
| Name | Required | Description | Default |
|---|---|---|---|
| keyCode | Yes | The key code to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it discloses almost nothing: not what 'details' are returned, whether private key material is exposed, whether any permission is required, or whether the operation is a safe read. One sentence of pure retrieval intent is insufficient for a key-access tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, appropriate for a one-parameter lookup. It is terse to the point of under-specification rather than wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with no output schema and no annotations, the description is minimally adequate: it identifies the resource and the lookup key. It still leaves the return payload undefined, which for a 'key details' tool is a meaningful omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is documented in the schema as 'The key code to retrieve'. The description merely repeats that the lookup is by keyCode, adding no format, source, or validation detail, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get) and resource (a key identified by keyCode), so the operation is unambiguous. However, it does nothing to separate itself from siblings such as get_public_key or list_keys, so an agent must infer the distinction from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus the many sibling alternatives (get_public_key, list_keys, export_key, etc.). The only implied guidance is that a keyCode must be known in advance, which is never made explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_public_keyA
Get the derived public key for a key. For mnemonic keys, provide curve/path/deriveType. For private/secret keys, omit all deriving params.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | BIP44 derivation path (mnemonic only) | |
| curve | No | Curve (mnemonic only) | |
| keyCode | Yes | The key code | |
| deriveType | No | Derive type (mnemonic only) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It usefully discloses that behavior varies by key type (mnemonic vs private/secret), which is real behavioral information, but omits whether the key must be unlocked, what errors arise on bad derivation paths, and that this is a non-mutating read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, with the core action front-loaded and the conditional usage rule immediately following. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description should say more about the return value (format of the public key, encoding) and failure modes when derivation params are mismatched with key type. The coverage of input branching is good, but the output and error surface are left blank.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each deriving parameter already carries its own '(mnemonic only)' annotation, so the description largely restates the schema. It does add modest value by grouping the three derivation params under one conditional rule instead of leaving the agent to infer the grouping.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get the derived public key for a key') and adds the qualifier 'derived' that separates it from a plain key fetch. It does not explicitly name or contrast with the closest sibling get_key, so the distinction must be inferred from the resource name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear conditional guidance keyed to input type: mnemonic keys require curve/path/deriveType, while private/secret keys must omit those params. It does not say when to prefer this over get_key or list_keys, but the branch-by-key-type rule is genuinely actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_keyA
Import an existing key (mnemonic or private key) into Keygenix TEE. The key material is encrypted with ECIES before leaving the local machine — it is never transmitted in plaintext. Provide either 'mnemonic' (12/24 words) or 'privateKey' (hex), not both.
| Name | Required | Description | Default |
|---|---|---|---|
| curve | No | Elliptic curve for private key import (default: secp256k1). Not used for mnemonic. | |
| chains | No | Chain addresses to derive after import. Defaults to [EVM, SOL] for mnemonic. | |
| keyType | Yes | Type of key to import | |
| mnemonic | No | BIP39 mnemonic phrase (12 or 24 words). Required when keyType=mnemonic. | |
| privateKey | No | Private key as hex string. Required when keyType=private. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden and does well: it discloses ECIES encryption, no plaintext transmission, and mutual exclusivity of mnemonic/privateKey. It stops short of stating auth requirements, persistence, or what the TEE does with the key after import.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with purpose and security property, ending with the mutually-exclusive parameter constraint. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-param import tool with no output schema and no annotations, the description covers purpose, security behavior, and the key parameter constraint. It could still note authentication or where the imported key persists, but it is close to complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all five parameters including curve and chains defaults. The description reinforces the mnemonic/privateKey exclusivity and word-count constraint, but adds little beyond the schema on curve, chains, or keyType.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Import) and resource (key: mnemonic or private key) into a named system (Keygenix TEE). Clearly distinguishable from siblings like keygen (generate) and export_key.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage context: bringing an existing key into the TEE rather than generating one. It doesn't explicitly name alternatives like keygen or describe when to prefer generation, but the import-vs-generate distinction is strongly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keygenA
Generate a new secp256k1 keypair locally (no network call). Use this to create API Auth keypairs or AuthKey keypairs before registering with Keygenix.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 usefully discloses the key algorithm (secp256k1) and the no-network behavior, but says nothing about whether the private key is persisted, returned, or ephemeral, nor about permissions or side effects. For a key-gen tool with zero annotation coverage this is a meaningful gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, zero waste. The core fact (local secp256k1 generation, no network) is front-loaded, and the workflow hint follows. Nothing redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-param, no-annotation, no-output-schema tool, the description covers the algorithm and locality but omits what the caller receives (raw keypair, saved handle, etc.), which matters given siblings like get_key/get_public_key imply a stored key exists. Adequate but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the baseline this scores a 4. The description correctly implies no input is needed since generation is local and deterministic on algorithm choice.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: generate a secp256k1 keypair, and specifies it happens locally with no network call. It distinguishes itself from sibling signing/import/export tools by being the generation step, though it doesn't name a specific sibling alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an implied workflow (generate before registering with Keygenix) that gives some when-to-use context. However, it does not explicitly compare against alternatives like create_key or import_key, leaving the agent to infer whether this differs from those siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_addressesB
List all derived addresses for a key.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| size | No | Page size (default: 20) | |
| keyCode | Yes | The key code |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. 'List' implies a read operation, but it does not disclose permissions, pagination behavior, or whether 'all' conflicts with the page/size parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler or repetition. Every word contributes to stating the operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 3-parameter list tool, the essential purpose is present and the schema documents all parameters. However, the description omits usage guidance and any pagination/return context, which is noticeable given there are no annotations or output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 even without parameter details in the description. The description reinforces the keyCode context but adds no 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('derived addresses for a key'), making the operation clear. It does not explicitly distinguish itself from likely siblings like create_address or get_public_key, so it is not a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description only says what the tool does, not when to use it instead of create_address, get_public_key, or other address/key tools. No prerequisites or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_keysC
List all keys in the wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter by key name (max 32 chars) | |
| page | No | Page number (default: 1) | |
| size | No | Page size (default: 10) | |
| keyCode | No | Filter by keyCode (max 32 chars) | |
| orderDirection | No | Sort direction |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says nothing about read-only safety, pagination behavior (despite page/size parameters), result ordering, or permissions, leaving the agent to infer that this is a safe enumeration.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence that is front-loaded and wastes no words. It is efficient, though its brevity reflects under-specification rather than disciplined pruning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paginated, filterable list tool with no annotations and no output schema, the description omits how results are returned, what pagination does, and how filters interact. The schema covers parameters, but the agent still lacks operational context such as default ordering and result shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters including enum-constrained orderDirection are already documented in the schema. The description adds no additional meaning about filtering, pagination, or sorting, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('List all keys in the wallet'), which is clear enough to distinguish a bulk listing from get_key. However, it offers no explicit differentiation from key-related siblings such as get_key or list_addresses, so the agent must infer the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of when to prefer get_key or create_key, and no prerequisites or exclusions. Usage is only implied by the word 'List'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sign_messageA
Sign an arbitrary message (hex-encoded sha256 hash) using a TEE-stored key. keyCode is always required. Optionally provide address to skip HD derivation.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | BIP44 path override. Uses chain default if omitted. | |
| chain | No | Chain type — determines default curve and path. Required when address is not provided. | |
| address | No | Specific address to sign with (skips HD derivation) | |
| keyCode | Yes | Key code | |
| message | Yes | Message to sign as 64-char hex (sha256 hash of the original message) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses that the signing key is TEE-stored and that supplying an address bypasses HD derivation, but it omits what is returned (signature encoding/format), whether any unlocking or authorization is required, and any rate-limit or failure behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the operation and its most surprising constraint (hash input), followed immediately by the required/optional parameter summary. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a cryptographic signing tool with no annotations and no output schema, the description should explain the signature result format or at least confirm return shape. It covers the input contract well but leaves the outcome and any authorization requirements unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains path, chain, address, keyCode, and message. The description only restates the required/optional status of keyCode and address, adding the "skip HD derivation" rationale for address but nothing beyond the schema's own wording.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Sign an arbitrary message") and adds the critical constraint that the payload is a hex-encoded sha256 hash, which cleanly separates it from sign_transaction. It does not, however, name or rule out any sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clarifies the keyCode/address interplay ("keyCode is always required", "Optionally provide address to skip HD derivation"), which implies how to call it. But it never says when to choose this over sign_transaction, nor any prerequisites such as key state or permissions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sign_transactionB
Sign a blockchain transaction using a TEE-stored key. Supports EVM (RLP hex), SOL (base58/base64/hex), SUI, and other chains. keyCode is always required. Optionally provide address to skip HD derivation.
| Name | Required | Description | Default |
|---|---|---|---|
| tx | Yes | Unsigned transaction. EVM: 0x-prefixed RLP hex. SOL: base58/base64/hex encoded tx. | |
| path | No | BIP44 path (default: m/44'/60'/0'/0/0 for EVM). Only used with keyCode. | |
| chain | No | Transaction category. Only EVM and SOL supported. Required for mnemonic keys. Omit for private/secret key types. | |
| address | No | Specific address to sign with — optional, skips HD derivation when provided | |
| chainId | No | EVM chain ID (e.g. 1=Ethereum, 56=BSC, 137=Polygon, 42161=Arbitrum). Required for EVM. | |
| keyCode | Yes | Key code (required) | |
| encoding | No | SOL transaction encoding (default: base58) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that keys are TEE-stored and that supplying an address bypasses HD derivation, but it never says whether the signed tx is broadcast or only returned, what the caller gets back, or what permissions/errors apply to a signing operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action and mechanism. Slightly weakened by the redundant 'keyCode is always required' and the misleading chain-coverage claim, but overall tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter, no-annotation, no-output-schema mutation tool, the description covers key resolution and chain input formats but omits the return value, whether broadcasting occurs, and failure/permission behavior. Adequate but with clear gaps for a high-stakes signing operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 and the schema already documents tx, path, chain, address, chainId, keyCode and encoding. The description mostly restates required-ness and re-explains the address shortcut, and its 'SUI and other chains' claim actively conflicts with the chain enum, so it adds little net clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Sign a blockchain transaction') and names the mechanism ('TEE-stored key'), which distinguishes it from the sibling sign_message. However, it claims support for 'SUI, and other chains' while the schema enum only permits EVM and SOL, which muddies the exact scope of the tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives in-line conditions for parameters (keyCode always required, address skips HD derivation, chain required for mnemonic keys) but never states when to choose this tool over sign_message or the other key-management siblings. Usage is implied by the name rather than guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_keyC
Update a key's name or remark.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New name (max 32 chars) | |
| remark | No | New remark (max 1024 chars) | |
| keyCode | Yes | The key code to update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden. It says the tool mutates a key's name/remark but omits permissions required, whether changes are reversible, whether keyCode or key material is affected, and what the response looks like — a meaningful gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence, front-loaded with the verb and resource and free of padding. It is efficient, though its brevity contributes to the behavioral gaps noted elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity update tool with fully documented parameters and no output schema, the stated scope is adequate. However, with zero annotations and no mention of permissions or side effects, the description leaves mutation semantics unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (name max 32 chars, remark max 1024 chars, keyCode documented), so the schema already does the heavy lifting. The description names the same two fields but adds no syntax, format, or constraint detail beyond them; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (update) and resource (a key) plus the two mutable fields (name, remark), so an agent can tell it apart from get_key, list_keys or create_key. It is clear, but it makes no explicit sibling differentiation (e.g. that it does not rotate key material or change keyCode).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use context, no prerequisites, and never names an alternative tool. An agent must infer that this is the tool to reach for when renaming a key versus get_key or create_key.
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.
12 tool updates
v1.0.0- First observed
create_address - First observed
create_key - First observed
export_key - First observed
get_key - First observed
get_public_key - First observed
import_key - First observed
keygen - First observed
list_addresses - First observed
list_keys - First observed
sign_message - First observed
sign_transaction - First observed
update_key
TDQS
Scored across 12 tools
Most tools target a distinct action (import/export/sign/list/get/update), but a few boundaries require careful reading: keygen (local keypair generation) vs create_key (TEE-stored key), and export_key vs get_public_key both retrieve key material. The descriptions do clarify the distinction (local vs TEE, encrypted export vs derived public key), so misselection is unlikely but possible.
Nearly all tools follow a clean verb_noun snake_case pattern (export_key, import_key, create_address, sign_transaction, list_keys, get_key, update_key, create_key). The lone outlier is 'keygen', which drops the verb_noun convention and slightly breaks the pattern.
12 tools is well-scoped for a key management and signing server. Each tool covers a distinct lifecycle stage (generate, import, export, derive addresses, sign, CRUD) with no redundant filler.
Key lifecycle covers create, import, export, list, get, and update, plus address derivation and signing, but there is no delete_key or address removal operation, leaving a notable gap. Agents can create and manage keys but cannot clean up or revoke them.
Related MCP Connectors
Manage your blockchain infrastructure across 80+ chains with your agents.
Verified memory for AI agents. Signed assertions, billing attestation, session continuity.
Sovereign E2E cloud storage for AI agents. Zero-knowledge, RGPD-compliant.
Wallet-signed Solana RPC for AI agents. No API keys, LLM-safe amounts, pay-per-call in SOL.
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceProvides secure, policy-controlled wallet infrastructure for AI agents to autonomously manage XRP Ledger wallets and sign transactions. It features a tiered security model with encrypted key storage, a declarative policy engine, and full audit trails for compliance.-
- AlicenseAqualityDmaintenanceEnables AI agents to check balances and send transactions across multiple blockchains with automatic spending limit protection and policy enforcement.3MIT
- AlicenseAqualityAmaintenanceKeyless CEX/DEX order signing for AI trading agents (Binance, OKX, Bybit, KuCoin, Hyperliquid, Asterdex). Exchange keys stay inside an AWS Nitro Enclave — the agent gets policy-bounded signatures, never credentials. Built to survive prompt injection and supply-chain key leaks.5700 npm2MIT
- AlicenseNot gradedqualityAmaintenanceProvides a zero-knowledge credential vault for AI agents, allowing secure storage, retrieval, and management of secrets with cross-agent delegation and tamper-evident audit.MIT