Skip to main content
Glama

WalletChan MCP

Connect AI agents to WalletChan accounts with popup approval by default, plus scoped delegated execution when you opt in. Works with Claude, Cursor, Codex, and other local MCP clients.

WalletChan MCP is a local Model Context Protocol server that lets an AI assistant prepare wallet actions, route normal requests to a paired wallet for approval, and execute pre-authorized agent flows through signed ERC-7710 delegations. It is designed for the same kind of chat-based onchain workflow as Base MCP, but the normal approval path happens through WalletChan RPC with WalletConnect or MetaMask Connect instead of Base Account.

For the normal walletconnect execution profile, nothing moves onchain just because the assistant suggests it: transactions and signatures still require you to review and approve them in the WalletChan popup. For delegated agent profiles, you approve a scoped ERC-7710 delegation once, then the local agent can execute only in-scope transactions through that delegation.

What You Can Do

  • Connect your WalletChan extension to an AI assistant via WalletConnect, or connect MetaMask Mobile through MetaMask Connect.

  • Check connected wallets and portfolio balances.

  • Resolve user-provided names to EVM addresses with WalletChan extension parity: ENS/subdomains, Basenames, WNS .wei, GNS .gwei, and MegaNames .mega.

  • Swap and bridge tokens using WalletChan's first-party APIs.

  • Send transactions, ERC-5792 batch calls, sequential fallback call sets, and sign messages.

  • Create local encrypted agent wallets and choose an execution profile for future delegated/relayed execution while keeping the main-wallet approval path available.

  • Delegate scoped permissions from your main WalletChan wallet to 1Shot so an agent can relay in-scope DeFi transactions without a WalletChan popup every time.

  • Use one-time WalletChan signature approvals for reusable function-call delegations, so matching contract calls can be consumed later by the agent until the signed scope no longer covers the request.

  • Use Base MCP-style DeFi skills when a protocol skill can produce wallet calls for WalletChan approval or delegated agent execution.

  • Use Veil Cash on Base through a managed Veil MCP child process, with register/deposit calldata approved by WalletChan.

Skill

What It Supports

Morpho

Vault discovery and prepared supply/deposit flows.

Moonwell

Lending market discovery and prepared supply/borrow flows.

Aerodrome

Pool discovery, swap/liquidity preparation through supported CLI flows.

Uniswap

Pool and liquidity workflows when the skill returns executable calls.

Avantis

Perps market actions when the skill returns executable calls.

Bankr

Token discovery and supported token actions.

Virtuals

Agent/token discovery and SIWE login with WalletChan signature approval.

Veil

Local key setup, status/balances, register/deposit preparation, and WalletChan-approved public deposits.

Related MCP server: ows-mcp-wallet

Requirements

  • Node.js 20.19.0 or newer.

  • WalletChan browser extension or any other wallet supporting WalletConnect, or MetaMask Mobile for MetaMask Connect.

  • An MCP client that supports local stdio MCP servers, such as Claude Desktop, Claude Code, Cursor, or Codex.

WalletChan MCP starts a local walletchan-rpc bridge for you. You do not need to run a separate RPC process in normal use.

Install

Add WalletChan MCP to your MCP client with npx:

{
  "mcpServers": {
    "walletchan": {
      "command": "npx",
      "args": ["-y", "@walletchan/mcp"]
    }
  }
}

Restart or reload your MCP client after changing its config.

Claude Desktop

Open Claude Desktop settings, find the developer/MCP configuration file, and add:

{
  "mcpServers": {
    "walletchan": {
      "command": "npx",
      "args": ["-y", "@walletchan/mcp"]
    }
  }
}

Restart Claude Desktop. In a new chat, ask:

Connect to WalletChan.

Claude Code

Install globally:

claude mcp add --scope user walletchan -- npx -y @walletchan/mcp

Verify:

claude mcp list

Inside a Claude Code session, /mcp should show walletchan as active.

Cursor

Add this to ~/.cursor/mcp.json for global use, or .cursor/mcp.json for one project:

{
  "mcpServers": {
    "walletchan": {
      "command": "npx",
      "args": ["-y", "@walletchan/mcp"]
    }
  }
}

Restart Cursor, then open Cursor settings and confirm the WalletChan MCP server is active.

Codex

Add the local stdio server:

codex mcp add walletchan -- npx -y @walletchan/mcp

Or add it manually to your Codex MCP config:

[mcp_servers.walletchan]
command = "npx"
args = ["-y", "@walletchan/mcp"]

ChatGPT

ChatGPT custom connectors currently expect remote HTTPS MCP servers. WalletChan MCP is intentionally local because it talks to your local WalletChan extension. Use it with local MCP clients such as Claude Desktop, Claude Code, Cursor, or Codex unless you intentionally run your own private MCP relay.

First Connection

After installation, ask your assistant:

Connect to WalletChan.

The assistant should call get_pairing_uri and show the pairing result. The response includes a local pairingUrl such as http://127.0.0.1:4209/qr; open it to scan a browser QR code or copy the raw pairing URI. Clients that render MCP images may also show a QR code directly in chat. WalletConnect URIs start with wc:. MetaMask Connect URIs may use a MetaMask deep link or app link.

For WalletConnect with WalletChan:

  1. Open the extension.

  2. Go to More -> WalletConnect.

  3. Scan the browser QR, scan the chat QR if your client displayed one, or paste the URI.

  4. Approve the pairing.

After pairing, ask:

Show me my connected WalletChan wallets.

To switch wallets or force a fresh proposal, ask the assistant to get a new WalletChan pairing URI. The tool supports forceNewSession: true; this clears the selected transport session and returns a new QR/URI. The browser QR page also has a fresh URI control, or can be opened with /qr?force=true.

To switch the already-running managed RPC to MetaMask Connect without restarting MCP:

get_pairing_uri({ walletTransport: "metamask-connect", forceNewSession: true })

To switch back to WalletConnect:

get_pairing_uri({ walletTransport: "walletconnect", forceNewSession: true })

For MetaMask Connect account changes, call get_wallets after switching accounts in MetaMask Mobile. If the address still has not updated, ask MetaMask Connect to request the account explicitly:

get_pairing_uri({ walletTransport: "metamask-connect", account: "0x...", forceRequest: true })

The assistant should report the approved wallet address and chain.

Name Resolution

WalletChan MCP exposes forward name resolution tools for user-provided recipient or signer inputs:

resolve_name({ name: "vitalik.eth" })
resolve_name({ name: "name.base.eth" })
resolve_name({ name: "name.wei" })
resolve_name({ name: "name.gwei" })
resolve_name({ name: "name.mega" })

resolve_names resolves a batch. The tools support the same forward-resolution families as the extension: ENS and subdomains, Basenames under .base.eth, WNS .wei, GNS .gwei, and MegaNames .mega. They use MCP --rpc overrides first for the relevant chain, then WalletChan default RPCs. They do not reverse-resolve addresses, fetch avatars, or silently rewrite transaction inputs; agents should call resolve_name explicitly, show the resolved address when useful, then pass the returned address into wallet tools.

Try It

Once connected, try prompts like:

What's my USDC balance on Base?
Swap 5 USDC to ETH on Base with WalletChan.
Bridge 0.01 ETH from Base to Ethereum with WalletChan.
Find USDC vault options on Morpho Base, then prepare a 1 USDC deposit into the vault I choose.
Sign in to Virtuals with my WalletChan wallet.

For transactions and signatures, the assistant prepares the request and WalletChan opens a popup when the execution profile is walletconnect. Agent profiles use a local agent key plus signed delegations, so in-scope transactions do not open a popup each time.

Agent Wallets, Delegations, and 1Shot

WalletChan MCP supports three execution profiles:

Profile

What happens

walletconnect

Uses the paired WalletChan wallet and opens WalletChan popup approval for transactions/signatures.

agent:<walletId>

Uses a local encrypted agent wallet plus signed ERC-7710 delegations from the main wallet, then submits matching calls through the 1Shot relayer.

agent-eoa:<walletId>

Signs directly with the raw local agent EOA and broadcasts sequential calls. This bypasses WalletChan popup approval and is only for explicit raw-agent use.

The delegated agent flow does not fund the local agent EOA for normal DeFi actions. The main WalletChan wallet remains the delegator/source account. The agent wallet signs and submits the redelegated permission context, while 1Shot relays the transaction. That is why an unfunded agent EOA can still execute a delegated Morpho deposit from the main wallet when the signed delegation covers the prepared calls.

Create or import an agent wallet:

agent_create_wallet({ label: "Hackathon Agent" })

or:

agent_import_wallet({ privateKey: "0x...", label: "Hackathon Agent" })

No env setup is required for the normal path. MCP creates a local vault-secret file automatically on first use; private keys and signed delegation payloads are encrypted locally and never returned by tools.

Inspect and choose execution profiles:

list_execution_profiles()
set_default_execution_profile({ profileId: "agent:<walletId>" })
get_default_execution_profile()
clear_default_execution_profile()

Setting the default to agent:<walletId> makes mutating tools try delegated 1Shot execution by default. Use a per-call executionProfile: "walletconnect" override when the user wants the normal WalletChan popup path for a specific transaction. Use agent-eoa:<walletId> only when the user explicitly wants the raw local agent wallet to spend directly.

For 1Shot delegated DeFi execution, the delegation target must be the 1Shot relayer targetAddress. agent_prepare_delegation defaults to delegateMode: "oneshot-relayer" and resolves the current target automatically:

agent_prepare_delegation({
  walletId: "<walletId>",
  chain: 8453,
  amount: "10",
  label: "Base agent allowance"
})
agent_request_delegation_signature({ delegationId: "<delegationId>" })

After the WalletChan popup is approved:

agent_complete_delegation({ delegationId: "<delegationId>" })
set_default_execution_profile({ profileId: "agent:<walletId>" })

That first delegation can cover direct token-transfer-style actions, depending on its scope. DeFi protocols usually need more than a token transfer. For example, a Morpho USDC vault deposit may require a USDC approval call and a vault deposit call, so a simple daily USDC transfer scope is not enough.

When a prepared DeFi transaction needs protocol contract calls outside the active delegation, MCP preflights the call bundle and returns a structured request such as needs_function_call_delegation / needs_delegation_signature. The response includes prepareDelegationArgs and often recommendedNextArgs. The assistant should use those arguments exactly:

agent_prepare_delegation({ ...prepareDelegationArgs })
agent_request_delegation_signature({ delegationId: "<delegationId>" })

After the user approves the one-time WalletChan signature request:

agent_complete_delegation({ ...recommendedNextArgs })

This stores a reusable function-call delegation scoped to the prepared targets/selectors, such as USDC approve plus a Morpho vault deposit selector. Future matching calls can be consumed by the agent without new WalletChan popups until the signed scope, expiry, or configured limits no longer cover the request. If a future transaction targets a different contract or selector, MCP asks for a new scoped delegation instead of silently broadening authority.

Once the agent profile is active, these tools can route through the selected profile unless an executionProfile override is passed:

  • send_calls

  • send_prepared_calls

  • send_transaction

  • swap

  • bridge

  • run_base_plugin_cli({ submitPreparedCalls: true })

For Base DeFi skill flows, run_base_plugin_cli and send_prepared_calls treat the delegation delegator as the protocol user. Supported CLI write commands automatically bind owner-style arguments such as Morpho user-address and Aerodrome wallet to the main delegator address, not the local agent EOA. This prevents false insufficient-balance simulations against an unfunded agent wallet.

Confirmed 1Shot submissions always estimate before sending. When 1Shot returns a higher requiredPaymentAmount, MCP updates only the ERC-20 transfer to the 1Shot fee collector, adds a tiny fee buffer, and re-estimates, preserving protocol approvals/deposits in the bundle. If estimation still fails, MCP returns status: "estimate_failed" and does not submit a relayer task.

Use these 1Shot tools directly when debugging or building a custom flow:

  • agent_oneshot_get_capabilities

  • agent_oneshot_get_fee_data

  • agent_oneshot_relay_calls

  • agent_oneshot_get_status

For x402 hackathon resources, use agent_x402_quote and agent_x402_pay. The default agent:<walletId> path pays through the main wallet's ERC-7710 delegation only when the endpoint advertises extra.assetTransferMethod: "erc7710". x402 requires a separate delegation with delegateMode: "agent-wallet" because x402 delegated payment targets the local agent wallet address, not the 1Shot relayer target. Use agent-eoa:<walletId> only when the user explicitly wants raw agent-wallet USDC payment.

If agent_x402_quote returns delegatedPaymentSupported: false, the endpoint cannot be paid through the delegated agent path directly. Do not retry with agent-eoa unless you explicitly want to spend the agent wallet's own USDC. For future demos, prefer a WalletChan-owned x402 endpoint that advertises ERC-7710 delegated payment directly.

How Base MCP-Style Skills Work

WalletChan MCP includes skill resources and tool adapters for Base MCP-style plugin workflows.

When a Base skill says to use Base MCP wallet tools such as send_calls, sign, or an approval URL, the assistant should use WalletChan MCP tools instead:

  • Base send_calls -> WalletChan send_calls

  • Prepared protocol transaction response -> WalletChan send_prepared_calls

  • Base sign -> WalletChan sign or sign_siwe

  • Base approval link -> WalletChan popup approval

Some protocol skills fetch data from protocol APIs, run protocol CLIs, or call protocol MCP servers. WalletChan MCP provides narrow, allowlisted helpers for common cases:

  • web_request for allowlisted HTTPS protocol APIs.

  • run_base_plugin_cli for pinned protocol CLIs such as Morpho and Aerodrome.

  • list_remote_mcp_tools and call_remote_mcp_tool for allowlisted remote protocol MCP profiles.

  • start_remote_mcp_siwe_login and complete_remote_mcp_siwe_login for SIWE login flows that must preserve the exact challenge message.

  • list_protocols, list_protocol_tools, and call_protocol_tool for managed protocol integrations such as Veil MCP.

WalletChan MCP does not run arbitrary shell commands, proxy arbitrary MCP servers, or call arbitrary web hosts from a skill file.

Veil Cash

WalletChan MCP can start a managed Veil MCP child process for Veil Cash on Base. Public Veil actions use Veil MCP to prepare calldata, then WalletChan MCP submits that calldata through the existing WalletChan popup approval path.

Useful prompts:

Check my Veil status.
Register my WalletChan account with Veil.
Prepare a 20 USDC Veil deposit and submit it through WalletChan.

Veil key material is managed by Veil MCP locally, not by the WalletChan extension vault. WalletChan MCP launches Veil MCP in a controlled working directory so .env.veil and .veil-x402-receipts.json are not written into your project or random MCP client launch directories. Override the directory with WALLETCHAN_MCP_VEIL_DIR. WalletChan MCP also passes a Base RPC_URL to Veil; it is inherited from the global WalletChan MCP Base RPC override (--rpc base=<url> or WALLETCHAN_MCP_RPC_OVERRIDES=base=<url>) or defaults to https://base.drpc.org.

Veil x402 payment submits through the Veil relay and does not open a WalletChan popup. Use veil_x402_quote first, then call veil_pay_x402 with a tight maxPayment and confirm: true after the user approves the exact spend. WalletChan MCP blocks under-minimum relay attempts before calling Veil: normal withdrawals require at least 0.001 ETH or 0.01 USDC, and x402 payments require a supported quote of at least 0.01 USDC. Other private Veil relay tools such as withdraw, transfer, and UTXO consolidation remain disabled by default; enable them only for explicit user-controlled flows with WALLETCHAN_MCP_VEIL_PRIVATE_ACTIONS=true.

If the hosted Veil relay returns Gas price too high, try again later, WalletChan MCP surfaces a dedicated error explaining that the relay refused the private withdrawal because Base gas is above the relay cap. WalletChan MCP cannot override that cap with --rpc base=...; x402 callers should check for an already-funded payer once, then wait before retrying if none can cover the payment.

Advanced Configuration

By default WalletChan MCP:

  • starts a managed walletchan-rpc child process;

  • listens on http://127.0.0.1:4209;

  • uses Base as the default chain;

  • uses WalletChan's first-party API at https://walletchan.com/api.

Use an existing RPC bridge instead of the managed child process:

walletchan-mcp --no-managed-rpc --rpc-url http://127.0.0.1:4209

Expose more chains to WalletChan RPC:

walletchan-mcp --chain base --chain ethereum --chain polygon

Start the managed RPC with MetaMask Connect instead of WalletConnect:

walletchan-mcp --wallet-transport metamask-connect

The same default can be set with WALLETCHAN_MCP_WALLET_TRANSPORT=metamask-connect.

Use a different local RPC port:

walletchan-mcp --rpc-url http://127.0.0.1:4210

Bind the managed RPC to all interfaces inside an isolated container while Docker publishes the port only to host loopback:

walletchan-mcp --rpc-host 0.0.0.0

Disable protocol helper surfaces:

walletchan-mcp --disable-plugin-cli --disable-web-request

Disable the managed Veil MCP integration:

walletchan-mcp --disable-veil

Use a persistent global Veil MCP binary for faster startup:

npm install -g @veil-cash/mcp@0.2.1
walletchan-mcp --veil-command veil-mcp

Use a dedicated Veil data directory:

walletchan-mcp --veil-dir ~/.walletchan-mcp/veil

Use a dedicated Base RPC for both WalletChan RPC and Veil:

