Skip to main content
Glama

Signature Check

signature_check
Read-onlyIdempotent

Check an EIP-712 signature request before an agent signs it: EIP-3009 (x402 payments), EIP-2612 Permit and Permit2. Checks the chain, the token domain, payTo and amount, the spender, unlimited amounts and long validity. Returns ALLOW, REVIEW or BLOCK bound to the EIP-712 digest. Unknown typed data is REVIEW. Paid tool: 0.003 USDC per call on Base via x402 (exact scheme). An unpaid call returns the payment requirement and charges nothing. Sign only if verdict is ALLOW, before expiresAt, for the same signer, and the typed data you sign is exactly the one you sent (same typedDataDigest, chainId 8453 in the request and in typedData.domain). In code: canSignTypedData(report, { chainId, signer, typedData }) from @kushbitx/sdk.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "chainId": "<chainId>",
      "signer": "<signer>",
      "typedData": "<typedData>"
    },
    "name": "signature_check"
  }
}

Input Schema

NameRequiredDescriptionDefault
signerYes
chainIdYes
typedDataYesThe exact EIP-712 object the agent is asked to sign: domain, types, primaryType, message.
expectedPayToNoEIP-3009: who must be paid.
expectedAmountNoEIP-3009: the exact amount in atomic units.
expectedSpenderNoPermit and Permit2: who may spend.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.6/5.0
Behavior5/5

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

Goes well past the readOnly/idempotent annotations: it discloses the verdict vocabulary (ALLOW/REVIEW/BLOCK), the default for unrecognized typed data (REVIEW), digest binding, an expiresAt validity window, and the paid-call economics (0.003 USDC on Base, unpaid calls return the payment requirement and charge nothing). That is exactly the behavioral context an agent cannot get from the annotations.

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?

Front-loaded with purpose and standards, then verdict semantics, then pricing, then the call-site contract. Dense but nearly every sentence carries operational information; the SDK snippet is useful rather than filler. Slightly overpacked for a single paragraph, but no clear waste.

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

Completeness5/5

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

With no output schema, the description carries the return-value burden and does so: verdict set, default REVIEW behavior, digest binding, and expiry. It also covers payment failure behavior and the exact guard condition for proceeding, leaving no material gap for a mutation-adjacent safety gate.

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 67% and the description adds real meaning on top: it pins chainId to 8453 in both the request and typedData.domain, and requires the signed typed data to be identical to what was sent (same typedDataDigest). The expectedPayTo/expectedAmount/expectedSpender semantics are largely restated from the schema rather than extended, which keeps it from a 5.

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 (check) and resource (EIP-712 signature request) and scopes it precisely to three named standards: EIP-3009/x402, EIP-2612 Permit and Permit2. The agent knows this is a pre-signature validation gate, not a general transaction tool, and the enumerated standards differentiate it from generic siblings like quick_check or preflight.

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?

Explicitly frames the timing: call before an agent signs, and gives concrete conditions to act on ('Sign only if verdict is ALLOW, before expiresAt, for the same signer...'). It does not name which sibling to use when the payload is not EIP-712 typed data, so alternatives remain implicit, but the when-to-use context is strong.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources