Skip to main content
Glama
@spoc/mcp-bridge

@spoc/mcp-bridge

Official
by SPOC-App

Verify an envelope + signature against SPOC's signing key

spoc.harness.verify

Verify a passport envelope signature against a specific signing key version by submitting the envelope, hex Ed25519 signature, and key version; returns whether the signature is valid.

Instructions

Server-side verify. Takes a passport envelope (object or its canonical JSON string), the hex signature, and the signing_key_version, and returns whether the signature is valid under that key version.

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": {
      "envelope": "<envelope>",
      "signature": "<signature>",
      "signing_key_version": "<signing_key_version>"
    },
    "name": "spoc.harness.verify"
  }
}

Input Schema

NameRequiredDescriptionDefault
envelopeYesEnvelope object or canonical JSON string.
signatureYesHex-encoded Ed25519 signature.
signing_key_versionYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.3

TDQS

A3.5/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 core behavior (returns validity under the specified key version) and implicitly establishes this is a non-mutating check, but it omits what happens on an unknown signing_key_version, whether an invalid signature yields false or an error, and whether canonicalization is performed server-side when an object is passed. Those are material gaps for a verification primitive.

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 operation and followed by inputs and return value. Nothing is padded, though the input enumeration slightly duplicates the schema and could have been spent on error or return-shape behavior instead.

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 three-parameter, all-required read-style tool with no output schema and no annotations, the description covers the essentials: what it takes, what it decides, and under which key version. What is missing is the shape of the response (bare boolean vs. structured result) and failure semantics, which matters somewhat given the absent output schema.

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

Parameters3/5

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

Schema coverage is 67%; the uncovered parameter is signing_key_version, which has no schema description. The description partially compensates by tying it to the semantics 'valid under that key version', clarifying that it selects which key's public material is used. The envelope and signature semantics merely restate what the schema already says (object or canonical JSON string; hex signature).

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 ('Server-side verify' of a passport envelope's signature) and names the three inputs it consumes plus the boolean outcome it produces. It is clearly distinct from the sibling verbs (issue, complete, get, report), though it never explicitly contrasts itself with them. The 'server-side' qualifier usefully signals this is the authoritative check rather than a local one.

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 infer 'call this to confirm a signature is valid' but there is no statement of when to prefer it over other validation paths, no prerequisite (e.g. the envelope must have been issued via spoc.harness.issue), and no guidance on handling a failed verification. This is adequate but leaves the agent to infer the workflow position.

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