walletchan-mcp --rpc base=https://your-base-rpc.example

Use dedicated RPCs for name resolution:

walletchan-mcp --chain ethereum --rpc ethereum=https://your-ethereum-rpc.example
walletchan-mcp --chain megaeth --rpc megaeth=https://your-megaeth-rpc.example

Ethereum RPC is used for ENS, Basenames, .wei, and .gwei. MegaETH RPC is used for .mega.

Add an extra allowlisted HTTPS host for protocol data:

walletchan-mcp --allow-web-host api.example.org

Agent Wallet Storage and Recovery

WalletChan MCP can create or import local agent wallets for delegated agent execution work. Agent wallet metadata, private keys, and signed delegation payloads are stored encrypted locally.

No env setup is required for the normal path. On first agent wallet create/import, MCP generates a random vault-secret file under the agent-wallet data directory, locks it down with best-effort 0600 permissions, and uses it to encrypt the local key vault. WALLETCHAN_MCP_AGENT_VAULT_SECRET and WALLETCHAN_MCP_AGENT_VAULT_SECRET_FILE remain advanced overrides for migration/recovery.

Agent wallets are stored under the WalletChan MCP app-data root in an agent-wallets directory by default. Override the exact directory with WALLETCHAN_MCP_AGENT_WALLET_DIR.

To intentionally forget all local agent wallets/delegations and start fresh, call:

agent_reset_vault({ confirm: true, confirmationText: "RESET_AGENT_VAULT" })

This does not require the old vault secret. The next agent_create_wallet or agent_import_wallet call creates a new local vault-secret file automatically.

If an old agent-wallets.json exists but the matching vault secret is unavailable, MCP may still list the public wallet metadata. Those agent profiles are marked locked, and the effective default falls back to walletconnect until you restore the old secret or run agent_reset_vault.

Raw agent EOA helpers:

Show the Base USDC balance for my raw agent wallet.
Use the raw agent wallet to send this prepared transaction.

The raw agent-eoa path signs locally and broadcasts directly to the configured chain RPC. It does not open a WalletChan popup, and sequential raw calls are not atomic. Use the walletconnect profile whenever the user wants their main WalletChan wallet approval flow.

Security Model

  • WalletChan MCP never receives your main WalletChan private keys or seed phrase. Local agent wallet keys are created or imported into MCP only when you use agent-wallet tools.

  • The walletconnect profile does not approve transactions by itself. Transaction and signature approval happens in the WalletChan extension.

  • The delegated agent profile can execute without a per-transaction popup only after the main WalletChan wallet signs an ERC-7710 delegation. Execution remains bounded by the signed delegation scope, target, selectors, expiry, and configured limits.

  • Signed delegation payloads are stored encrypted because they authorize future in-scope execution.

  • Local agent wallet private keys are encrypted on disk with AES-256-GCM and PBKDF2-SHA256 using the local vault-secret file or an advanced env override; no MCP tool returns private keys.

  • Raw agent-eoa tools sign locally and broadcast directly from the agent wallet. They must only be used when the user explicitly chooses the raw agent wallet.

  • Protocol helpers are allowlisted and constrained.

  • CLI helpers use pinned packages, structured arguments, no shell execution, timeouts, and output caps.

  • web_request only supports allowlisted HTTPS hosts.

  • send_prepared_calls refuses protocol prepare responses with error-level warnings unless the user explicitly chooses to continue.

  • Managed protocol integrations run in controlled working directories. Veil .env.veil stays in the managed Veil directory unless you override it.

  • Veil x402 relay payment requires a quoted cap and explicit confirmation; broader Veil private relay actions are disabled by default because they do not use WalletChan popup approval.

The normal wallet-transport approval path is:

AI assistant -> WalletChan MCP -> local walletchan-rpc -> WalletConnect or MetaMask Connect -> wallet approval UI -> user approval

The delegated agent execution path is:

AI assistant -> WalletChan MCP agent profile -> signed ERC-7710 delegation -> 1Shot relayer -> in-scope onchain execution

Troubleshooting

The assistant cannot find WalletChan tools

Restart or reload your MCP client after adding the config. In Claude Code, run /mcp. In Cursor, check Settings -> MCP.

The assistant shows a pairing URI but pairing does not complete

Make sure your wallet is unlocked, open the returned pairingUrl or paste the full raw URI, and approve the pairing in the wallet. If the URI expired, ask the assistant to connect again.

The assistant does not show a QR code

WalletChan MCP returns a standard MCP image block for WalletConnect and MetaMask Connect pairing URIs, but terminal clients may show only text or an image placeholder. Use the raw URI in the same response as the fallback.

For a scannable QR that does not depend on chat image rendering, open the pairingUrl returned by get_pairing_uri, usually http://127.0.0.1:4209/qr.

A transaction tool says needs_pairing

The selected wallet transport session was closed or expired. Pair again with the URI returned by the tool. For prepared DeFi transactions, ask the assistant to prepare a fresh transaction before resubmitting.

An old agent wallet still appears

Agent wallet public metadata is stored in agent-wallets.json, so it may still be listed after removing an old vault secret. If the matching secret is unavailable, the profile is marked locked and does not remain the effective default. To intentionally forget local agent wallets/delegations and start fresh, call:

agent_reset_vault({ confirm: true, confirmationText: "RESET_AGENT_VAULT" })

A protocol skill cannot fetch data

Some DeFi skills depend on external protocol APIs, protocol CLIs, or remote MCP servers. WalletChan MCP includes allowlisted helpers for common Base skill patterns, but it intentionally does not provide arbitrary network or shell access. If a future skill needs a new host, CLI runner, or MCP profile, it should be added explicitly.

Local Development

From this repository:

pnpm install --frozen-lockfile
pnpm build

Use the built local server:

{
  "mcpServers": {
    "walletchan": {
      "command": "node",
      "args": ["/path/to/walletchan-mcp/dist/index.js"]
    }
  }
}

For local iteration:

pnpm dev

Maintainer documentation

See _docs/IMPLEMENTATION.md for architecture and release checks.

Available Tools

65 tools
agent_complete_delegationComplete Agent DelegationA

Complete a pending agent delegation after the WalletChan signature request is approved, verify the signer, and store the signed delegation encrypted in the agent vault.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestIdNoOptional signature request ID. Defaults to the request stored by agent_request_delegation_signature.
signatureNoOptional direct signature override. Normally omit and let WalletChan MCP read the tracked signature request.
delegationIdYesDelegation ID returned by agent_prepare_delegation.
pendingActionIdNoOptional pending delegated action to submit after activation. Defaults to the pending action associated with this delegation, when one exists.
submitPendingActionNoWhether to submit an MCP-created pending agent action after the delegation activates. Defaults to true when a matching pending action exists.

TDQS

A3.8/5.0
Behavior4/5

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

No annotations are supplied, so the description must carry the behavioral load, and it does disclose three concrete facts: this is a mutation ('Complete'), it verifies the signer, and it persists the signed delegation encrypted in the agent vault. It omits auth/permission requirements, idempotency, and failure behavior, which keeps it from a 5.

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; the action verb and precondition lead, followed by the side effects. Slightly dense with three clauses, but every clause carries information.

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

Completeness3/5

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

For a multi-step mutation with no annotations and no output schema, the description covers the workflow position and side effects but says nothing about what happens on a bad signature, whether repeated calls are safe, or what the caller receives. Adequate but with visible gaps.

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 documents all five parameters including defaults and the signature override semantics. The description adds no additional meaning about requestId, signature, pendingActionId, or submitPendingAction, so the 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 and resource ('Complete a pending agent delegation') and adds the two internal steps (verify signer, store encrypted in agent vault). The precondition 'after the WalletChan signature request is approved' positions it in the workflow relative to agent_prepare_delegation and agent_request_delegation_signature, though it never names those siblings explicitly.

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 a clear triggering context: run this only after the WalletChan signature request has been approved. It does not state exclusions or name an alternative for the case where the request is not yet approved, so it falls short of explicit when/when-not guidance.

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

agent_create_walletCreate Agent WalletB

Create a local encrypted agent wallet. Creates a local vault-secret file automatically when needed. Returns address and profile IDs, never the private key.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelNoOptional display label for the agent wallet.

TDQS

B3.2/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, and it does add real behavioral context: a vault-secret file is created automatically, and the private key is deliberately never returned. It is silent on important traits for a key-generating mutation, such as whether it fails or overwrites when a wallet already exists, where state is persisted, and whether the operation is idempotent.

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 with no filler, and the core purpose plus the two most load-bearing facts (auto vault-secret creation, no private key returned) are front-loaded. It could be marginally tighter, but every sentence earns its place.

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?

With no output schema and no annotations, the description does the important work of declaring the return values (address and profile IDs), which is exactly what an agent needs to chain into later calls. It stops short of clarifying what 'profile IDs' refer to relative to the execution-profile siblings, but the essentials are covered.

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

Parameters3/5

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

There is a single optional parameter ('label') and schema description coverage is 100%, so the schema already documents it fully. The description adds no extra meaning about the label's role (e.g., whether it must be unique or whether it can be changed later), so the 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 and resource ('Create a local encrypted agent wallet'), and the qualifier 'local encrypted' distinguishes it from a remote/custodial flow. However, it never contrasts itself with the closest sibling, agent_import_wallet, so an agent must infer which of the two wallet-creation paths to pick.

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 at all: no statement of when to call this versus agent_import_wallet, versus agent_list_wallets/agent_get_wallet, and no prerequisite (e.g., does an existing wallet need deletion or reset first?). Usage is only implied by the verb 'create'.

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

agent_delete_delegationDelete Agent DelegationA

Delete a locally stored agent delegation session. This does not revoke onchain permissions; it only removes MCP's local artifact. Requires confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true to delete the local delegation.
delegationIdYesDelegation ID.

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does it well: it explicitly discloses that onchain permissions are NOT revoked and only the MCP local artifact is removed, plus the confirm=true guard. It stops short of stating whether deletion is reversible or what a successful response looks like.

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, front-loaded with the action and scope, then the critical non-effect, then the confirmation requirement. 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 deletion tool with no annotations and no output schema, the description covers the highest-risk ambiguity (that this is a local-only delete). Minor gaps remain around idempotency and success/failure signaling, but nothing that would cause a wrong 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 both parameters are already documented. The description adds the confirm=true requirement but, since it matches the schema, it is baseline-level rather than additive.

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+resource ('Delete a locally stored agent delegation session') and immediately scopes it against the onchain semantics, so it is distinguishable from siblings like agent_delete_wallet or agent_list_delegations.

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?

Gives useful context about the effect (local-only, not onchain) but never states when to use this versus related tools such as agent_get_delegation or agent_delete_wallet. Usage is implied rather than routed.

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

agent_delete_walletDelete Agent WalletA

Delete a local encrypted agent wallet and its private key material. Requires confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true to delete the wallet.
walletIdYesAgent wallet ID.

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 burden. It does disclose a real behavioral trait beyond the schema: private key material is destroyed, and a confirm flag is mandatory. However, it omits irreversibility, what happens to any on-chain funds, and permission/auth requirements for a destructive 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 short sentences, zero filler, with the destructive scope front-loaded followed immediately by the required precondition.

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 destructive, irreversible tool with no annotations and no output schema, the description covers what is deleted and the confirm gate but leaves out the risk context (key loss, funds handling, auth). Adequate but with meaningful gaps for a delete 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 coverage is 100%, so both walletId and confirm are already documented in the schema, and the description only restates the confirm requirement. Baseline 3 applies since the schema does the heavy lifting and the description adds no syntax or format detail.

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 ('Delete') and resource ('local encrypted agent wallet'), and adds the scope 'and its private key material.' This clearly separates it from siblings like agent_create_wallet, agent_import_wallet, and agent_reset_vault.

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 gives a prerequisite ('Requires confirm=true') but no when-to-use guidance, no warning about irreversible loss of funds/keys, and no routing to alternatives such as agent_reset_vault or agent_delete_delegation for related cleanup.

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

agent_eoa_get_balanceGet Agent EOA BalanceA

Read native or ERC-20 balance for a raw local agent EOA profile. Does not require WalletConnect pairing.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNoConfigured chain name or ID. Defaults to Base when configured.
tokenNoOptional ERC-20 token address. Omit for native balance.
walletIdNoAgent wallet ID. Alternative to profileId.
profileIdNoRaw agent EOA profile ID, e.g. agent-eoa:<walletId>. The alias agent-eoa works only when exactly one agent wallet exists.

TDQS

A3.6/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 this is a read operation and that WalletConnect pairing is not needed, but it omits auth requirements, whether the raw profile must exist locally, rate limits, and error behavior. Adequate but not rich for a zero-annotation tool.

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 with zero filler, front-loading the core action and following with the pairing constraint. Every sentence earns its place.

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 read-only balance query with no output schema, the description conveys what is being fetched (native or ERC-20 balance) at a sufficient level. It could say more about the return shape or default-chain behavior, but with full schema coverage of the inputs, the definition is largely 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 description coverage is 100%, with chain, token, walletId, and profileId all documented in the schema itself (including the agent-eoa alias rule and Base default). The description adds no parameter-level meaning beyond that, so the 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?

The description gives a specific verb (Read) and resource (native or ERC-20 balance) scoped to a 'raw local agent EOA profile', which is a meaningful qualifier. It does not explicitly distinguish itself from siblings like get_portfolio_balances, veil_get_balances, or veil_x402_payer_balances that also report balances, so it stops short of 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 Guidelines3/5

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

The line 'Does not require WalletConnect pairing' implies when this tool is applicable (raw/local profiles without a paired session), which is a useful contextual signal. However, there is no explicit when-to-use vs alternatives guidance, no exclusions, and no routing to any of the several sibling balance tools.

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

agent_eoa_send_callsSend Agent EOA CallsA

Sign and broadcast calls sequentially from a raw local agent EOA. This path is not atomic and bypasses WalletChan popup approval.

ParametersJSON Schema
NameRequiredDescriptionDefault
callsYesOrdered raw calls to submit sequentially.
chainNoConfigured chain name or ID. Defaults to Base when configured.
walletIdNoAgent wallet ID. Alternative to profileId.
profileIdNoRaw agent EOA profile ID, e.g. agent-eoa:<walletId>. The alias agent-eoa works only when exactly one agent wallet exists.

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose two critical traits: the path is non-atomic (partial-failure risk across sequential calls) and it bypasses WalletChan popup approval (no interactive user confirmation). These are exactly the risk-relevant facts an agent needs. It omits prerequisites/permissions and what happens on mid-sequence failure, keeping it short of a 5.

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 tightly written sentences, front-loaded with the core action and followed by the key caveats. No filler and nothing redundant with the structured fields.

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 no-annotation, no-output-schema mutation tool, the description covers the most important behavioral facts (non-atomic, bypasses approval) and the schema fully documents parameters. It leaves out failure/revert behavior and auth prerequisites, so it is strong but not exhaustive.

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 documents calls, chain, walletId, and profileId, including the agent-eoa alias rule. The description adds only 'sequentially' as ordering semantics, which is the baseline-3 situation where the schema does the heavy lifting.

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 pair (sign and broadcast) and resource (calls) with a clear source (raw local agent EOA). It scopes the operation ('sequentially', 'from a raw local agent EOA'), which helps separate it from generic send paths, but it never names siblings like agent_eoa_send_transaction or send_calls to make the routing explicit.

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 line 'This path is not atomic and bypasses WalletChan popup approval' implies when this path is appropriate (agent-driven, no user confirmation) and hints at a tradeoff, but it does not state when to prefer an alternative such as send_calls or agent_oneshot_relay_calls. Usage is implied rather than prescribed.

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

agent_eoa_send_transactionSend Agent EOA TransactionA

Sign and broadcast a transaction directly from a raw local agent EOA. This bypasses WalletChan popup approval and should be used only when the user explicitly chose the raw agent wallet.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNo
gasNo
dataNoCalldata hex. Defaults to 0x.
chainNoConfigured chain name or ID. Defaults to Base when configured.
valueNoHex or decimal wei string. Defaults to 0x0.
gasPriceNo
walletIdNoAgent wallet ID. Alternative to profileId.
profileIdNoRaw agent EOA profile ID, e.g. agent-eoa:<walletId>. The alias agent-eoa works only when exactly one agent wallet exists.
maxFeePerGasNo
maxPriorityFeePerGasNo

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 transaction bypasses popup approval, a critical safety-relevant behavior. However it does not state that broadcasting is irreversible, what wallet/profile prerequisites are required, or how gas defaults are applied — gaps that matter for an unguarded 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.

Conciseness5/5

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

Two sentences, zero waste. The primary action is front-loaded and the usage constraint follows immediately.

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 10-parameter, zero-required, no-annotation transaction-signing tool with no output schema, the description covers the routing decision well but leaves behavioral risk (irreversibility, required wallet setup) and half the parameters unexplained.

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

Parameters2/5

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

Schema description coverage is only 50%: data, chain, value, walletId and profileId are documented, but to, gas, gasPrice, maxFeePerGas and maxPriorityFeePerGas are not. The description adds no parameter meaning at all, so it fails to compensate for the undocumented half.

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 ("Sign and broadcast a transaction") and scopes it to a raw local agent EOA, which implicitly contrasts with the popup-approval path used by siblings like send_transaction. It does not name an alternative tool explicitly, so sibling differentiation is by contrast rather than by name.

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

