Skip to main content
Glama
wallet-io
by wallet-io

keygenix-mcp

Keygenix MCP Server — Non-custodial TEE key management & signing for AI agents.

License: MIT

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

  1. Register at keygenix.pro

  2. Create an organization → note orgCode

  3. Create a wallet → note walletCode

  4. Generate 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)
  1. 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

keygen

Generate a new secp256k1 keypair locally (no network)

list_keys

List all keys in the wallet

get_key

Get details of a key by keyCode

create_key

Create a new key (mnemonic/private/secret)

import_key

Import existing key into TEE (ECIES encrypted)

list_addresses

List derived addresses for a key

create_address

Derive a new address for a chain

sign_transaction

Sign a blockchain transaction (EVM/SOL/SUI/etc.)

sign_message

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 returned
  • API 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 start

Distribution

Channel

Command

GitHub

npm install github:wallet-io/keygenix-mcp

npm (coming soon)

npx keygenix-mcp

OpenClaw

clawhub install keygenix

Smithery

smithery.ai/server/keygenix


Available Tools

12 tools
create_addressA

Derive a new address from a key for a specific chain. Idempotent — returns the existing address if already derived for the same path.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoBIP44 derivation path (e.g. m/44'/60'/0'/0/0). Uses chain default if omitted.
curveNoElliptic curve. Uses chain default if omitted.
keyCodeYesThe key code to derive from
deriveTypeNoDerivation type. Uses chain default if omitted.
addressTypeYesTarget address type / chain

TDQS

A3.5/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 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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
curveNoRequired for private/secret key types. Omit for mnemonic.
chainsNoFor mnemonic keys: chain addresses to derive on creation. Defaults to [EVM, SOL].
keyTypeYesType of key. 'mnemonic' = HD wallet (recommended for multi-chain).

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/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, 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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyCodeYesThe key code to export

TDQS

A3.8/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 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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyCodeYesThe key code to retrieve

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoBIP44 derivation path (mnemonic only)
curveNoCurve (mnemonic only)
keyCodeYesThe key code
deriveTypeNoDerive type (mnemonic only)

TDQS

A3.7/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 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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
curveNoElliptic curve for private key import (default: secp256k1). Not used for mnemonic.
chainsNoChain addresses to derive after import. Defaults to [EVM, SOL] for mnemonic.
keyTypeYesType of key to import
mnemonicNoBIP39 mnemonic phrase (12 or 24 words). Required when keyType=mnemonic.
privateKeyNoPrivate key as hex string. Required when keyType=private.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/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 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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: 1)
sizeNoPage size (default: 20)
keyCodeYesThe key code

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

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 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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoFilter by key name (max 32 chars)
pageNoPage number (default: 1)
sizeNoPage size (default: 10)
keyCodeNoFilter by keyCode (max 32 chars)
orderDirectionNoSort direction

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoBIP44 path override. Uses chain default if omitted.
chainNoChain type — determines default curve and path. Required when address is not provided.
addressNoSpecific address to sign with (skips HD derivation)
keyCodeYesKey code
messageYesMessage to sign as 64-char hex (sha256 hash of the original message)

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
txYesUnsigned transaction. EVM: 0x-prefixed RLP hex. SOL: base58/base64/hex encoded tx.
pathNoBIP44 path (default: m/44'/60'/0'/0/0 for EVM). Only used with keyCode.
chainNoTransaction category. Only EVM and SOL supported. Required for mnemonic keys. Omit for private/secret key types.
addressNoSpecific address to sign with — optional, skips HD derivation when provided
chainIdNoEVM chain ID (e.g. 1=Ethereum, 56=BSC, 137=Polygon, 42161=Arbitrum). Required for EVM.
keyCodeYesKey code (required)
encodingNoSOL transaction encoding (default: base58)

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

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 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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew name (max 32 chars)
remarkNoNew remark (max 1024 chars)
keyCodeYesThe key code to update

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 12 tool updatesv1.0.0
    • First observedcreate_address
    • First observedcreate_key
    • First observedexport_key
    • First observedget_key
    • First observedget_public_key
    • First observedimport_key
    • First observedkeygen
    • First observedlist_addresses
    • First observedlist_keys
    • First observedsign_message
    • First observedsign_transaction
    • First observedupdate_key

TDQS

B3.4/5.0

Scored across 12 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness3/5

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Provides 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.
    -
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI agents to check balances and send transactions across multiple blockchains with automatic spending limit protection and policy enforcement.
    3
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Keyless 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.
    5
    700 npm
    2
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Provides 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