SSH-based signing service for Git commits and other documents with support for co-signing workflows, authorization tiers, and audit logging
Server has 12 tools with complete input schemas and descriptions. Naming follows verb_noun convention (sign, verify, keys, create-key, revoke, pending, approve, deny, get-envelope, session, log-offer, history). Descriptions are present (avg ~120 chars) and explain what each tool does. However, several critical gaps: (1) No output schemas documented, LLMs cannot predict response structure for chaining; (2) Parameters lack type constraints (enums, ranges), e.g., 'tier' accepts 'autonomous' or 'cosign' but no enum declared; (3) Error handling is absent, no guidance on retryability, user-fixable vs fatal errors; (4) No security annotations despite sensitive operations (revoke, approve); (5) Descriptions lack dependency hints and prerequisites. Baseline: avg tool description 194 chars (this server ~120), 100% of A+ tools have output schemas (this has 0).
Approve a pending co-sign request and execute the signature. Only the authorization principal can approve. Requires explicit consent confirmation.
Generate a new signing key and authorization in one step. Supports scope-based authorization, tier selection (autonomous/cosign), expiry, and metadata constraints.
Deny a pending co-sign request. Only the authorization principal can deny.
Retrieve the sealed evidence envelope containing a handwritten signature image for a pending signature. Accessible by the principal, requester, or signing session members.
Retrieve all offers in a negotiation chain, showing the complete history of multi-party agreement exchanges.
List all signing keys for the authenticated user, including creation date and revocation status.
No output schemas documented. LLMs cannot predict response structure, field names, or types for downstream tool chaining. E.g., 'sign' returns JSON with signature but no schema visible; 'keys' returns list but structure unknown.
Parameters lack enum constraints and range declarations. 'tier' in create-key accepts 'autonomous' or 'cosign' but no enum defined; 'expiry' has max 30 days but no min/max in schema; 'type' in sign has default 'git-commit' but no enum of valid types.
No error handling guidance. Tools like 'revoke' (IRREVERSIBLE) and 'approve' (WRITE) lack confirmation patterns or error recovery hints. No indication of retryability, user-fixable vs fatal errors, or what to do on failure.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2026-07-28+ | v2 |
Log a structured negotiation offer to the audit trail for multi-party agreement workflows. Enforces turn-based alternation between parties.
List all pending signatures awaiting principal approval for the authenticated user.
Revoke a signing key by ID. Only the key owner can revoke their own keys.
Query the status of all pending signatures in a multi-party signing session.
Sign a payload with a signing key. Supports autonomous signing or co-sign flow requiring principal approval. Reads payload from stdin, returns JSON with signature.
Verify a signature against a signing key's public key. Reads payload from stdin, validates the provided signature.
Descriptions lack dependency hints and prerequisites. E.g., 'approve' requires 'confirm=true' but description does not explain why or when to set it; 'session' requires session-id but no hint on how to obtain one.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Tools marked WRITE and IRREVERSIBLE in metadata but not in schema, LLMs cannot infer safety properties from definitions alone.