Usage Guidelines4/5

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

It gives an explicit selection condition: use only when the user explicitly chose the raw agent wallet. It also names the behavioral alternative (WalletChan popup approval) that this bypasses, but does not name a specific sibling tool to use instead.

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

agent_get_delegationGet Agent DelegationA

Get one local agent delegation. By default returns metadata only; pass includePayload=true to include encrypted-vault payload after decrypting locally.

ParametersJSON Schema
NameRequiredDescriptionDefault
delegationIdYesDelegation ID.
includePayloadNoIf true, include typed data and signed delegation payload. This never includes private keys.

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 does disclose two real behavioral facts: metadata-only by default, and that payload retrieval involves local decryption. It omits permission/auth requirements, error modes, and what the returned metadata contains, so it is only partially transparent for a zero-annotation tool.

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 then the payload nuance. No filler, no repetition, and the most decision-relevant clause comes first.

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?

There is no output schema and no annotations, so the description should ideally say more about the returned metadata shape. It adequately covers the default-vs-payload switch and the security-relevant decryption step, but leaves auth requirements and return contents unspecified.

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 both parameters are already documented in the schema and the baseline is 3. The description adds one genuine nuance beyond the schema by tying includePayload=true to local decryption, but the remainder restates the schema's default-vs-payload distinction.

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 one local agent delegation"), and the singular "one" implicitly separates it from the sibling agent_list_delegations. It does not name any sibling or alternative explicitly, so an agent must infer the single-vs-list routing itself.

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 explains the default behavior and how to escalate with includePayload=true, which is useful invocation guidance. It gives no when-to-use framing against agent_list_delegations or the prepare/complete/delete delegation siblings, and states no prerequisites.

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

agent_get_walletGet Agent WalletA

Get one local agent wallet metadata record and its profile IDs. Does not decrypt or return the private key.

ParametersJSON Schema
NameRequiredDescriptionDefault
walletIdYesAgent wallet ID.

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral burden, and it does disclose a security-relevant trait: the private key is neither decrypted nor returned, and the record is a 'local' one. It still omits auth/permission requirements and not-found behavior, but the secret-handling disclosure is meaningful context an agent cannot infer from the schema.

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

Conciseness5/5

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

Two short sentences with zero filler; the retrieval scope is front-loaded and the security caveat follows immediately.

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

Completeness4/5

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

No output schema exists, so the description usefully names the return payload (metadata record plus profile IDs) and its one exclusion (private key). It is nearly complete for a single-record getter, missing only error/not-found and permission context.

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% for the single walletId parameter, so the schema already documents it. The description adds nothing about ID format or source, leaving the baseline 3 appropriate.

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

Purpose5/5

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

States a specific verb (Get), a specific resource (one local agent wallet metadata record) and scopes the return (profile IDs), which cleanly separates it from agent_list_wallets and the deletion/creation siblings. An agent can tell what it retrieves without opening the schema.

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 word 'one' implies lookup-by-ID rather than listing, so usage is implied, but the description never states when to prefer this over agent_list_wallets or what precondition (existing walletId) is required. No alternatives or exclusions are named.

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

agent_import_walletImport Agent WalletA

Import a local encrypted agent wallet private key. Creates a local vault-secret file automatically when needed. Returns address and profile IDs, never the private key.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelNoOptional display label for the agent wallet.
privateKeyYesAgent wallet private key. This is accepted only for import and is encrypted immediately; it is never returned by WalletChan MCP.

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does well: it discloses a side effect ('Creates a local vault-secret file automatically when needed'), the return contents ('address and profile IDs'), and a security guarantee ('never the private key'). It omits idempotency, overwrite behavior when a wallet already exists, and permission requirements, keeping it short of a 5.

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 the action, then side effect, then return guarantee. No filler and every sentence earns its place.

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

Completeness4/5

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

No output schema exists, and the description compensates by naming what is returned (address and profile IDs) and what is not (the private key). It covers the core behavior for an import operation, though it could say more about error/duplicate-wallet handling.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters, including that the private key is encrypted immediately and never returned. The description adds a security note but no syntax or format detail, and never mentions the optional 'label' parameter. 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?

The description states a specific verb and resource: 'Import a local encrypted agent wallet private key.' This is clear and distinguishable from other verbs, but it never explicitly contrasts with the nearby sibling agent_create_wallet, leaving the import-vs-create distinction 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 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 prerequisites, and no named alternative despite obvious siblings like agent_create_wallet. The usage is only weakly implied by the verb 'Import', which is not enough routing help.

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

agent_list_delegationsList Agent DelegationsB

List local agent delegation metadata. Signed delegation payloads remain encrypted and are not returned.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoOptional status filter.
chainIdNoOptional chain ID filter.
walletIdNoOptional agent wallet ID filter.

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 burden. It does disclose the key behavioral trait that signed delegation payloads remain encrypted and are not returned, which is genuinely useful. However, it says nothing about permissions, scope (local only), pagination, or ordering, so a read operation's behavioral surface is only partially covered.

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, no filler. The most important constraint (encrypted payloads not returned) is front-loaded after the core action.

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?

Covers the essentials for a list tool: what it lists and what it does not return. But with no annotations and no output schema, it could usefully say what the metadata includes (delegation ID, status, chain) and whether results are scoped to the local agent. Adequate but with clear gaps for a tool in a crowded delegation lifecycle family.

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?

All three filter parameters are already documented at 100% schema coverage with clear descriptions and an enum for status. The description adds no filter semantics, but the schema fully supplies them, so the baseline for high coverage applies. Slight uplift over pure baseline because the description clarifies these are optional filters in effect.

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 a specific resource (local agent delegation metadata), which is clear. It hints at the sibling boundary with agent_get_delegation (single vs. list) but does not explicitly distinguish itself from agent_get_delegation or the other delegation lifecycle tools.

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 use this versus alternatives such as agent_get_delegation, agent_prepare_delegation, or the request/complete signature tools. The description reads as a bare statement of behavior with no routing context.

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

agent_list_walletsList Agent WalletsA

List local agent wallet metadata and profile IDs. Does not decrypt or return private keys.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 a safety-relevant behavior ('Does not decrypt or return private keys') and that it is read-only in nature, but says nothing about auth requirements, vault lock state, or behavior when no wallets exist.

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 short sentences, front-loaded with the resource and scope, followed by the one negative constraint that matters. Every sentence earns its place.

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 zero-parameter read-only listing with no output schema, the description covers what is returned (wallet metadata and profile IDs) and what is excluded (private keys). It is nearly complete; a note on when the list may be empty or how wallets are ordered would close the remaining gap.

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, which is the baseline for a 4. There are no parameters whose semantics could be clarified, so nothing more is required here.

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: listing local agent wallet metadata and profile IDs. Clear and unambiguous. However, it does not distinguish itself from sibling tools like get_wallets, agent_get_wallet, or agent_list_delegations, so sibling differentiation is absent.

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 when-to-use guidance, no prerequisites, and no named alternatives. An agent cannot tell from the description when to choose this over get_wallets or agent_get_wallet; the only implicit signal is that it lists rather than fetches a single wallet.

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

agent_oneshot_get_capabilitiesGet 1Shot CapabilitiesC

Fetch 1Shot public relayer capabilities for one or more chains. agent_prepare_delegation resolves targetAddress automatically when delegateMode is oneshot-relayer.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainIdsNoChain IDs to query. Defaults to Base (8453).

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. 'Fetch' implies a read, but it does not describe what a capability payload contains, whether any auth or registration is required, or whether results are cached/rate-limited.

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

Conciseness4/5

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

Two short sentences with the primary action front-loaded. The second sentence is slightly tangential but still earns its place as a related-tool note; nothing is padded.

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 do more to explain what capabilities are returned and why an agent needs them before relaying. It is minimally adequate for a zero-required-param read tool but leaves the consumer to infer the value.

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

Parameters3/5

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

Schema coverage is 100% and the single chainIds parameter is fully documented in the schema, including the Base 8453 default. The description's 'one or more chains' restates the schema without adding format or syntax detail, so 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?

The description states a specific verb and resource ('Fetch 1Shot public relayer capabilities') with the scope 'for one or more chains'. This distinguishes it from the other oneshot siblings (fee data, relay calls, status), though it doesn't name them explicitly.

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 call this versus agent_oneshot_get_fee_data, agent_oneshot_relay_calls, or agent_oneshot_get_status. The second sentence only cross-references agent_prepare_delegation's behavior, which is context, not usage guidance for this tool.

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

agent_oneshot_get_fee_dataGet 1Shot Fee DataC

Fetch 1Shot public relayer fee data for a chain/payment token pair.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNoPayment token address. Defaults to Base USDC when chainId is Base.
chainIdNoChain ID. Defaults to Base (8453).

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. 'Public relayer fee data' implies a read with no auth, but it does not disclose return format, whether fees are cached/time-sensitive, rate limits, or freshness, which matters for fee estimation.

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 zero filler. It is appropriately sized, though it is so terse that it omits useful routing context rather than being over-verbose.

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 two-optional-parameter read tool with full schema coverage, the description is minimally adequate: purpose is clear, but with no annotations and no output schema the agent gets no signal about return shape or behavior. Adequate but with clear gaps.

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 both parameters (token, chainId) are fully documented in the schema, including their defaults. The phrase 'chain/payment token pair' merely restates those two params and adds no syntax or format detail beyond the schema, so the 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 (Fetch), resource (1Shot public relayer fee data), and scope (chain/payment token pair). An agent can tell this apart from siblings like agent_oneshot_relay_calls or agent_oneshot_get_status, though the description doesn't explicitly contrast them.

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 when-to-use, when-not-to-use, or alternative guidance is given. The description only says what is fetched, not when an agent should call it (e.g., before relaying a call to estimate cost) versus checking capabilities or status.

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

agent_oneshot_get_statusGet 1Shot StatusB

Poll 1Shot public relayer status for a submitted task ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
logsNoWhether to include receipt logs.
taskIdYes0x-prefixed 32-byte 1Shot task ID.

TDQS

B3.1/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. It discloses one useful trait, that this queries a public relayer (implying no auth), but says nothing about whether the call blocks or returns immediately, polling/rate-limit behavior, or what a terminal vs pending status looks like. That is a significant gap for a polling 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; the resource and the required input are both in the first clause. It is efficient, though the brevity borders on under-specification given the tool's polling semantics.

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?

No output schema and no annotations, so the description is the only source of behavioral and return information, and it omits both. An agent cannot tell what status values to expect, whether the task is complete, or whether to keep polling, which is exactly what a status-check tool needs to convey.

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

Parameters3/5

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

Schema coverage is 100% and both parameters are documented in the schema (taskId format, logs flag). The description only alludes to taskId and says nothing about the logs parameter, so it adds no meaning beyond the schema. 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 (poll), resource (1Shot public relayer status), and key input (submitted task ID), which distinguishes it from agent_oneshot_relay_calls (submission) and agent_oneshot_get_capabilities/get_fee_data (static info). It does not explicitly name those siblings, so the differentiation is implied rather than stated.

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?

'for a submitted task ID' implies the usage context: this is the follow-up call after relay_calls has accepted a task. However, there is no explicit when-to-use/when-not, no named alternative, and no guidance on how often to poll or when to stop.

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

agent_oneshot_relay_callsRelay Agent Calls With 1ShotA

Build, estimate, or submit an ERC-7710 delegated transaction bundle through the 1Shot public relayer. Requires an active 1Shot-compatible agent delegation whose delegate equals the relayer targetAddress. Uses preview mode unless confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
memoNoOptional opaque memo echoed by 1Shot status.
callsYesExecutions to redeem through the signed delegation.
chainNoConfigured chain name or ID. Defaults to Base when configured.
submitNoSet false to build and estimate without submitting.
taskIdNoOptional 0x-prefixed 32-byte task ID.
confirmNoMust be true to submit to the relayer.
contextNoOptional signed 1Shot price-lock context from a recent estimate.
walletIdNoAgent wallet ID. Alternative to profileId.
profileIdNoDelegated agent profile ID, e.g. agent:<walletId>. The alias agent works only when exactly one agent wallet exists.
delegationIdNoSpecific active delegation ID. Defaults to the active delegation for the profile and chain.
estimateOnlyNoIf true, estimate but do not submit.
paymentTokenNoStablecoin payment token for the relayer fee. Defaults to a token from 1Shot capabilities, preferring Base USDC on Base.
skipEstimateNoDebug only. If true with confirm=true, submit without first fetching a fresh estimate/context.
destinationUrlNoOptional webhook destination URL for 1Shot status updates.
validateDelegateNoSet false to skip relayer targetAddress validation. Defaults to true.
includeFeePaymentNoWhether to prepend the payment token transfer to the relayer feeCollector. Defaults to true.
paymentAmountUnitsNoOptional initial relayer fee payment in payment token base units. If omitted, MCP uses relayer_getFeeData minFee and adjusts after estimate when needed.

TDQS

A4.1/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, and it does disclose the two most important traits: the dry-run/preview default and the confirm=true gate required to actually submit. It omits failure modes, fee-charging behavior, and irreversibility of a relayed bundle, which keeps it from a 5.

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, zero padding, with the core action front-loaded and the prerequisite and default-mode caveat following immediately. Every sentence 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?

For a 17-parameter mutation tool with no annotations and no output schema, the description covers the prerequisite and the submit gate but says nothing about what is returned (taskId, status, estimate payload) or how to follow up. The rich schema compensates for parameter gaps, but the return/follow-up story is left entirely implicit.

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% across all 17 parameters, so the schema already documents memo, chain, confirm, estimateOnly, skipEstimate, payment fields, etc. The description adds no parameter syntax or format detail beyond reiterating the preview/confirm behavior, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb set (build, estimate, submit), a specific resource (ERC-7710 delegated transaction bundle), and the channel (1Shot public relayer). An agent can distinguish this from siblings like agent_oneshot_get_status, agent_oneshot_get_capabilities, or the generic send_calls without opening any schema.

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 a concrete prerequisite (an active 1Shot-compatible agent delegation whose delegate equals the relayer targetAddress) and the default operating mode (preview unless confirm=true). It does not name alternative tools for the estimate-only or status-checking paths, so it stops short of explicit when-not routing.

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

agent_prepare_delegationPrepare Agent DelegationA

Create a pending ERC-7710 delegation from the connected WalletChan wallet. Defaults to a 1Shot-compatible relayer delegation with a Base USDC daily spend scope. Stores the unsigned delegation payload encrypted in the agent vault.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNoConfigured chain name or ID. Defaults to Base when configured.
labelNoOptional delegation label.
amountNoDecimal token/native amount for the spend limit, e.g. 10. Use amountUnits for raw units.
walletIdNoAgent wallet ID. Alternative to profileId.
delegatorNoMain WalletChan account granting authority. Defaults to the first approved WalletChan RPC account.
maxAmountNoAlias for amount.
profileIdNoDelegated agent profile ID, e.g. agent:<walletId>. The alias agent works only when exactly one agent wallet exists.
scopeTypeNoDelegation scope. Defaults to erc20-period-transfer for daily Base USDC limits.
startDateNoUnix timestamp in seconds for periodic scopes. Defaults to now.
amountUnitsNoRaw integer token/native units for the spend limit.
delegateModeNoDelegation target mode. Defaults to oneshot-relayer for agent_oneshot_relay_calls. Use agent-wallet for delegated x402 endpoints that require the local agent wallet address, or custom with delegateAddress.
tokenAddressNoERC-20 token address. Defaults to Base USDC on Base.
tokenDecimalsNoERC-20 decimals. Defaults to 6 for Base USDC.
valueLimitWeiNoOptional native value cap for function-call scope as a decimal wei string.
allowedTargetsNoFor function-call scope, allowed contract targets.
maxAmountUnitsNoAlias for amountUnits.
delegateAddressNoOptional explicit delegate override. Usually omit this: delegateMode=oneshot-relayer resolves the current 1Shot targetAddress automatically.
validForSecondsNoOptional timestamp caveat lifetime in seconds.
allowedSelectorsNoFor function-call scope, allowed 4-byte selectors.
periodDurationSecondsNoPeriod duration for periodic scopes. Defaults to 86400.

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description carries the full behavioral burden. It usefully discloses that the unsigned payload is stored encrypted in the agent vault (a real side effect), but says nothing about required authority/permissions, reversibility, or that the delegation is inert until a separate signing step, leaving meaningful gaps 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.

Conciseness5/5

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

Three tight sentences with the core action, the default configuration, and the storage side effect front-loaded in that order. No filler or redundancy.

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 20-parameter, workflow-critical tool with no annotations and no output schema, the description covers the defaults but omits the surrounding workflow (subsequent signature/completion steps) and what the caller gets back. It is serviceable but doesn't fully orient the agent within the delegation lifecycle.

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 documents all 20 parameters, including defaults for chain, scopeType, token, and periodDuration. The description merely restates the headline defaults (1Shot relayer, Base USDC daily scope) without adding new parameter meaning, so the 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?

The description states a specific verb (Create), resource (a pending ERC-7710 delegation), and source (the connected WalletChan wallet), which is concrete and unambiguous. It implies this is the first step via 'pending' and 'unsigned', but never names the follow-up siblings (agent_request_delegation_signature, agent_complete_delegation), so differentiation is contextual rather than explicit.

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?

