Signing CLI for AI agents and ops people who want a verifiable audit trail. Runs fully offline with a built-in PAdES signer (no signup, no third-party provider) — or routes through Dropbox Sign / DocuSign / SignWell. Per-signer tokens, declarative policies, an MCP server, RFC 3161 timestamping, and re-verifiable receipt bundles.
Mixed quality across 6 tools. Naming is verb-forward and clear (signer_list, signer_fetch_document, sign, signer_decline, request_show, request_status). Descriptions are present and moderately detailed (avg ~120 chars), explaining WHAT each tool does and key prerequisites. Input schemas are visible with proper JSON Schema structure and type declarations. However, parameter descriptions are sparse or missing for several fields (e.g., 'signer_email' in signer_list lacks detail on filtering behavior; 'out_path' in signer_fetch_document lacks format guidance). Output schemas are NOT documented, critical for agent planning. Error handling descriptions are minimal; no recovery guidance provided. Security-sensitive parameters (token, signer_email) are exposed as inputs rather than server-injected, creating audit/logging risks.
Return the enriched request snapshot: request, approvals (with tokenHint/expiresAt/expired/signed), signedBy[], declinedBy/declineReason, and a nextSteps[] array of suggested commands.
Poll the provider for the latest status of a request. For dropbox/signwell, reads API keys from DROPBOX_SIGN_API_KEY / SIGNWELL_API_KEY in the server's environment.
Sign a local signing request as the holder of the given token. Requires --provider local. The token resolves the signer; pre-sign safety checks (require_hash, require_title, require_signer_email) throw with a structured error code before any state mutation.
Decline a local signing request as the holder of the given token. Sets status to declined.
Read the unsigned PDF for a local signing request. Requires the per-signer token. If out_path is provided, also writes the file to disk. Records request.signer_fetched_document.
Output schemas not documented. LLMs cannot plan downstream tool calls or extract required fields (e.g., what does request_show return? Does it include approvals array structure?). Agents must guess at response shape.
Security tokens and signer emails exposed as tool parameters. These should be server-injected via environment or vault. Agents log all parameters, tokens in params leak into traces and audit logs.
Parameter descriptions incomplete or missing. 'signer_email' in signer_list lacks detail on filtering semantics. 'out_path' in signer_fetch_document lacks format guidance (absolute vs relative? required directory?). 'require_hash', 'require_title', 'require_signer_email' in sign lack explanation of when/why to use them.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2025-06-18+ | v2 |
List pending local-provider requests where the given signer is a recipient. Pass signer_email to scope; omit to list every pending local request the inbox can see.
No error recovery guidance. Descriptions mention 'structured error code' (sign tool) but do not explain what codes exist or how to handle them. Agents cannot self-correct on failure.
No pagination or result-limiting guidance. signer_list and request_show may return large result sets without documented limits or cursor/offset parameters. Risk of context window exhaustion.