Skip to main content
Glama

card_sign

Signs an A2A Agent Card using the local JWS/RS256 key, writes it to cards/, and exports the public JWKS while keeping the private key in keys/.

Instructions

Build + sign a face's Agent Card with the local signing key (JWS/RS256), write it to cards/, and export the public JWKS. The private key never leaves keys/ (chmod 600).

Input Schema

NameRequiredDescriptionDefault
faceYes
overridesNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.1

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations at all, the description must carry the full behavioral load, and it does disclose useful traits: the algorithm (JWS/RS256), that the private key stays in keys/ with chmod 600, that files are written to cards/, and that a JWKS is exported. However, it never says whether an existing card file is overwritten (a destructive side effect that matters here), what identifies the target file, or what the call returns.

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?

One tight sentence with the security posture front-loaded alongside the outputs; every clause (algorithm, destination directory, key location, key permissions) adds real information. It is dense but not 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?

For a two-parameter mutation tool with a nested object, no annotations, and no output schema, the description covers outputs and safety but not inputs or overwrite semantics. An agent knows what the call produces but not how to shape the overrides payload or what happens to pre-existing card files.

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%, so the description is the only source of parameter meaning — and it explains neither what a 'face' identifier is nor what the nested 'overrides' object accepts. The single hint ('a face's Agent Card') maps loosely to the required param but leaves the only meaningful input, the nested overrides structure, entirely opaque.

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 concrete verb chain (build + sign), the resource (a face's Agent Card), and the side effects (write to cards/, export public JWKS). It is distinguishable from card_build in principle, but the description never explicitly says how it differs from that sibling, leaving the agent to infer that card_build only builds.

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 by the operation itself — an agent can guess you call this when you need a signed card plus a published JWKS, but there is no stated when-to-use, no prerequisite (e.g., must the face exist first?), and no pointer to card_verify or card_build as the alternatives.

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