Usage is implied by the operation itself and by the default-relayer framing, but the description gives no explicit when-to-use guidance, no prerequisites, and no reference to sibling tools that carry the delegation workflow forward. An agent must infer that signing/completion is a separate tool.

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

agent_request_delegation_signatureRequest Agent Delegation SignatureA

Open a WalletChan eth_signTypedData_v4 request for a pending agent delegation. The user approves with the main WalletChan wallet in the popup.

ParametersJSON Schema
NameRequiredDescriptionDefault
delegationIdYesPending delegation ID returned by agent_prepare_delegation.

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 does usefully disclose the signing primitive (eth_signTypedData_v4) and that approval happens interactively in the WalletChan popup by the main wallet, which is real behavioral context. It omits error/rejection behavior, wallet/permission requirements, and whether the request blocks.

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 short sentences, front-loaded with the action and resource, then the approval mechanism. Nothing is padded.

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?

Adequate minimum for a single-parameter signing request with no output schema, but thin given zero annotations: the agent is not told what a successful signed result enables next, what happens on rejection, or how this fits with agent_complete_delegation.

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?

One parameter with 100% schema description coverage, so the schema already explains delegationId as 'Pending delegation ID returned by agent_prepare_delegation.' The description adds no additional parameter meaning, so the 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 ('Open ... eth_signTypedData_v4 request') and a specific resource ('pending agent delegation'), which distinguishes it from generic siblings like sign and sign_siwe. It stops short of naming which sibling precedes or follows it in the flow.

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 phrase 'for a pending agent delegation' implies it should be called after a delegation is prepared (schema points at agent_prepare_delegation), but there is no explicit when-to-use, no when-not, and no mention of the natural follow-up (agent_complete_delegation).

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

agent_reset_vaultReset Agent VaultA

Forget all local agent wallets, delegations, and default agent profile without decrypting the vault. Use this when you intentionally want a fresh agent-wallet setup, especially after removing an old env vault secret. Requires confirm=true and confirmationText=RESET_AGENT_VAULT.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true to reset the local agent wallet vault.
confirmationTextYesMust equal RESET_AGENT_VAULT.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries full burden and does well: it discloses the destructive sweep scope, the notable fact that the vault is not decrypted, and the required confirmation gates. The only gap is that irreversibility of the loss is implied by 'Forget' but never stated outright.

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 front-loaded sentences: what it does, when to use it, and the preconditions. Every sentence earns its place with no filler or repetition.

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 destructive no-annotation tool with no output schema, the description covers the scope of destruction, the non-decryption behavior, and the confirmation requirement. Only minor omissions remain, such as whether the state is recoverable or what the vault file becomes afterward.

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 both parameters are already fully documented in the schema. The description restates confirm=true and confirmationText=RESET_AGENT_VAULT, adding no meaning beyond the structured fields. Baseline 3 applies.

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

Purpose5/5

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

States a specific verb ('Forget') plus the exact resources it sweeps: all local agent wallets, delegations, and the default agent profile. The bulk scope ('all') distinguishes it from single-item siblings like agent_delete_wallet and agent_delete_delegation without opening their schemas.

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 an explicit when-to-use trigger ('intentionally want a fresh agent-wallet setup') and a concrete motivating scenario ('after removing an old env vault secret'). It does not name a specific alternative or state when NOT to use it, so it falls short of a 5.

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

agent_x402_payPay x402 Resource With AgentB

Pay and fetch an x402-protected HTTPS resource. The default agent profile spends through the main wallet's ERC-7710 delegation; explicitly pass agent-eoa: only for raw agent-wallet payment.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesHTTPS x402-protected resource URL.
bodyNoOptional string or JSON body. Only allowed with POST.
chainNoEVM network for x402 payment. Defaults to Base.
methodNoHTTP method. Defaults to GET; body implies POST.
headersNoOptional string headers. Authorization, Cookie, Host, and payment headers are blocked.
walletIdNoAgent wallet ID. Alternative to profileId; resolves to the delegated agent:<walletId> profile.
profileIdNoAgent wallet profile ID. Defaults to agent:<walletId> delegated x402. Use agent-eoa:<walletId> only when the user explicitly wants raw local agent-wallet payment.
timeoutMsNoRequest timeout in milliseconds. Defaults to 30000.
maxPaymentNoMaximum payment in decimal token units, e.g. 0.10 USDC. Required unless maxPaymentUnits is provided.
tokenDecimalsNoDecimals for maxPayment. Defaults to 6 for USDC.
maxPaymentUnitsNoMaximum payment in raw token units. Required unless maxPayment is provided.
maxResponseBytesNoMaximum response body bytes returned by MCP. Defaults to 1000000.

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 the payment path (ERC-7710 delegation vs raw EOA) and that the EOA path is the exceptional one, but omits critical traits for a payment tool: irreversibility of the spend, whether a delegation must pre-exist, and failure/settlement behavior when the resource returns an error.

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

Conciseness4/5

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

Two tight sentences: purpose first, then the one non-obvious default-versus-explicit decision. Nothing is wasted, though the second sentence packs two distinct ideas (default path and exception) into one clause and could front-load the exception more sharply.

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 12-parameter payment tool with no annotations and no output schema, the description covers the central profile tradeoff but leaves out prerequisites, spend irreversibility, and how to obtain a quote before paying. Adequate but with clear gaps an agent would need filled elsewhere.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The one bit of parameter guidance in the description (profileId / agent-eoa form) is already documented verbatim in the schema's profileId field, so the prose adds little beyond what the structured data 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 pair (pay and fetch) and a precise resource type (x402-protected HTTPS resource), which is more specific than most siblings. It does not explicitly differentiate itself from near-neighbors like veil_pay_x402 or agent_x402_quote, so an agent must infer the boundary rather than being told it.

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 does give genuinely useful routing guidance for the profile choice: default uses the main wallet's ERC-7710 delegation, and agent-eoa:<walletId> is only for raw agent-wallet payment. However it never says when to call this versus the sibling quote tools (agent_x402_quote, veil_x402_quote) or what prerequisites (e.g. an established delegation) must hold first.

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

agent_x402_quoteQuote x402 ResourceA

Probe an x402-protected HTTPS resource without signing or submitting payment. Reports whether the endpoint offers ERC-7710 delegated x402 payment for agent profiles.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesHTTPS x402-protected resource URL.
bodyNoOptional string or JSON body. Only allowed with POST.
chainNoEVM network for x402 payment. Defaults to Base.
methodNoHTTP method. Defaults to GET; body implies POST.
headersNoOptional string headers. Authorization, Cookie, Host, and payment headers are blocked.
walletIdNoAgent wallet ID. Alternative to profileId; resolves to the delegated agent:<walletId> profile.
profileIdNoAgent wallet profile ID. Defaults to agent:<walletId> delegated x402. Use agent-eoa:<walletId> only when the user explicitly wants raw local agent-wallet payment.
timeoutMsNoRequest timeout in milliseconds. Defaults to 30000.
tokenDecimalsNoDecimals for maxPayment. Defaults to 6 for USDC.
maxResponseBytesNoMaximum response body bytes returned by MCP. Defaults to 1000000.

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does disclose the critical trait: no signing and no payment submission, i.e. a safe read-only probe. It does not describe error behavior, network cost, or that wallet/profile resolution is required for the delegation answer, leaving some behavioral gaps for a 10-parameter tool.

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 with no filler; the core action is front-loaded and the outcome it reports follows immediately. Every clause earns its place.

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 10-parameter tool with no output schema, the description states the purpose, the safety behavior, and broadly what is returned. It stops short of describing the response shape or the meaning of the ERC-7710 delegation/fee result, but the fully documented schema covers the invocation side.

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 every parameter (url, body, chain, method, headers, walletId, profileId, timeoutMs, tokenDecimals, maxResponseBytes) is already documented with defaults and constraints. The description adds no additional syntax, format, or inter-parameter semantics beyond what the schema provides, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb ('Probe') applied to a specific resource ('x402-protected HTTPS resource') and specifies what is reported. The phrase 'without signing or submitting payment' cleanly separates it from the paying siblings (agent_x402_pay, veil_pay_x402) without needing to name them.

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

Usage Guidelines3/5

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

The description implies the usage context (probe before committing to payment) but never states it explicitly or names alternatives such as agent_x402_pay. An agent can infer when to use it, but there is no explicit when/when-not guidance or sibling routing.

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

bridgeBridgeB

Quote a WalletChan bridge, build needed approval plus bridge calls, and submit them to WalletChan for popup approval unless previewOnly is true.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromNoOptional approved WalletChan sender. Defaults to first approved account.
chainNoAlias for originChain.
submitNoSet false to return quote and prepared calls without submitting to WalletChan.
decimalsNoOptional token decimals when inputToken is an address not in the token list.
slippageNoBungee slippage percentage, e.g. 0.5. Overrides slippageBps.
profileIdNoAlias for executionProfile.
inputTokenYesOrigin token address, symbol from the WalletChan/Bungee token list, or native/ETH.
inputAmountNoDecimal input amount in token units, e.g. 1.5. Use inputAmountWei for base units.
originChainNoOrigin/source chain name or ID. Defaults to the active WalletChan RPC chain.
outputTokenYesDestination token address, symbol from the WalletChan/Bungee token list, or native/ETH.
previewOnlyNoIf true, return quote and prepared calls without submitting to WalletChan.
slippageBpsNoSlippage in basis points. Defaults to 500 (5%).
userAddressNoAlias for from.
tokenDecimalsNoAlias for decimals.
atomicRequiredNoWhether the WalletChan call batch must execute atomically. Defaults to true with automatic non-atomic fallback.
inputAmountWeiNoOptional base-unit input amount as an integer string.
receiverAddressNoOptional destination receiver. Defaults to from.
destinationChainNoAlias for destinationChainId.
executionProfileNoExecution profile override. Use walletconnect for main WalletChan popup approval, agent:<walletId> for delegated 1Shot execution, or agent-eoa:<walletId> for raw local agent EOA execution. Defaults to the stored profile.
destinationChainIdNoDestination chain ID.

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 does disclose a meaningful side effect: calls are submitted to WalletChan and require popup approval unless previewOnly is true. But it says nothing about irreversibility of the bridge, fund movement, the role of executionProfile/atomicRequired, or failure/fallback behavior, so the safety profile is only partially covered.

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 dense sentence that front-loads the core action (quote, build, submit) and puts the previewOnly exception at the end where it belongs. No wasted words, though the sentence packs three distinct operations without separating them.

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 20-parameter, no-annotation, no-output-schema tool that performs an on-chain bridge, the description is thin. The rich schema compensates on parameters, but the description leaves the agent without routing guidance versus siblings or any note on execution profiles, atomicity, and what the returned prepared calls are for.

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% with 20 well-documented parameters, so the schema already does the heavy lifting and baseline 3 applies. The description adds only the previewOnly meaning, duplicating what the schema's previewOnly description already states.

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 names specific verbs and resources — quote a WalletChan bridge, build approval + bridge calls, submit them — which is more than a restatement of the name 'bridge'. It distinguishes the full quote-and-submit flow from the quote-only sibling get_bridge_quote, though it never names that 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?

Usage is implied by the flow description and the 'unless previewOnly is true' condition, which tells the agent how to get a dry run. However there is no explicit guidance on when to prefer this over get_bridge_quote, swap, or get_bridge_status, and no stated prerequisites (e.g. an approved account).

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

call_protocol_toolCall Protocol ToolA

Call a raw allowlisted protocol tool. Prefer first-class WalletChan wrappers when available.

ParametersJSON Schema
NameRequiredDescriptionDefault
toolYesRaw protocol tool name.
protocolYesProtocol profile id. Currently: veil.
argumentsNoRaw protocol tool arguments.
timeoutMsNoOptional call timeout in milliseconds.

TDQS

A3.7/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 does disclose a real safety boundary ('allowlisted'), but says nothing about side effects (an arbitrary pass-through 'arguments' object could be a mutation), auth requirements, or timeout behavior despite exposing timeoutMs.

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 short sentences, no filler, with the core action front-loaded and the routing caveat second. 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?

For a generic dispatcher taking an opaque nested 'arguments' object with no output schema, the description is thin: it doesn't explain that valid tool names/arguments vary per protocol nor hint at return shape or error behavior. Adequate as a minimal pointer to the raw layer, but not complete for the tool's complexity.

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 documents tool, protocol, arguments, and timeoutMs, including the current 'veil' protocol id. The description adds no parameter-level meaning beyond the schema, 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 and resource ('Call a raw allowlisted protocol tool') and scopes it ('raw allowlisted'), which distinguishes it from the many first-class veil_* wrappers named in the description. It signals the generic-dispatcher role without restating the title.

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?

'Prefer first-class WalletChan wrappers when available' is an explicit routing rule that tells the agent to fall back here only when no dedicated wrapper exists, which is meaningful given the large sibling set of veil_* tools. It lacks detail on when this is mandatory (e.g., unnamed/tool not yet wrapped) but the exclusion is clear.

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

call_remote_mcp_toolCall Remote MCP ToolB

Call an allowlisted protocol MCP tool through WalletChan MCP. Login tools are blocked here; use the remote SIWE login helpers.

ParametersJSON Schema
NameRequiredDescriptionDefault
toolYesRemote MCP tool name.
profileYesAllowlisted remote MCP profile. Currently: virtuals.
argumentsNoRemote MCP tool arguments.

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 carries the full disclosure burden, and it does disclose the allowlist constraint and blocked login tools. But it omits whether the remote call may mutate state, what auth/permissions are required, how failures surface, and there is no output schema to fall back on — significant gaps for a generic passthrough that can invoke arbitrary remote tools.

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

Conciseness4/5

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

Two short sentences with no filler, and the core action is front-loaded ahead of the login-tool exclusion. Efficient, though the second sentence is narrowly scoped relative to the routing the tool actually needs.

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 bridge tool with a nested free-form arguments object, no annotations, and no output schema, the description leaves too much unsaid: how results are returned, how remote errors are surfaced, and how to discover allowlisted tools/profiles. The schema covers parameters, but behavior and return handling are largely unexplained.

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 documents tool, profile, and the free-form arguments object; baseline is 3. The description adds no syntax, format, or naming guidance beyond what the schema states.

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: 'Call an allowlisted protocol MCP tool through WalletChan MCP.' It partially differentiates from siblings by ruling out login tools, but never names list_remote_mcp_tools (discovery) or call_protocol_tool (local counterpart), so an agent cannot fully distinguish it from those without reading schemas.

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 one explicit exclusion plus an alternative ('Login tools are blocked here; use the remote SIWE login helpers'), which is real routing guidance. However, it says nothing about when to prefer this over call_protocol_tool or list_remote_mcp_tools, nor how to obtain valid tool names/profiles before calling.

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

clear_default_execution_profileClear Default Execution ProfileA

Clear the stored default execution profile. Future mutating tools fall back to walletconnect.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/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, and it does disclose the key downstream side effect (fallback to walletconnect for future mutating tools). It omits whether the operation is idempotent, what happens if no default is currently set, and whether the clearing is reversible, so disclosure is partial.

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 short sentences with zero waste; the action is front-loaded and the consequence follows. Every sentence earns its place.

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 zero-parameter, no-output-schema tool, the description covers the action and its main effect on subsequent tool calls, which is the information an agent needs. Minor gaps remain around idempotency and behavior when no default is set, but nothing critical is missing.

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 there is nothing for the description to disambiguate. No parameter semantics are needed.

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 (clear) and resource (stored default execution profile), and it is trivially distinguishable from its siblings get_default_execution_profile and set_default_execution_profile by operation. It does not explicitly name those siblings, but the operation is unambiguous.

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 implies when this matters by describing the consequence ('future mutating tools fall back to walletconnect'), which gives context for choosing it. However, it never states when to prefer this over set_default_execution_profile or list_execution_profiles, nor any prerequisite, so usage is only implied.

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

complete_remote_mcp_siwe_loginComplete Remote MCP SIWE LoginB

Complete a remote MCP SIWE login after the WalletChan signature request has been approved.

ParametersJSON Schema
NameRequiredDescriptionDefault
loginIdYesLogin ID returned by start_remote_mcp_siwe_login.

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the entire behavioral burden and falls short: it does not say whether the loginId is single-use or expires, what happens if the signature was not approved, what session/credential is established on success, or whether this is idempotent. Only the approval precondition is disclosed.

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 and the action verb first. It is very terse rather than bloated; the only reason it is not a 5 is that the brevity spills over into under-specification of a stateful step.

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?

No annotations, no output schema, and no enum means the description is the only behavioral source, yet it omits what the call returns (session token, success/failure semantics), the expiry/retry behavior of loginId, and the explicit link back to start_remote_mcp_siwe_login. For a stateful two-step handshake this leaves real gaps.

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

Parameters3/5

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

There is a single parameter with 100% schema description coverage, so the schema already explains that loginId comes from start_remote_mcp_siwe_login. The description adds no format, validity, or lifecycle detail beyond that, so the baseline 3 for a fully-documented param is appropriate.

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 ('Complete') and resource ('remote MCP SIWE login'), and the phrase 'after the WalletChan signature request has been approved' ties it to a distinct workflow step that separates it from start_remote_mcp_siwe_login. The domain jargon (SIWE, WalletChan) is not explained, but an agent can still tell this is the terminal step of a login handshake rather than a new login or a generic sign.

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 an implicit precondition ('after the WalletChan signature request has been approved'), which is useful sequencing context. However, it never names start_remote_mcp_siwe_login as the required predecessor, states no when-not conditions, and offers no alternatives or error-path guidance, so the agent must infer the full call order.

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

