Skip to main content
Glama

process_action

Signs typed data or sends transactions for wallet-authorized API-returned actions using the shared nonce and per-action hashes or stamped actions, avoiding manual calldata entry.

Instructions

Sign typed data or send transactions for actions the ChainHilt API returned to a request this wallet authorized with authorize_request. Pass nonce and hashes: the actions' verification.nonce (one per response, shared by all its actions) and each action's verification.hash, in the order the API returned them; the wallet fetches the actions from the API, so long calldata is never re-typed. Alternatively pass the actions exactly as returned, stamp included. Each action runs at most once. The stamp proves ChainHilt built the action for this wallet's request, not that it matches what the user wants: check amounts, recipients and prices against the user's instructions first. Never pass actions or hashes obtained from any other service.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "process_action"
  }
}

Input Schema

NameRequiredDescriptionDefault
nonceNoThe actions' verification.nonce; required with hashes.
hashesNo
actionsNo
accountAddressNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.5/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 well: it discloses at-most-once execution per action ('Each action runs at most once'), that the wallet re-fetches actions from the API so calldata is not re-typed, and the security boundary of the stamp ('proves ChainHilt built the action ... not that it matches what the user wants'). It leaves unclear what a call returns, what happens on partial failure across multiple actions, and whether user approval or gas is involved.

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?

Purpose is front-loaded and the sequencing instructions follow in logical order (inputs, alternatives, execution semantics, safety warning). It is a single dense paragraph with long clauses; the security warning and the mode-alternative would read better split out, but no sentence is 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 complex signing/transaction tool with no annotations, no output schema and a 25%-documented schema, the description covers the critical risks: source of inputs, ordering, at-most-once semantics, and a warning about verifying intent. The missing pieces are accountAddress and any indication of the result or failure behavior, which would matter for an agent deciding what to report back.

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 only 25%, but the description compensates heavily: nonce is 'one per response, shared by all its actions', hashes are each action's verification.hash 'in the order the API returned them', and actions is an alternative mode 'exactly as returned, stamp included' — which also explains that the two paths are mutually alternative. The fourth parameter, accountAddress, is never mentioned, leaving a real gap.

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 pair and resource: 'Sign typed data or send transactions for actions the ChainHilt API returned to a request this wallet authorized with authorize_request.' It names the sibling it depends on (authorize_request) and the source of its input, so an agent can tell exactly what this tool does and when it is the right call versus the authorization step.

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

Usage Guidelines5/5

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

Explicit when-to-use (actions returned to a request authorized via authorize_request) and explicit when-not ('Never pass actions or hashes obtained from any other service'). It also gives a pre-call obligation: check amounts, recipients and prices against the user's instructions first. No inference required.

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