get_bridge_quoteGet Bridge QuoteC

Fetch a WalletChan bridge quote using the same first-party Bungee proxy as the extension.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromNoOptional approved WalletChan sender. Defaults to first approved account.
chainNoAlias for originChain.
decimalsNoOptional token decimals when inputToken is an address not in the token list.
slippageNoBungee slippage percentage, e.g. 0.5. Overrides slippageBps.
inputTokenYesOrigin token address, symbol from the WalletChan/Bungee token list, or native/ETH.
inputAmountNoDecimal input amount in token units, e.g. 1.5. Use inputAmountWei for base units.
originChainNoOrigin/source chain name or ID. Defaults to the active WalletChan RPC chain.
outputTokenYesDestination token address, symbol from the WalletChan/Bungee token list, or native/ETH.
slippageBpsNoSlippage in basis points. Defaults to 500 (5%).
userAddressNoAlias for from.
tokenDecimalsNoAlias for decimals.
inputAmountWeiNoOptional base-unit input amount as an integer string.
receiverAddressNoOptional destination receiver. Defaults to from.
destinationChainNoAlias for destinationChainId.
destinationChainIdNoDestination chain ID.

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 burden, and it only discloses the backend source ('same first-party Bungee proxy as the extension'). It never states that this is a non-executing read, whether quotes expire, whether they are gasless or require approval, or any rate-limit/auth behavior — material facts for a quote tool that feeds a later 'bridge' call.

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 zero filler — the resource and the route are established immediately. It is not padded, though the extreme brevity is arguably under-specification for a 15-parameter tool rather than a virtue.

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 15-parameter, two-required, no-output-schema tool with no annotations, one sentence leaves too much unsaid: no return-value shape, no quote lifecycle (quote then bridge), no defaults summary, and no relationship to sibling quote/status tools. The proxy detail is helpful but far from sufficient.

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% across all 15 parameters, including aliases (chain/originChain, from/userAddress, decimals/tokenDecimals) and slippage overrides, so the schema does the heavy lifting. The description adds nothing about parameter meaning, defaults, or which of the two required params are the minimum viable set; 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 and resource ('Fetch a WalletChan bridge quote') and identifies the backend route (first-party Bungee proxy). The word 'quote' implicitly separates it from the execution sibling 'bridge' and from 'get_bridge_status', but the description never names or contrasts those siblings explicitly, so an agent must infer the routing.

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: nothing says this is the read-only pricing step that should precede 'bridge', nor how it relates to 'get_swap_price', 'get_bridge_status', or the veil/x402 quote tools. The agent is left to guess the call sequence from the name alone.

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

get_bridge_statusGet Bridge StatusB

Fetch WalletChan bridge status by Bungee requestHash or source txHash.

ParametersJSON Schema
NameRequiredDescriptionDefault
txHashNo
requestHashNo

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 carries the full behavioral burden. 'Fetch' implies a read-only lookup, but the description does not state that the call is safe/idempotent, whether authentication is required, what happens when a hash is unknown or the bridge is pending, or any latency considerations.

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; the resource and both identifier options come first. It is appropriately sized, though it could have spent one more clause on the requestHash/txHash relationship.

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?

With no annotations, no output schema, and 0% parameter description coverage, the one-sentence description is thin. It leaves the agent guessing about mutual exclusivity of the two keys, error behavior for unknown hashes, and the shape of the returned status.

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 0%, so the description must compensate. It does add value by clarifying that requestHash is a Bungee request hash and txHash is a source transaction hash, going beyond the bare 'string' types. It still omits whether the two are mutually exclusive, which takes precedence, and expected hash formats.

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 (fetch), resource (WalletChan bridge status), and the two lookup keys, so an agent knows exactly what it returns. It is distinguishable from siblings like get_bridge_quote or bridge, though it does not explicitly differentiate itself from get_request_status or veil_deposit_status, which also fetch statuses.

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?

Usage is implied by naming the two accepted identifiers (Bungee requestHash or source txHash), which tells the agent when the tool applies. However, it gives no guidance on which key to prefer, whether either is required, or how this differs from the other status-fetching siblings.

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

get_default_execution_profileGet Default Execution ProfileA

Get the stored default execution profile. Defaults to walletconnect when no explicit default is stored.

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 full behavioral burden. It does disclose the fallback behavior ('Defaults to walletconnect when no explicit default is stored'), which is useful. However, it doesn't state whether this is a safe read operation, whether it requires authentication, or what the return value looks like in detail. For a read-only tool this is partially adequate but leaves gaps.

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

Conciseness5/5

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

Two short sentences with zero waste. The primary purpose is front-loaded, and the fallback behavior is stated immediately after, making it easy to parse.

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

Completeness3/5

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

Given no annotations and no output schema, the description should do more to describe the return format (e.g., what an execution profile contains) or any authentication requirements. The fallback default is covered, but completeness is minimally adequate for a tool that returns a non-trivial configuration object.

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 the baseline is 4. The description does not need to explain parameter semantics, and it correctly avoids doing so.

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 ('stored default execution profile'), clearly distinguishing it from siblings like list_execution_profiles and set_default_execution_profile. It doesn't name those siblings explicitly, but the resource is precise enough that an agent can identify the correct 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?

The description implies usage context ('stored default'), but provides no explicit when-to-use or when-not-to-use guidance relative to alternatives like list_execution_profiles. The sibling set is large, and an agent might be unsure whether to fetch the default profile directly or list all profiles first.

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

get_pairing_uriGet Pairing URIA

Start or inspect the managed WalletChan RPC bridge and return the wallet pairing URI and local QR page URL when pairing is needed. The URI may be WalletConnect or MetaMask Connect depending on the managed RPC transport. When a pairing URI is available, the tool emits an MCP image content block with the QR code before the text fallback.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoAlias for forceNewSession.
waitMsNoHow long to wait for the pairing URI when starting walletchan-rpc. Defaults to 15000.
accountNoOptional MetaMask Connect account address to request. Use with forceRequest: true when asking MetaMask to switch/select a specific account.
transportNoAlias for walletTransport.
forceRequestNoIf true, ask the active transport to show a new connection/account request even if already connected. Currently useful for MetaMask Connect account switching.
forceNewSessionNoIf true, disconnect stored wallet sessions and generate a fresh URI for pairing a different wallet.
walletTransportNoOptional live switch for the managed RPC wallet transport. Use walletconnect or metamask-connect.

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose meaningful behavior: it may start a process as a side effect, the URI type varies by transport, and it emits an MCP image content block (QR) before the text fallback. It does not state auth requirements, failure modes, or what happens to existing sessions (that detail lives only in the forceNewSession schema text).

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 sentences, front-loaded with the action and return value, then transport variability, then output format. Every sentence carries information; a small amount of compositional looseness but 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?

There is no output schema, and the description compensates by naming the return values and the QR image content block. With zero required parameters and all optional params fully documented in the schema, the description covers what an agent needs, though it could say more about when pairing will not be needed.

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 every one of the 7 optional parameters is already documented in the schema, including the alias relationships and the account/forceRequest pairing. The description adds no parameter-level guidance, which is acceptable given full coverage but earns only the 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?

The description gives a specific verb+resource pair ('Start or inspect the managed WalletChan RPC bridge') and names exactly what is returned ('the wallet pairing URI and local QR page URL'). No sibling tool covers wallet pairing, so this is unambiguous even among ~60 siblings.

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?

'when pairing is needed' implies a trigger condition, and the force/forceNewSession/forceRequest params hint at re-pairing scenarios, but the description never states when an agent should call this versus e.g. agent_list_wallets or get_wallets, nor does it note prerequisites. Usage is implied rather than instructed.

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

get_portfolio_balancesGet Portfolio BalancesB

Fetch WalletChan portfolio balances for an address or the connected WalletChan account, including tokens and DeFi positions.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromNoAlias for address when using an approved WalletChan RPC account.
limitNoOptional maximum number of token balances to return.
addressNoOptional address to inspect. Defaults to the first approved WalletChan RPC account.
includeDefiNoWhether to include DeFi positions. Defaults to true.
minValueUsdNoOptional minimum token value to include. Defaults to 0.

TDQS

B3.3/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. 'Fetch' signals a read, and the disclosure that results include tokens and DeFi positions adds useful scope information, but it omits any note on auth requirements, data freshness, or return shape.

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?

A single front-loaded sentence names the action, resource, and target options in one pass with no filler or repetition.

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-risk read tool with fully documented optional parameters and no output schema, the description is minimally adequate. It leaves the agent to infer how this differs from the many other balance-listing siblings and what the response contains.

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 optional parameters (from, limit, address, includeDefi, minValueUsd) are already documented in the schema. The description's mention of DeFi positions loosely maps to includeDefi but adds no syntax or defaults beyond what the schema states.

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 (Fetch) and resource (WalletChan portfolio balances) and scopes the output to tokens and DeFi positions. It is distinguishable from single-balance siblings like agent_eoa_get_balance, but it never names an alternative to clarify the boundary.

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 notes it works 'for an address or the connected WalletChan account', which loosely implies a targeting choice, but gives no explicit when-to-use guidance or exclusions relative to veil_get_balances, veil_x402_payer_balances, or agent_eoa_get_balance.

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

get_request_statusGet Request StatusC

Get the status of a WalletChan MCP request or wallet_sendCalls bundle.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoAlias for requestId.
requestIdNoRequest ID returned by send_calls, sign, or send_transaction.

TDQS

C2.6/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. 'Get' implies a read, but the description never states whether the call is idempotent, whether it blocks, whether statuses are terminal, or what happens with an unknown/expired id. For a polling-style status 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.

Conciseness4/5

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

A single well-formed sentence with no filler, and the resource is front-loaded. It is appropriately sized for the tool's simplicity, though it is arguably too short to carry the missing behavioral context.

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?

There is no output schema, so the description is the only place to convey what the returned status looks like or how to interpret it, and it omits this entirely. Combined with no annotations and no usage guidance, the definition is incomplete for a tool whose primary value is interpreting a status value.

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 both id and requestId are fully documented in the schema, including the alias relationship and the origin of the id. The description adds nothing beyond the schema, so the baseline of 3 applies.

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

Purpose3/5

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

The description names a specific verb (get) and resource (status of a WalletChan MCP request / wallet_sendCalls bundle), which is better than a tautology. However, the sibling list contains many other status tools (agent_oneshot_get_status, get_bridge_status, veil_deposit_status, veil_status), and the description does nothing to distinguish this one from them. The scope is clear but not differentiated.

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 guidance on when to call this versus the other status tools, no mention of polling cadence, and no note on prerequisites (e.g., that a requestId must first come from send_calls, sign, or send_transaction). The agent must infer all usage context.

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

get_swap_priceGet Swap PriceB

Fetch an indicative WalletChan swap price using the same first-party swap API as the extension.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromNoOptional taker/approved account.
chainNoChain name or ID. Defaults to the active WalletChan RPC chain.
takerNoAlias for from.
buyTokenYesBuy token address, symbol from the WalletChan token list, or native/ETH.
decimalsNoOptional token decimals when sellToken is an address not in the token list.
recipientNoOptional recipient for bought tokens.
sellTokenYesSell token address, symbol from the WalletChan token list, or native/ETH.
sellAmountNoDecimal sell amount in token units, e.g. 1.5. Use sellAmountWei for base units.
slippageBpsNoSlippage in basis points. Defaults to 500 (5%).
sellAmountWeiNoOptional base-unit sell amount as an integer string.
tokenDecimalsNoAlias for decimals.

TDQS

B3.2/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 behavioral burden. 'Indicative' is a genuinely useful disclosure (non-binding, may change), but it says nothing about rate limits, freshness, auth/account requirements, or side effects. For a read-only quote tool the safety profile is largely inferable from 'Fetch... price', but the description leaves gaps.

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. It is efficient, though the 'WalletChan'/'extension' references add little actionable information for an agent.

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?

Parameters are fully covered by the schema, but with 11 params, no annotations, and no output schema, the description should at least indicate what the quote returns (price, route, amount) and any usage caveats. It is minimally adequate rather than 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 description coverage is 100%, so all 11 parameters including aliases (taker/from, tokenDecimals/decimals) and defaults are already documented in the schema. The description adds no parameter meaning beyond that, so 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 and resource (fetch a swap price) and scopes it as 'indicative' via the same first-party API as the extension, which distinguishes it from the sibling execution tool 'swap'. It does not name or contrast with siblings explicitly, so it stops short of 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?

No explicit when-to-use guidance. 'Indicative' hints this is a pre-trade quote rather than execution, but the description never tells the agent to call this before 'swap' or instead of 'get_bridge_quote', nor states any prerequisites.

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

get_walletsGet WalletsC

Get approved WalletChan RPC accounts and configured chains.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNoOptional chain name or chain ID to validate against the configured WalletChan RPC chains.

TDQS

C2.6/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: no indication of auth/permission requirements, whether it is a safe read, what 'approved' means, or what the response contains. 'Get' weakly implies read-only, but that is inference, not disclosure.

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 or redundancy. It is efficient, though the terseness is part of why coverage elsewhere is thin.

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 tool with no annotations, no output schema, and an opaque domain concept ('WalletChan RPC accounts'), the description is too thin to let an agent call it confidently. It leaves undefined what is returned, whether an empty result is meaningful, and how it relates to the other wallet-list tools.

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 sole 'chain' parameter (name or ID, used to validate against configured RPC chains) is fully documented in the schema. The description adds no meaning beyond that, which is acceptable at baseline 3.

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

Purpose3/5

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

The verb 'Get' plus the resource 'approved WalletChan RPC accounts and configured chains' gives a rough idea of purpose, but the concept of an 'RPC account' versus the many other wallet-listing siblings (agent_list_wallets, agent_get_wallet, veil_get_balances) is never disambiguated. An agent cannot tell from this sentence which wallet universe this returns or how it differs from agent_list_wallets.

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 guidance on when to call this versus the numerous alternative wallet/chain listing tools in the sibling set. The optional chain parameter hints at a validation use case, but the description states no conditions for use or exclusions.

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

list_base_plugin_runnersList Base Plugin RunnersA

List pinned protocol CLI runners and supported commands available inside WalletChan MCP.

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 exist, so the description carries the burden, and it does disclose scope ('available inside WalletChan MCP') and that the operation is a listing. It does not state whether auth/pairing is required or what the returned runner records contain. For a zero-parameter read tool the bar is low, but more behavioral context could be given.

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?

A single front-loaded sentence with no filler; the verb and object come first. Every word 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 is the only spec, and it does not explain the shape of the result or how the returned runners map to commands in run_base_plugin_cli. Adequate as a one-line summary but thin for a tool whose entire value is the returned inventory.

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 there is nothing for the description to compensate for and the baseline of 4 applies. No parameter-related text is needed or missing.

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 ('pinned protocol CLI runners and supported commands'), which distinguishes it from the sibling run_base_plugin_cli that executes them. However, 'pinned protocol CLI runners' is internal jargon that is never unpacked, so an agent infers rather than knows exactly what entities are being enumerated.

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?

Usage is only implied: an agent can guess this is a discovery step preceding run_base_plugin_cli, but the description never says when to call it, what prerequisite it serves, or that it is the lookup before execution. No exclusions or alternatives are named.

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

list_execution_profilesList Execution ProfilesB

List WalletChan execution profiles. walletconnect uses the existing WalletChan popup path; agent and agent-eoa profiles are local agent wallet profiles for delegated and raw execution.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/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, and it does add real domain context: walletconnect routes through the existing popup path while agent/agent-eoa are local delegated vs raw execution profiles. However, it says nothing about read-only nature, whether the list is static or dynamic, or how profiles relate to the default-profile siblings.

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

Conciseness4/5

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

Two sentences, front-loaded with the action, no filler. The second sentence is dense but each clause conveys distinct profile semantics rather than padding.

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?

There is no output schema, so the description is the only signal about what comes back. It names the three profile categories but never describes the return shape (names, identifiers, ordering, whether defaults are flagged), leaving an agent to guess before calling.

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 the baseline is 4. There is nothing for the description to clarify on the input side.

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 ('List WalletChan execution profiles') and then defines what each profile category means. It is clearly distinguishable from siblings like get_default_execution_profile or set_default_execution_profile, though it never explicitly contrasts itself with them.

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 explains what the profile types are, but not when an agent should call this tool versus get_default_execution_profile, set_default_execution_profile, or the agent_* wallet tools. No prerequisites or conditions for use are given.

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

list_protocolsList ProtocolsB

List protocol integrations managed by WalletChan MCP, including local MCPs, CLIs, HTTP APIs, or future SDK adapters.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/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 does not state that this is a read-only operation, whether it requires authentication, or whether there are rate limits or side effects. The word 'List' implies a read, but nothing is explicitly disclosed.

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 well-formed sentence with the verb and resource front-loaded. It contains no filler and is appropriately sized for a simple listing tool.

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

Completeness3/5

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

Given the tool's simplicity, zero parameters, and no output schema, the description is minimally adequate. It names the category of things returned but does not describe the shape of a protocol integration entry or any pagination behavior, leaving some gap for an agent unfamiliar with the domain.

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 there are no parameter semantics to explain. Baseline 4 applies for a correctly parameterless definition.

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 uses a specific verb and resource: 'List protocol integrations managed by WalletChan MCP'. It also enumerates the kinds of integrations included, which clarifies scope. However, it does not distinguish this tool from close siblings like list_protocol_tools or list_remote_mcp_tools, so it falls short of 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 states what the tool lists but gives no guidance on when to use it versus alternatives such as list_protocol_tools or list_remote_mcp_tools. There are no exclusions, prerequisites, or contextual cues for selection.

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

list_protocol_toolsList Protocol ToolsC

List raw tools exposed by a managed protocol integration such as Veil MCP.

ParametersJSON Schema
NameRequiredDescriptionDefault
protocolYesProtocol profile id. Currently: veil.

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does not explain the output shape (raw tool list), whether the result is cached, whether it requires authentication, or if any side effects occur. For a discovery tool with zero annotation coverage, this is a notable gap.

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

Conciseness4/5

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

The description is a single, front-loaded sentence that efficiently states the tool's function without unnecessary words.

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?

Given the tool has one required parameter, no output schema, and no annotations, the description should do more to explain what 'raw tools' means, what the return value looks like, and any limitations. It is currently underspecified for an agent to invoke it confidently in context.

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% (the 'protocol' parameter is fully documented with its allowed value), so the baseline is 3. The description adds no extra parameter semantics beyond what the schema already provides.

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

Purpose3/5

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

The description states a specific verb+resource ('List raw tools exposed by a managed protocol integration'), which is clear enough. However, it does not differentiate itself from similar siblings in the list such as 'call_protocol_tool', 'list_protocols', or 'list_remote_mcp_tools', leaving the agent to 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 explicit when-to-use or when-not-to-use guidance, nor any mention of alternatives. The agent must guess whether this is the right tool for discovering protocol capabilities versus related listing tools.

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

list_remote_mcp_toolsList Remote MCP ToolsB

List tools from an allowlisted protocol MCP profile. Currently supports the Virtuals ACP MCP profile.

ParametersJSON Schema
NameRequiredDescriptionDefault
profileYesAllowlisted remote MCP profile. Currently: virtuals.

TDQS

B3.2/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 discloses the allowlist constraint and the currently supported profile, which is useful, but omits auth requirements, whether it is a read-only operation, and any rate or scope limits. Adequate but incomplete for a tool with zero annotation coverage.

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

Conciseness4/5

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

Two tight sentences, front-loaded with the action and scope. Every sentence earns its place; there is no padding.

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

Completeness4/5

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

For a simple one-parameter read tool with a fully covered schema and no output schema, the description supplies the key scoping context (allowlist, current profile support). It is largely complete, missing only auth/behavioral notes.

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 'profile' parameter is fully documented in the schema with its current allowed value ('virtuals'). The description adds no format or syntax detail beyond the schema, so the baseline 3 is correct.

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 clear verb+resource ('List tools from an allowlisted protocol MCP profile') and names the supported profile. It distinguishes the remote-MCP concept from plain protocol tools only implicitly; it does not explicitly contrast itself with the sibling list_protocol_tools or call_remote_mcp_tool.

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 and no mention of alternatives such as list_protocol_tools or call_remote_mcp_tool. The scope note ('Currently supports the Virtuals ACP MCP profile') hints at applicability but does not tell the agent when this tool is the right choice.

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

list_skill_resourcesList Skill ResourcesC

List WalletChan MCP skill and adapted Base plugin resources.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.8/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 burden of behavioral disclosure. It does not say whether this is a read-only lookup, what scope of resources is returned (all skills? installed plugins?), whether results are filtered or paginated, or if any auth/connection to the MCP server is required.

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 with no filler and the subject front-loaded. It is efficient, though not maximally informative.

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?

With no output schema and no annotations, the description should describe the returned shape or content of "resources" (skills vs. adapted Base plugins, identifiers, counts). It leaves the agent guessing what a call actually yields.

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 there is nothing for the description to clarify; the baseline for a parameterless tool applies. No parameter semantics gap exists.

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

Purpose3/5

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

The description states a verb ("List") and a resource ("WalletChan MCP skill and adapted Base plugin resources"), which is more than a tautology. However, "resources" is undefined and it does not distinguish itself from sibling list tools such as list_base_plugin_runners, list_protocol_tools, or list_remote_mcp_tools, so an agent cannot confidently route between them.

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 indication of when to call this tool, what triggers it, or which alternative list tool to use instead. The many sibling "list_*" tools make this omission costly.

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

load_base_pluginLoad Base PluginC

Load an upstream Base MCP native plugin reference with WalletChan MCP execution overrides prepended.

ParametersJSON Schema
NameRequiredDescriptionDefault
pluginYesBase plugin slug, e.g. morpho, moonwell, uniswap, avantis, aerodrome, virtuals, bankr. Future safe slugs are allowed.

TDQS

C2.6/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 full behavioral burden. It hints that execution overrides are prepended, but does not describe side effects, persistence, permissions, or what happens after loading.

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 sentence with no wasted words, and the core action is front-loaded. However, the jargon-heavy phrasing slightly reduces immediate clarity.

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?

Given no annotations and no output schema, the description should explain what loading a plugin reference does, whether it persists, and how it affects subsequent calls. It leaves these critical details unaddressed.

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 fully documented in the schema. The description adds no extra meaning beyond the schema, so baseline 3 is appropriate.

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

Purpose3/5

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

States a specific verb ('Load') and a resource ('upstream Base MCP native plugin reference'), but the term 'plugin reference' is jargon that an agent may not understand. It does not differentiate from siblings like run_base_plugin_cli or list_base_plugin_runners, leaving the exact outcome ambiguous.

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?

Provides no guidance on when to use this tool versus alternatives. There is no mention of prerequisites, when-not-to-use, or how it relates to sibling tools such as run_base_plugin_cli or list_base_plugin_runners.

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

resolve_nameResolve NameB

Resolve a user-provided WalletChan-supported name to an EVM address. Supports ENS and subdomains, Basenames under .base.eth, WNS .wei, GNS .gwei, and MegaNames .mega. Uses MCP RPC overrides first, then WalletChan default RPCs.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName to resolve, e.g. vitalik.eth, name.base.eth, name.wei, name.gwei, or name.mega.

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the full burden. It does disclose the RPC fallback order and the set of supported naming systems, which is genuinely useful behavior beyond the schema. It does not describe failure behavior (error vs. null on unresolvable names) or any rate limits, leaving the read semantics partially covered.

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 tight sentences, front-loaded with the core action and followed by supported inputs and resolution order. Every sentence carries information; no filler or restatement of the title.

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-parameter read tool with no output schema, an agent still needs to know the return shape and failure mode. The description implies an EVM address return but never states it explicitly nor explains what happens when a name cannot be resolved, and it omits any differentiation from 'resolve_names'.

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 schema already gives concrete examples (vitalik.eth, name.base.eth, name.wei, name.gwei, name.mega). The description adds the mapping of suffixes to naming services, which is mild added value over the schema, so baseline 3 is correct.

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: 'Resolve a user-provided WalletChan-supported name to an EVM address.' That is unambiguous. However, the sibling tool 'resolve_names' (plural) is nearly identical in name, and the description does nothing to distinguish this singular tool from that sibling, which is a notable omission in a crowded namespace.

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 gives useful context — it enumerates supported name services (ENS, Basenames, WNS, GNS, MegaNames) and the lookup order (MCP RPC overrides, then WalletChan default RPCs) — but never says when to prefer this tool over 'resolve_names' or what to do if resolution fails. Usage is implied rather than guided.

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

resolve_namesResolve NamesC

Resolve multiple user-provided WalletChan-supported names to EVM addresses. Supports ENS/subdomains, Basenames, .wei, .gwei, and .mega.

ParametersJSON Schema
NameRequiredDescriptionDefault
namesYesNames to resolve.

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. It enumerates the supported naming services, which is useful, but says nothing about what happens to unresolvable names (skip, error, null), whether the call is all-or-nothing, which chain it resolves on, or whether any network/latency costs apply.

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

Conciseness4/5

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

Two short sentences with the core action front-loaded and the supported-domain list trailing it. Nothing is padded, though the domain enumeration reads as a bare list rather than integrated guidance.

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-parameter resolution tool there is no output schema and no annotations, so the description should at least hint at the return shape (parallel address array, ordering, failure handling). It covers the input domain well but leaves the output contract unspecified.

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

Parameters3/5

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

Schema coverage is 100% and the single parameter is documented as "Names to resolve." The description adds the supported name syntaxes (ENS/subdomains, Basenames, .wei, .gwei, .mega), which goes modestly beyond the schema but not deeply into format expectations. 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 and resource (resolve names to EVM addresses) and clarifies the input is multiple user-provided names. It does not distinguish itself from the sibling resolve_name, which is the singular counterpart, so an agent must infer the batch-vs-single split on its own.

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 explicit when-to-use guidance and no mention of the obvious alternative resolve_name. The only usage signal is implicit in the enumerations of supported name types and the plural "multiple names".

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

run_base_plugin_cliRun Base Plugin CLIB

Run a pinned, allowlisted protocol CLI command from the local WalletChan MCP process. Supports configured Base plugin CLI runners and can submit prepared transaction output through WalletChan.

ParametersJSON Schema
NameRequiredDescriptionDefault
argsNoStructured CLI arguments. Use kebab-case, camelCase, or snake_case option names.
fromNoOptional approved account for submitPreparedCalls.
chainNoOptional chain override for submitPreparedCalls.
pluginYesBase plugin runner to use.
commandYesAllowlisted CLI command, e.g. query-vaults or prepare-deposit.
profileIdNoAlias for executionProfile.
timeoutMsNoOptional CLI timeout in milliseconds. Defaults to 90000.
previewOnlyNoIf submitPreparedCalls is true, preview normalized calls without submitting.
allowWarningsNoIf submitPreparedCalls is true, allow submission despite error-level prepare warnings. Defaults to false.
atomicRequiredNoOptional atomicRequired value for submitPreparedCalls.
executionProfileNoExecution profile override. Use walletconnect for main WalletChan popup approval, agent:<walletId> for delegated 1Shot execution, or agent-eoa:<walletId> for raw local agent EOA execution. Defaults to the stored profile.
submitPreparedCallsNoIf true, normalize the CLI output and submit it to WalletChan with send_prepared_calls.

TDQS

B3.2/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 behavioral burden. It does disclose meaningful traits: commands are 'pinned' and 'allowlisted' (a safety boundary) and output can be submitted on-chain via WalletChan (a write capability). However, it omits failure modes, approval/permission requirements, and what happens when a command is not allowlisted.

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

Conciseness4/5

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

Two sentences, front-loaded with the core action and constraint. The second sentence is slightly vague about what 'configured' runners and 'prepared transaction output' mean, but nothing is wasted.

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 12-parameter tool with nested object args, no annotations, and no output schema, the description is thin. It frames the security model and the optional submission path but does not explain how command/args interact, what a runner is, or the executionProfile flow, leaving gaps for such a complex surface.

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 12 parameters are already documented in the schema (including enum values, executionProfile formats, and submitPreparedCalls semantics). The description adds no syntax or behavioral detail beyond that, so 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?

The description gives a specific verb and resource: 'Run a pinned, allowlisted protocol CLI command from the local WalletChan MCP process,' and names the runner scope (configured Base plugin CLI runners). It clearly distinguishes itself from discovery siblings like list_base_plugin_runners, though it doesn't explicitly contrast with call_protocol_tool or load_base_plugin.

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 prerequisites (e.g., that a runner must first be loaded/listed), and no named alternatives. The agent must infer that list_base_plugin_runners is the discovery step and that call_protocol_tool is a different path.

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

send_callsSend CallsB

Submit wallet calls through WalletChan RPC. Uses ERC-5792 wallet_sendCalls when the wallet supports it, otherwise sends the calls sequentially as individual user-approved transactions.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromNoOptional approved account. Defaults to the first approved WalletChan RPC account.
callsYesOrdered calls from a plugin prepare endpoint.
chainYesChain name or ID, e.g. base or 8453.
profileIdNoAlias for executionProfile.
atomicRequiredNoWhether the batch must execute atomically. Defaults to true.
executionProfileNoExecution profile override. Use walletconnect for main WalletChan popup approval, agent:<walletId> for delegated 1Shot execution, or agent-eoa:<walletId> for raw local agent EOA execution. Defaults to the stored profile.

TDQS

B3.2/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 does disclose real behavioral traits: ERC-5792 batching, and that fallback executes calls sequentially as individually user-approved transactions. It omits critical context such as what 'approved account' means, whether calls can partially succeed, and the implications of atomicRequired defaulting to true.

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

Conciseness4/5

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

Two compact sentences, front-loaded with the primary purpose and followed by the fallback behavior. No filler; the only weakness is that the fallback sentence could read as implementation trivia if the agent isn't selecting between submission paths.

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 6-parameter mutation tool with no annotations and no output schema, the description is thin. It covers the execution mechanism but omits the approval/permission model, failure semantics, and the distinction from four similarly named sibling submission tools.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds no parameter detail beyond the schema, which already documents from, calls, chain, profileId, atomicRequired, and executionProfile.

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?

Clear and specific: 'Submit wallet calls through WalletChan RPC' states verb and mechanism. It does not, however, differentiate from the close siblings send_prepared_calls, agent_eoa_send_calls, or agent_oneshot_relay_calls, so an agent cannot tell from the description which of these four submission tools to use.

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?

Explains the internal fallback mechanism (ERC-5792 vs sequential) but gives no guidance on when to choose this tool over send_transaction, send_prepared_calls, or the agent_eoa/oneshot variants. No prerequisites or preconditions are stated.

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

send_prepared_callsSend Prepared CallsA

Normalize a Base plugin prepare response into wallet calls and submit it through WalletChan. Accepts common shapes like transactions[], calls[], {data:{to,value,data}}, and approval+action objects. Non-batching wallets get sequential transaction fallback.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromNoOptional approved account. Defaults to the first approved WalletChan RPC account.
chainNoOptional chain override. Defaults to the chain in the prepared response or base.
preparedYesRaw prepare response from a harness-fetched Base plugin API, harness-run CLI, or harness-configured MCP.
profileIdNoAlias for executionProfile.
previewOnlyNoIf true, only return normalized calls without submitting to WalletChan.
allowWarningsNoIf true, allow submission even when the prepared response contains error-level warnings. Defaults to false.
atomicRequiredNoWhether the batch must execute atomically. Defaults to true.
executionProfileNoExecution profile override. Use walletconnect for main WalletChan popup approval, agent:<walletId> for delegated 1Shot execution, or agent-eoa:<walletId> for raw local agent EOA execution. Defaults to the stored profile.

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 does disclose useful behavior: accepted input shapes and a sequential fallback for non-batching wallets. But it omits permission/auth requirements, whether submission is irreversible, and what the fallback means for atomicity. Partial coverage for a mutation tool with zero annotation support.

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 tight sentences with the core action front-loaded, then accepted shapes, then fallback behavior. No filler, though the shape list is compacted rather than fully explained.

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 an 8-parameter mutation tool with no annotations and no output schema, the description covers input normalization and fallback but leaves return values, auth needs, and error/warning handling (beyond the allowWarnings flag in schema) undescribed.

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 documents all 8 parameters including defaults and the executionProfile enum-like values. The description adds the normalization-shape context but no parameter-level detail beyond the schema, so baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb chain (normalize + submit) on a specific resource (Base plugin prepare response) and names the transport (WalletChan). This distinguishes it clearly from send_calls, send_transaction, and agent_oneshot_relay_calls.

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

Usage Guidelines3/5

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

The description implies the tool is for harness-fetched Base plugin prepare responses, which implies usage context, but it never states when to prefer it over send_calls or agent_oneshot_relay_calls, nor any prerequisites or exclusions.

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

send_transactionSend TransactionC

Start a single eth_sendTransaction request through WalletChan RPC for user approval.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNo
dataNoCalldata hex. Defaults to 0x.
fromNoOptional approved sender. Defaults to the first approved WalletChan RPC account.
chainYesChain name or ID.
valueNoHex or decimal wei string. Defaults to 0x0.
profileIdNoAlias for executionProfile.
executionProfileNoExecution profile override. Use walletconnect for main WalletChan popup approval, agent:<walletId> for delegated 1Shot execution, or agent-eoa:<walletId> for raw local agent EOA execution. Defaults to the stored profile.

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 burden. It usefully discloses that the call only 'starts' a request and requires 'user approval' (implying an async, human-gated flow), but it does not say what happens after starting, whether anything is irreversible, what auth/permissions are needed, or how the request is later resolved.

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, and the approval/transport information arrives immediately. It is appropriately sized for what it attempts, though the brevity contributes to the coverage gaps elsewhere.

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 7-parameter transaction-submitting tool with no annotations and no output schema, the description is too thin. It omits the approval lifecycle (e.g., that status is later checked via get_request_status), the difference between execution profiles, and any routing guidance among the many send_* and sign siblings.

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 86%, so the property descriptions already document to/data/from/chain/value/profileId/executionProfile. The prose adds only the framing of a single transaction and the WalletChan RPC route, so the baseline of 3 is appropriate.

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 names a specific verb ('Start'), the underlying resource ('eth_sendTransaction request'), and the transport ('WalletChan RPC'), and the word 'single' hints at the distinction from the batch-oriented send_calls / send_prepared_calls siblings. It stops short of explicitly naming an alternative, so an agent must infer the contrast.

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 or when-not-to-use guidance. With siblings like send_calls, send_prepared_calls, agent_eoa_send_transaction, and agent_oneshot_relay_calls all capable of sending transactions, the description never says which path to pick or what prerequisites apply.

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

set_default_execution_profileSet Default Execution ProfileA

Store the default execution profile for future mutating WalletChan MCP tools. Use walletconnect for the main WalletChan wallet, agent: for delegated agent execution, or agent-eoa: for raw local agent EOA execution.

ParametersJSON Schema
NameRequiredDescriptionDefault
profileIdYesExecution profile ID. The aliases agent and agent-eoa work only when exactly one agent wallet exists.

TDQS

A4/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 setting is persistent and affects future mutating tools, but omits whether an existing default is overwritten, whether auth is required, or what happens if the profile ID is invalid.

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, zero filler, with the action and scope front-loaded ahead of the value enumeration. Every clause earns its place.

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 single-parameter setter with no output schema and no annotations, the description covers purpose, scope, and value syntax adequately. Only edge-case behavior (overwrite, invalid ID, persistence duration) is left unstated.

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 goes further by enumerating the three concrete profile ID forms (walletconnect, agent:<walletId>, agent-eoa:<walletId>) that the schema only gestures at. That is genuine added meaning beyond the schema.

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

Purpose5/5

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

States a specific verb ('Store'), the resource ('default execution profile'), and the scope ('for future mutating WalletChan MCP tools'), which distinguishes it cleanly from the get/list/clear_default_execution_profile siblings. An agent knows exactly what state this mutates.

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 explains the valid profile values but never states when to prefer setting a persistent default versus passing a profile per call, nor whether this must precede other tool calls. Usage is implied rather than guided.

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

signSignB

Start a WalletChan signature request. The user approves in the WalletChan popup.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNoFor personal_sign, may be { message }. For typed-data signing, pass the typed data object or JSON string.
typeNoSignature method. Defaults to personal_sign.
chainNoOptional chain name or ID.
addressNoOptional approved signer address. Defaults to the first approved WalletChan RPC account.
messageNoMessage for personal_sign, or typed-data JSON string.

TDQS

B3.2/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 approval happens asynchronously in a popup, which is non-obvious. But it omits whether the call blocks or returns a pending handle, and gives no hint that completion must be checked via the get_request_status sibling.

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 short sentences, front-loaded with the action and immediately followed by the salient behavioral fact. No filler.

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 5-parameter tool with no annotations and no output schema, the description is thin. It never says what the tool returns (a request ID or a signature), how the caller retrieves the result, or that it relates to get_request_status, leaving the agent without the information needed to complete the flow.

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 every parameter (data, type, chain, address, message) is already documented in the schema, including the enum values and defaults. The description adds nothing beyond this, so the 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 ('Start') and resource ('WalletChan signature request'), so an agent knows this initiates a signing flow. However, it does not distinguish itself from the sibling sign_siwe or explain whether it covers personal_sign vs typed data (that detail lives only in the schema).

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 only guidance is the approval-flow note ('The user approves in the WalletChan popup'). There is no statement of when to use this versus sign_siwe or send_transaction, no prerequisites, and no indication of what happens after the request starts.

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

sign_siweSign SIWEB

Validate an EIP-4361 SIWE message, then start a WalletChan personal_sign request for the exact message.

ParametersJSON Schema
NameRequiredDescriptionDefault
uriNoSIWE URI, used only when message is omitted.
chainNoOptional chain name or ID. Must match the SIWE Chain ID when provided.
nonceNoSIWE nonce, used only when message is omitted.
domainNoSIWE domain, used only when message is omitted.
addressNoOptional signer address. Must match the SIWE message address when message is provided.
chainIdNoSIWE Chain ID, used only when message is omitted.
messageNoExact SIWE message to sign. Preferred when returned by a protocol login_start tool.
versionNoSIWE version. Defaults to 1 when message is omitted.
issuedAtNoSIWE issued-at timestamp, used only when message is omitted.
notBeforeNoOptional SIWE not-before timestamp.
requestIdNoOptional SIWE request ID.
resourcesNoOptional SIWE resource URIs.
statementNoOptional SIWE statement.
walletAddressNoAlias for address.
expirationTimeNoOptional SIWE expiration timestamp.

TDQS

B3.2/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 validation precedes the request and that a personal_sign request is *started* (not completed), and stresses the exact message is signed. It omits permissions/auth requirements, what the call returns, and how to continue the flow after the request starts.

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 efficient sentence with the validate-then-sign sequence front-loaded and no filler. It is arguably too terse for a 15-parameter signing tool, but on the conciseness axis itself there is 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?

The schema is rich (100% coverage) and covers inputs well, but for a signing flow with zero annotations and no output schema, the description should clarify the security/permission implications and what the started request yields. As written, an agent knows the inputs but not the operational consequences.

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 every one of the 15 parameters is self-documented, including the 'message omitted' vs 'message provided' distinction. The description adds no parameter-level meaning beyond the schema, which is the expected baseline when the schema does the heavy lifting.

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 names a specific two-step operation: validate an EIP-4361 SIWE message, then start a WalletChan personal_sign request. That is a clear verb+resource. It does not, however, distinguish this from siblings like 'sign' or 'start_remote_mcp_siwe_login'/'complete_remote_mcp_siwe_login', so an agent must infer the boundary.

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 guidance and names no alternatives. The useful routing hint ('Preferred when returned by a protocol login_start tool') lives only in the schema for the 'message' property, not in the description, leaving the agent without explicit selection criteria.

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

start_remote_mcp_siwe_loginStart Remote MCP SIWE LoginA

Start an allowlisted remote MCP SIWE login, preserve the exact challenge, and open a WalletChan signature request.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNoOptional chain name or ID. Defaults to the SIWE message chain.
addressNoOptional approved signer address. Defaults to the first approved WalletChan RPC account.
profileYesAllowlisted remote MCP profile. Currently: virtuals.

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 burden. It usefully discloses three behavioral facts: the profile must be allowlisted, the exact challenge is preserved, and a WalletChan signature request is opened (a real side effect). However it omits what happens on failure, whether the call is idempotent, or what state the agent must retain for the follow-up call.

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?

A single sentence with zero waste, front-loading the action and then the two key behaviors. Nothing is padded or 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?

With no output schema and no annotations, the description should carry more weight. It adequately conveys the initiation and the signature-request side effect, but says nothing about the return value (challenge handle?) or that the agent must follow up with complete_remote_mcp_siwe_login, leaving a gap in a stateful flow.

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 chain, address, and profile are already documented in the schema, including defaults and the 'virtuals' allowlist value. The description adds no parameter-level detail beyond the schema, so baseline 3 is correct.

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 (start) and resource (allowlisted remote MCP SIWE login), which clearly distinguishes it from the sibling complete_remote_mcp_siwe_login. An agent can tell this is the initiation half of a two-step flow without opening any schema.

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 word 'Start' implies this is the first step of a login flow, and the sibling complete_remote_mcp_siwe_login hints at the continuation, but the description never explicitly says when to call this versus sign_siwe or what prerequisite/next step applies. Usage is only implied.

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

swapSwapB

Quote a WalletChan swap, build needed approval plus swap calls, and submit them to WalletChan for popup approval unless previewOnly is true.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromNoOptional approved WalletChan sender. Defaults to first approved account.
chainNoChain name or ID. Defaults to the active WalletChan RPC chain.
takerNoAlias for from.
submitNoSet false to return quote and prepared calls without submitting to WalletChan.
buyTokenYesBuy token address, symbol from the WalletChan token list, or native/ETH.
decimalsNoOptional token decimals when sellToken is an address not in the token list.
profileIdNoAlias for executionProfile.
recipientNoOptional recipient for bought tokens.
sellTokenYesSell token address, symbol from the WalletChan token list, or native/ETH.
sellAmountNoDecimal sell amount in token units, e.g. 1.5. Use sellAmountWei for base units.
previewOnlyNoIf true, return quote and prepared calls without submitting to WalletChan.
slippageBpsNoSlippage in basis points. Defaults to 500 (5%).
allowWarningsNoIf true, allow submission despite balance/liquidity warnings. Defaults to false.
sellAmountWeiNoOptional base-unit sell amount as an integer string.
tokenDecimalsNoAlias for decimals.
atomicRequiredNoWhether the WalletChan call batch must execute atomically. Defaults to true with automatic non-atomic fallback.
executionProfileNoExecution profile override. Use walletconnect for main WalletChan popup approval, agent:<walletId> for delegated 1Shot execution, or agent-eoa:<walletId> for raw local agent EOA execution. Defaults to the stored profile.

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 disclosure burden, and it does add real context: it quotes, builds approval plus swap calls, and submits for a popup approval unless previewOnly is set. It does not disclose permission/auth requirements, failure modes, gas implications, or what happens on submission rejection. Solid on the core flow, thin on edge behavior.

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 dense sentence with the core action front-loaded and no wasted words. The trailing 'unless previewOnly is true' qualifier is slightly tacked-on but earns its place by modifying the default behavior.

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 17-parameter swap tool with no output schema and no annotations, the description covers the main flow but omits return-shape context (quote object vs submitted transaction) and the non-atomic fallback mentioned in the schema. It is adequate but not complete for the tool's complexity.

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 documents all 17 parameters in detail. The description gestures at previewOnly but adds no syntax, defaults, or alias behavior beyond what the schema provides. Baseline 3 is correct when the schema does the heavy lifting.

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 specific verbs and resource: quote a WalletChan swap, build approval plus swap calls, and submit for popup approval. An agent can tell this is a swap-execution tool, distinct from the sibling 'bridge'. It stops short of explicitly contrasting with get_swap_price, which also quotes swaps, so it is clear but not fully sibling-differentiated.

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 'unless previewOnly is true' clause implies a preview-vs-execute usage mode, and submit=false is documented in the schema. However there is no explicit when-to-use guidance, no routing to alternatives like get_swap_price or bridge, and no stated prerequisites. Usage is implied rather than stated.

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

veil_deposit_statusVeil Deposit StatusC

Check one queued Veil deposit by pool and nonce. Owner defaults to the first approved WalletChan account.

ParametersJSON Schema
NameRequiredDescriptionDefault
poolYes
nonceYes
ownerNoOwner address. Defaults to first approved WalletChan account.

TDQS

C2.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses the meaningful default-owner behavior ('first approved WalletChan account'), but says nothing about what statuses can be returned, required auth, or whether checking is idempotent/side-effect-free.

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

Conciseness4/5

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

Two short sentences with the core action front-loaded and no wasted prose. Efficient, though extremely terse for the behavioral gaps it leaves open.

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?

With no annotations and no output schema, the description is the only source of behavioral context, yet it omits the shape/meaning of a 'status' result and any error conditions. For a status-check tool this leaves meaningful gaps.

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

Parameters2/5

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

Schema coverage is only 33%: 'pool' and 'nonce' have no schema descriptions, and the description merely restates that the lookup is 'by pool and nonce' without explaining nonce format or pool semantics. Only 'owner' is documented, and that documentation lives in the schema itself, so the description adds little.

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 ('Check') and resource ('queued Veil deposit'), scoped to a single deposit identified by pool and nonce. It is distinguishable from siblings like veil_status and veil_wait_for_deposit, though it does not explicitly name what those do differently.

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 word 'queued' implies this is for pending/in-flight deposits, but there is no explicit when-to-use, when-not-to-use, or named alternative (e.g., veil_wait_for_deposit for blocking). The agent must infer the routing itself.

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

veil_get_balancesVeil BalancesB

Read public wallet balances, Veil queue balances, and private balances when the managed Veil key is available.

ParametersJSON Schema
NameRequiredDescriptionDefault
poolNoPool to query. Defaults to all.
ownerNoOwner address. Defaults to first approved WalletChan account.

TDQS

B3.3/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 does disclose that private balances require the managed Veil key to be available, which is a useful prerequisite, but it omits auth requirements for public/queue balances and does not describe return behavior or error handling.

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 definition is a single, front-loaded sentence with no filler. It states the action and the balance categories immediately, then adds the key condition without redundancy.

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, read-only tool with 100% schema coverage and no output schema, the description names the returned balance categories and a key prerequisite. It still leaves sibling differentiation and richer return or failure details implicit, so it is adequate but not 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 description coverage is 100%, so both parameters are already documented in the input schema. The description adds no parameter-level detail (e.g., enum meaning or owner default behavior), leaving the baseline score of 3.

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 uses a specific verb ('Read') and names three balance categories, making the tool's purpose clear. However, it does not differentiate this tool from sibling balance-readers such as get_portfolio_balances or agent_eoa_get_balance.

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 only conditional language is 'when the managed Veil key is available' for private balances, but there is no explicit when-to-use guidance or mention of alternative balance tools. An agent must infer when this tool is preferable.

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

veil_init_keypairInitialize Veil KeypairB

Generate a random local Veil keypair in WalletChan MCP's managed Veil data directory. Returns the public deposit key but never returns VEIL_KEY.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoOverwrite an existing managed Veil keypair.

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 burden and does disclose meaningful behavior: it writes into a managed data directory and returns the public deposit key while never exposing VEIL_KEY. However, it omits what happens if a keypair already exists, whether the operation is destructive to existing keys, and any permission or auth requirements.

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 with the core action front-loaded and the security-relevant return behavior stated immediately after. No filler or redundancy.

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 single-optional-param tool with no output schema and no annotations, the description covers what it does and what it returns (and notably what it does not return). It is nearly complete, missing only the pre-existing-keypair behavior that the force parameter implies.

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 force parameter ('Overwrite an existing managed Veil keypair') is already fully documented in the schema. The description adds no additional semantics about force beyond that baseline.

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 gives a specific verb and resource — 'Generate a random local Veil keypair' — and localizes it to the managed Veil data directory. It is clearly distinguishable from siblings like veil_status or sign, though it does not explicitly name a sibling it contrasts with.

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 call this versus alternatives, nor any prerequisite (e.g., whether a keypair already exists, whether veil_status should be checked first). Usage must be inferred from the word 'Initialize' and the force parameter.

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

veil_pay_x402Pay x402 ResourceA

Pay a Veil-supported x402 v2 exact Base USDC resource from private Veil USDC. Requires maxPayment and confirm=true after explicit user approval because this submits through the Veil relay without a WalletChan popup.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesx402-protected resource URL.
bodyNoRequest body for POST: a JSON object or raw string.
methodNoHTTP method. Defaults to GET in Veil MCP.
confirmYesMust be true after explicit user approval of the private USDC payment.
headersNo
forceFreshNoSkip funded-payer reuse and withdraw to a new payer EOA.
maxPaymentYesMaximum USDC to pay, e.g. 0.10. Required by WalletChan MCP for x402 payments.
payerIndexNoOptional deterministic payer EOA index to reuse or top up after a failed/funded attempt.

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral burden and does disclose meaningful traits: the submission goes through the Veil relay without a WalletChan popup and requires explicit user approval with confirm=true. Gaps remain around irreversibility of the payment and authentication/keypair requirements, but the relay-path and approval disclosures are genuinely useful context.

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

Conciseness4/5

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

Two tightly written sentences with no padding, front-loading the core action ('Pay a Veil-supported x402 ... resource') before the approval requirement. Efficient and well-ordered, though the second sentence is dense enough that it could be slightly clearer.

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 payment tool with 8 parameters, no annotations, and no output schema, the definition covers purpose and the approval/relay behavior but omits failure handling, what a successful payment returns, and the authentication context. Adequate but with clear gaps relative to the tool's complexity.

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 high (88%), so the schema already documents url, body, method, headers, confirm, maxPayment, forceFresh, and payerIndex. The description only restates that maxPayment and confirm are required, adding no new semantic detail such as payment format or forceFresh/payerIndex behavior, so the 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 and resource: paying a Veil-supported x402 v2 exact Base USDC resource from private Veil USDC, which is far more precise than a generic 'pay' statement. However, it does not name or contrast against relevant siblings such as veil_x402_quote or agent_x402_pay, so differentiation relies on the reader already knowing the ecosystem.

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 gives an implied condition of use ('requires ... confirm=true after explicit user approval') and a rationale (no WalletChan popup), which is useful context. But it never states when to prefer this over veil_x402_quote or agent_x402_pay, nor any when-not guidance, so usage is only inferable.

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

veil_prepare_depositPrepare Veil DepositA

Prepare unsigned Base calldata for ETH or USDC Veil deposit. Set submitPreparedCalls=true to submit through WalletChan popup approval.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromNoOptional approved WalletChan sender for submission.
assetYes
chainNoOptional WalletChan chain override for submission. Defaults to base.
ownerNoOwner address. Defaults to first approved WalletChan account.
amountYesNet amount intended to arrive in Veil, e.g. 0.1.
previewOnlyNoIf true with submitPreparedCalls, normalize calls without submitting.
allowWarningsNoAllow error-level prepared-call warnings only after explicit user confirmation.
atomicRequiredNoWhether WalletChan batch execution must be atomic.
submitPreparedCallsNoIf true, submit the prepared calls through WalletChan after Veil prepares them.

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description carries the full disclosure burden. It usefully clarifies that the output is unsigned calldata and that submission happens only under submitPreparedCalls with WalletChan popup approval, but it omits permissions requirements, what happens on warnings/atomicity failures, and whether any on-chain action is taken by default.

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 with no filler; the core purpose is front-loaded and the submission flag guidance follows immediately. Every clause carries information relevant to invoking the tool.

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 9-parameter preparation tool with no output schema, the description does not explain the shape or downstream use of the produced calldata (e.g., that it feeds send_prepared_calls) or the default non-submitting behavior. It is adequate to attempt a call but leaves notable gaps an agent would need to fill.

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 89%, so the schema already documents nearly every parameter, including owner, chain, previewOnly, allowWarnings, and atomicRequired. The description only names submitPreparedCalls and the ETH/USDC asset set, adding marginal meaning beyond the already-rich schema — the 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?

The description states a specific verb ('Prepare') and resource ('unsigned Base calldata for ETH or USDC Veil deposit'), making the tool's intent immediately graspable. It is distinguishable from most siblings by naming the Veil deposit asset scope, though it does not explicitly contrast with neighbors like veil_prepare_register or send_prepared_calls.

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 one concrete usage cue — set submitPreparedCalls=true to submit through WalletChan popup approval — which is helpful in-line guidance. However, it never states when to prefer this tool over alternatives such as send_prepared_calls or when only previewing is appropriate, leaving the main routing decision to inference.

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

veil_prepare_registerPrepare Veil RegisterB

Prepare unsigned Base calldata to register or rotate the managed Veil deposit key. Set submitPreparedCalls=true to submit through WalletChan popup approval.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromNoOptional approved WalletChan sender for submission.
chainNoOptional WalletChan chain override for submission. Defaults to base.
forceNoPrepare changeDepositKey when already registered with a different key.
ownerNoOwner address. Defaults to first approved WalletChan account.
previewOnlyNoIf true with submitPreparedCalls, normalize calls without submitting.
allowWarningsNoAllow error-level prepared-call warnings only after explicit user confirmation.
atomicRequiredNoWhether WalletChan batch execution must be atomic.
submitPreparedCallsNoIf true, submit the prepared calls through WalletChan after Veil prepares them.

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 burden. It discloses two important traits: the calldata is unsigned/prepared rather than executed, and actual submission requires WalletChan popup approval. It says nothing about what happens on an already-registered key (only implied by the schema's force field) or about failure/warning behavior.

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

Conciseness4/5

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

Two short sentences with the core operation front-loaded and the submission mode second. No filler, though it is a bit terse relative to the tool's 8-parameter surface.

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 an 8-parameter, no-annotation, no-output-schema preparation tool, the description covers the primary flow but omits the previewOnly/allowWarnings/atomicRequired interaction semantics and does not describe the returned calldata shape. Adequate but incomplete.

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 every parameter is already documented in the schema; baseline 3 applies. The description reinforces submitPreparedCalls and mentions the registration/rotation state that force addresses, but adds little beyond the schema text.

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 (prepare) and resource (unsigned Base calldata to register or rotate the managed Veil deposit key), which is a distinct operation an agent can recognize. It does not explicitly differentiate itself from the nearby sibling veil_prepare_deposit, which is the main gap.

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 second sentence explains the submitPreparedCalls=true path and that submission goes through a WalletChan popup approval, which is useful invocation context. However, there is no guidance on when to prefer this over veil_prepare_deposit, sign, or send_prepared_calls, and no preconditions are stated.

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

veil_statusVeil StatusB

Check local Veil key status, relay health, and optional owner registration/wallet status on Base.

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerNoOptional owner address for registration and wallet status checks.

TDQS

B3.2/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 implies a non-mutating read by using 'Check' and enumerates the three things inspected, which is useful. However, it says nothing about auth requirements, whether the owner address must already be registered, or the shape of the response.

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 well-formed sentence that leads with the primary resource (local Veil key status) before the secondary relay and optional owner checks. Dense but 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 no-annotation, no-output-schema, single-optional-param read tool, the description covers what is inspected but leaves the agent without return-value expectations or prerequisites. Adequate but with clear gaps for a status/diagnostic tool.

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 single owner parameter is already documented in the schema with its pattern and purpose. The description's mention of owner registration/wallet status merely echoes the schema's description, adding no new format or conditional detail.

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 ('Check') and enumerates the resources covered: local Veil key status, relay health, and optional owner registration/wallet status. This differentiates it from siblings like veil_get_balances and veil_deposit_status, though it doesn't explicitly name which sibling it displaces.

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 when-to-use or when-not-to-use guidance is given, and no alternative sibling is named. The phrase 'optional owner registration/wallet status' hints at when to supply owner, but the agent must infer the diagnostic context on its own.

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

veil_subaccount_statusVeil Subaccount StatusC

Read Veil subaccount status for a local Veil key slot.

ParametersJSON Schema
NameRequiredDescriptionDefault
slotYes

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 burden. 'Read' implies a non-mutating lookup, but there is no mention of what happens if the slot/key doesn't exist, required auth, or cost/latency. For a slot-keyed read with zero annotation coverage, this is thin.

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 or redundancy. It is efficient, though its brevity borders on under-specification rather than tight conciseness.

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 one parameter, no annotations, and no output schema, the surface area is small, so the description is near-adequate. However, it never says what 'status' contains or how it relates to the sibling veil_status / veil_deposit_status tools, leaving a meaningful gap for an agent.

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 0%, so the bare 'slot: number' schema documents nothing. The phrase 'local Veil key slot' does add meaning by indicating the slot identifies a local key, but it gives no valid range, format, or default.

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 ('Read') and resource ('Veil subaccount status'), and scopes it to 'a local Veil key slot'. This does distinguish it somewhat from siblings like veil_status and veil_deposit_status, though it never explicitly contrasts with them. Purpose is clear but not fully differentiated.

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 indication of when to call this versus veil_status, veil_deposit_status, or veil_get_balances, nor any precondition such as requiring a previously initialized keypair. Usage is left entirely to inference from the name.

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

veil_wait_for_depositWait for Veil DepositB

Poll one queued Veil deposit until accepted, rejected, refunded, or timeout.

ParametersJSON Schema
NameRequiredDescriptionDefault
poolYes
nonceYes
ownerNoOwner address. Defaults to first approved WalletChan account.
timeoutSecondsNoTimeout in seconds. Veil MCP max is 1800.
intervalSecondsNoPoll interval in seconds.

TDQS

B3.2/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, and it does disclose the important blocking/polling behavior and the set of terminal outcomes. However it omits what happens on timeout (error vs. last status), the default poll/timeout behavior, and any idempotency or safety notes for a long-running call.

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?

A single front-loaded sentence with no filler; the verb, scope, and terminal conditions are all packed in without redundancy.

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 blocking poll with a 5-parameter surface, no annotations, and no output schema, the definition is too thin. It should clarify the return on timeout, the default/max timeout relationship to the schema, and how the deposit is identified, none of which are covered elsewhere.

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

Parameters2/5

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

Schema description coverage is 60%, so the description is expected to compensate, and it does not: pool, nonce, owner, timeoutSeconds, and intervalSeconds are never referenced. 'One queued Veil deposit' only loosely gestures at the pool+nonce identifiers without adding format or meaning.

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 gives a specific verb (poll) and resource (a single queued Veil deposit) plus the terminal conditions it waits on. It is clear what the tool does, but it never names or contrasts with the obvious sibling veil_deposit_status, so sibling differentiation is left to 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 Guidelines3/5

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

Naming the terminal states (accepted/rejected/refunded/timeout) implies the 'wait until the deposit resolves' scenario, so usage is implied. There is no explicit when-to-use-vs-alternative or when-not guidance, e.g. whether to prefer this over veil_deposit_status for a non-blocking check.

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

veil_x402_payer_balancesx402 Payer BalancesC

Inspect Base USDC balances held by deterministic x402 payer EOAs for the managed Veil key.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNo
discoverNo
startIndexNo
nonZeroOnlyNo

TDQS

C2.7/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. 'Inspect' implies a read-only operation, but the description does not explicitly state that it is non-destructive, what permissions or key state are required, or whether there are rate limits or caching considerations.

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?

A single front-loaded sentence with no wasted words. The core purpose and scope are immediately clear, making efficient use of the space.

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 tool with four undocumented optional parameters, no annotations, and no output schema, the description is too sparse. It provides purpose but omits any explanation of the parameters, usage context, or behavioral constraints an agent needs to call it correctly.

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

Parameters1/5

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

The schema has 4 parameters with 0% description coverage, and the description mentions none of them (count, discover, startIndex, nonZeroOnly). It therefore adds no meaning beyond the bare schema and fails to compensate for the complete lack of parameter documentation.

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 uses a specific verb ('Inspect') and a precise resource ('Base USDC balances held by deterministic x402 payer EOAs for the managed Veil key'). It clearly identifies the domain, though it does not explicitly differentiate this tool from close siblings like veil_x402_receipts or agent_eoa_get_balance.

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 states what the tool does but gives no guidance on when to use it versus alternatives such as veil_get_balances or agent_eoa_get_balance. There are no prerequisites, exclusions, or conditions mentioned.

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

veil_x402_quoteQuote x402 ResourceB

Probe an x402 resource without funding or paying from private Veil USDC.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
bodyNo
methodNo
headersNo
maxPaymentNo

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It usefully discloses the key safety trait: no USDC is spent and no funding is required to probe. But it says nothing about what the probe returns, whether it hits the network, rate limits, or error behavior for a 402 response.

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. It is efficient, though arguably too terse given the five-parameter surface it governs.

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 payments-adjacent tool with five undocumented parameters, no annotations, and no output schema, the definition omits essential details: what a quote response contains, whether maxPayment caps anything, and how it relates to the paying sibling. It is well short of complete.

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

Parameters2/5

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

Schema coverage is 0% across 5 parameters, including the undocumented body, headers, method, and maxPayment. The description hints at payment concern ('without... paying') but does not explain maxPayment, what body/headers carry, or how the enum on method is used, so it fails to compensate for the coverage gap.

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 ('Probe') and resource ('x402 resource'), and the qualifier 'without funding or paying' implies the contrast with a paying sibling. However it never names veil_pay_x402 or veil_x402_receipts, so differentiation is left implicit rather than explicit.

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 phrase 'without funding or paying' implies the use case (inspect an x402 resource before committing funds), but no explicit when-to-use rule or named alternative is given. An agent must infer that veil_pay_x402 is the paid counterpart.

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

veil_x402_receiptsx402 Spend HistoryC

List locally recorded Veil x402 payment receipts.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

TDQS

C2.8/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. 'Locally recorded' hints the data comes from local storage rather than a network call, but nothing is said about read-only nature, ordering, auth needs, or response shape — a significant gap for a tool with zero annotation coverage.

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 key verb and resource, with no filler. It is efficient, though the thinness reflects under-specification rather than deliberate conciseness.

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 read-only list tool with one optional parameter and no output schema, the description is minimally viable. But the undocumented 'limit' and absent usage/behavioral context leave meaningful gaps.

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

Parameters2/5

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

Schema description coverage is 0% for the single 'limit' parameter, so the description must compensate — and it does not. It never mentions the limit or its semantics; only the intuitive notion of a list-count keeps this above 1.

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 (Veil x402 payment receipts), and 'locally recorded' adds scoping. However it does not differentiate from siblings like veil_x402_quote or veil_pay_x402, leaving the agent to infer the boundary.

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 when-to-use guidance, no prerequisites, and no mention of alternatives. The description only asserts what the tool does, leaving usage entirely to inference.

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

web_requestWeb RequestB

Call an allowlisted HTTPS protocol API from the local WalletChan MCP process. Use this for Base plugin web_request paths when the host is allowed.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesHTTPS URL on an allowlisted protocol host.
bodyNoOptional string or JSON body for POST requests.
methodNoHTTP method. Defaults to GET.
headersNoOptional string headers. Authorization, Cookie, Host, and proxy headers are blocked.
timeoutMsNoOptional request timeout in milliseconds. Defaults to 30000.

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries full behavioral burden, yet it only adds the allowlist and local-process context. It does not disclose error/blocked-host behavior, response format, redirect handling, or auth requirements beyond what the schema already states about blocked headers.

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

Conciseness4/5

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

Two short, front-loaded sentences with no filler. The second sentence is slightly circular ('web_request ... web_request paths'), but overall it is tight and appropriately sized.

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 tool with 5 parameters, a nested headers object, no annotations, and no output schema, the description is thin. It omits what a response looks like and failure modes, though the rich schema partially compensates for the parameter side.

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 documents url, body, method, headers and timeoutMs with defaults and blocked-header rules. The description adds no additional parameter meaning, so the 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 clear verb+resource: calling an allowlisted HTTPS API from the local MCP process. It is specific about the mechanism and scope, though it does not distinguish itself from the many other protocol-calling siblings (e.g., call_protocol_tool, run_base_plugin_cli) beyond naming 'web_request paths'.

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 second sentence gives an implied usage condition ('for Base plugin web_request paths when the host is allowed'), which is more than nothing. However it names no alternative tools and gives no explicit when-not guidance, leaving the agent to infer when to prefer this over the other protocol invocation siblings.

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. 65 tool updatesv0.4.0
    • First observedagent_complete_delegation
    • First observedagent_create_wallet
    • First observedagent_delete_delegation
    • First observedagent_delete_wallet
    • First observedagent_eoa_get_balance
    • First observedagent_eoa_send_calls
    • First observedagent_eoa_send_transaction
    • First observedagent_get_delegation
    • First observedagent_get_wallet
    • First observedagent_import_wallet
    • First observedagent_list_delegations
    • First observedagent_list_wallets
    • First observedagent_oneshot_get_capabilities
    • First observedagent_oneshot_get_fee_data
    • First observedagent_oneshot_get_status
    • First observedagent_oneshot_relay_calls
    • First observedagent_prepare_delegation
    • First observedagent_request_delegation_signature
    • First observedagent_reset_vault
    • First observedagent_x402_pay
    • First observedagent_x402_quote
    • First observedbridge
    • First observedcall_protocol_tool
    • First observedcall_remote_mcp_tool
    • First observedclear_default_execution_profile
    • First observedcomplete_remote_mcp_siwe_login
    • First observedget_bridge_quote
    • First observedget_bridge_status
    • First observedget_default_execution_profile
    • First observedget_pairing_uri
    • First observedget_portfolio_balances
    • First observedget_request_status
    • First observedget_swap_price
    • First observedget_wallets
    • First observedlist_base_plugin_runners
    • First observedlist_execution_profiles
    • First observedlist_protocol_tools
    • First observedlist_protocols
    • First observedlist_remote_mcp_tools
    • First observedlist_skill_resources
    • First observedload_base_plugin
    • First observedresolve_name
    • First observedresolve_names
    • First observedrun_base_plugin_cli
    • First observedsend_calls
    • First observedsend_prepared_calls
    • First observedsend_transaction
    • First observedset_default_execution_profile
    • First observedsign
    • First observedsign_siwe
    • First observedstart_remote_mcp_siwe_login
    • First observedswap
    • First observedveil_deposit_status
    • First observedveil_get_balances
    • First observedveil_init_keypair
    • First observedveil_pay_x402
    • First observedveil_prepare_deposit
    • First observedveil_prepare_register
    • First observedveil_status
    • First observedveil_subaccount_status
    • First observedveil_wait_for_deposit
    • First observedveil_x402_payer_balances
    • First observedveil_x402_quote
    • First observedveil_x402_receipts
    • First observedweb_request

TDQS

C2.8/5.0

Scored across 65 tools

Disambiguation2/5

Many tools have overlapping or layered purposes, e.g., send_transaction/send_calls/send_prepared_calls/agent_eoa_send_transaction/agent_eoa_send_calls, veil_deposit_status vs veil_wait_for_deposit, resolve_name vs resolve_names, and separate veil vs agent x402 quote/pay paths. Descriptions help, but an agent must still disambiguate between nearly identical wallet, agent, and Veil execution routes.

Naming Consistency3/5

Most names use snake_case, but the set mixes verb_noun (get_request_status), noun-only (swap, bridge, sign), and prefixed variants (veil_, agent_, list_, get_, send_). The conventions are readable but not predictable enough for a consistent naming score.

Tool Count1/5

65 tools is an extreme mismatch for a single MCP server, far beyond the typical 3-15 well-scoped range. The surface includes many overlapping variants and layers, making the set difficult to navigate rather than each tool clearly earning its place.

Completeness3/5

The surface covers a broad domain: wallet signing, transactions, swaps, bridges, agent wallets, delegations, Veil privacy, x402 payments, and protocol integrations. However, notable lifecycle gaps remain, such as onchain delegation revocation, transaction history/update/cancel operations, and explicit approval management.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    C
    quality
    B
    maintenance
    Enables AI agents to interact with any EVM-compatible blockchain through natural language, supporting token swaps, cross-chain bridges, staking, lending, governance, gas optimization, and portfolio tracking across networks like Ethereum, BSC, Polygon, Arbitrum, and more.
    100
    36 npm
    42
    -
  • 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
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to perform blockchain operations like wallet management, token info, DeFi swaps, cross-chain bridging, and price checking across Ethereum, BNB Chain, and Solana.
    -