drbaher avatar

Sign Cli

drbaher/sign-cli

A rare breed: an e-signature tool that works completely offline via PAdES with self-issued certs, then routes through Dropbox Sign, DocuSign, or SignWell when you need a third-party anchor. Exposes 19 MCP tools covering the full lifecycle: create multi-signer requests, issue scoped approval tokens, send, watch for completion, verify signed PDFs, and export hash-chained audit trails with RFC 3161 timestamps. The design keeps agents out of the signing gesture itself but lets them drive everything else: document prep, recipient orchestration, status polling, compliance checks. Ships with sandbox mode, path-traversal guards, and a parallel HTTP API. Useful when you're automating contract ops end-to-end but need a human-in-the-loop gate before ink hits paper.

tools
19
transport
STDIO
last updated
Jul 13, 2026

Tools

19 tools

Public tool metadata for what this MCP can expose to an agent.

signer_listList 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.1 params

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.

Parameters* required
signer_emailstring
Signer email to filter by.
signer_fetch_documentRead 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.4 params

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.

Parameters* required
out_pathstring
Optional path to write the unsigned PDF.
request_idstring
signer_emailstring
Optional cross-check against the token's signer.
tokenstring
Per-signer token from request create's tokens[].
signSign 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.7 params

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.

Parameters* required
request_idstring
require_hashstring
Expected document SHA-256 (hex).
require_signer_emailstring
Expected signer email (sanity check on the token).
require_titlestring
Regex the request title must match.
signer_emailstring
signer_namestring
tokenstring
signer_declineDecline a local signing request as the holder of the given token. Sets status to declined.4 params

Decline a local signing request as the holder of the given token. Sets status to declined.

Parameters* required
reasonstring
request_idstring
signer_emailstring
tokenstring
request_showReturn the enriched request snapshot: request, approvals (with tokenHint/expiresAt/expired/signed), signedBy[], declinedBy/declineReason, and a nextSteps[] array of suggested commands.1 params

Return the enriched request snapshot: request, approvals (with tokenHint/expiresAt/expired/signed), signedBy[], declinedBy/declineReason, and a nextSteps[] array of suggested commands.

Parameters* required
request_idstring
request_statusPoll 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.2 params

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.

Parameters* required
providerstring
one of dropbox · docusign · signwell · local
request_idstring
audit_verifyVerify the cryptographic audit chain for a request and report any break.1 params

Verify the cryptographic audit chain for a request and report any break.

Parameters* required
request_idstring
request_watchPoll a request's status until terminal (completed/declined/canceled/timeout). When the MCP client supplies a progressToken, emits notifications/progress on each poll.4 params

Poll a request's status until terminal (completed/declined/canceled/timeout). When the MCP client supplies a progressToken, emits notifications/progress on each poll.

Parameters* required
interval_msnumber
providerstring
one of dropbox · docusign · signwell · local
request_idstring
timeout_msnumber
pdf_detect_signature_fieldDetect signature-field placement candidates in a PDF (AcroForm /Sig widgets + anchor-text matches). Returns ranked candidates with confidence + adjustment method. Read-only — does not modify the PDF.2 params

Detect signature-field placement candidates in a PDF (AcroForm /Sig widgets + anchor-text matches). Returns ranked candidates with confidence + adjustment method. Read-only — does not modify the PDF.

Parameters* required
pdf_pathstring
Path to the PDF to inspect.
verboseboolean
When true, include raw pdfjs text items per page for debugging.
pdf_detect_date_fieldDetect date-field placement candidates in a PDF. Returns candidates with `alreadyFilled: true` when a date string is already present near the anchor — callers can skip those when stamping. Read-only.2 params

Detect date-field placement candidates in a PDF. Returns candidates with `alreadyFilled: true` when a date string is already present near the anchor — callers can skip those when stamping. Read-only.

Parameters* required
pdf_pathstring
Path to the PDF to inspect.
verboseboolean
When true, include raw pdfjs text items per page.
pdf_inspect_signaturesInspect existing PADES signatures on ANY PDF — ours, Adobe's, DocuSign's, Dropbox Sign's, SignWell's. Returns per-signature signer CN/email, cert subject + issuer, validity window, fingerprint, trust label (self_signed_local | self_signed_other | ca_signed | unknown), message-...1 params

Inspect existing PADES signatures on ANY PDF — ours, Adobe's, DocuSign's, Dropbox Sign's, SignWell's. Returns per-signature signer CN/email, cert subject + issuer, validity window, fingerprint, trust label (self_signed_local | self_signed_other | ca_signed | unknown), message-...

Parameters* required
pdf_pathstring
Path to the PDF to inspect.
profile_listList the profiles configured in the user's profiles.json. Shows the active source so the agent knows whether a flag, env var, or default selected the currently-active profile.

List the profiles configured in the user's profiles.json. Shows the active source so the agent knows whether a flag, env var, or default selected the currently-active profile.

No parameter schema in public metadata yet.

profile_showShow the resolved active profile (or a specific user profile by name) with per-field provenance. Credentials are redacted by default; pass show_secrets: true to reveal resolved values. Read-only.2 params

Show the resolved active profile (or a specific user profile by name) with per-field provenance. Credentials are redacted by default; pass show_secrets: true to reveal resolved values. Read-only.

Parameters* required
namestring
Show a specific user profile by name; omit for the active resolved view.
show_secretsboolean
Pass true to reveal resolved credential values.
pdf_stamp_textStamp a text string (e.g. a date) onto a PDF. Mirrors `sign pdf stamp-text`. Position via auto_place (true|first|last|all|page:N|index:N) on DATE anchors, or explicit image_page/image_x/image_y/image_width/image_height. By default, candidates whose date appears already filled...10 params

Stamp a text string (e.g. a date) onto a PDF. Mirrors `sign pdf stamp-text`. Position via auto_place (true|first|last|all|page:N|index:N) on DATE anchors, or explicit image_page/image_x/image_y/image_width/image_height. By default, candidates whose date appears already filled...

Parameters* required
auto_placestring
Auto-place mode: true|first|last|all|page:N|index:N.
image_heightnumber
image_pagenumber
1-indexed page (with explicit coords).
image_widthnumber
image_xnumber
image_ynumber
out_pathstring
Path to write the stamped PDF.
overwrite_filledboolean
When true, include already-filled date candidates.
pdf_pathstring
Path to the PDF to stamp.
textstring
Text to stamp (typically a date string).
previewStamp a signature image or rendered name onto a PDF as a draft preview — NO PAdES seal, no signing-request state mutation. Mirrors `sign preview`. Returns positions + drawnRects (actual on-page rectangles after preserve-aspect-ratio shrink-to-fit) + warnings.12 params

Stamp a signature image or rendered name onto a PDF as a draft preview — NO PAdES seal, no signing-request state mutation. Mirrors `sign preview`. Returns positions + drawnRects (actual on-page rectangles after preserve-aspect-ratio shrink-to-fit) + warnings.

Parameters* required
auto_cropboolean
auto_placestring
true|first|last|all|page:N|index:N. Uses signature anchors.
image_heightnumber
image_pagenumber
image_widthnumber
image_xnumber
image_ynumber
name_signaturestring
Render this string as a stylized name stamp.
out_pathstring
pdf_pathstring
preserve_aspect_ratioboolean
signature_imagestring
File path OR data:image/(png|jpeg|svg+xml);base64,... URL.
documentOne-shot DOCX|PDF → signed PDF. Mirrors `sign document`. Orchestrates DOCX→PDF (via docx2pdf-cli) → auto-place detection → stamp + PAdES seal → verify. Uses an isolated temp database so the caller's main db is never touched. Defaults auto_place to 'first'.15 params

One-shot DOCX|PDF → signed PDF. Mirrors `sign document`. Orchestrates DOCX→PDF (via docx2pdf-cli) → auto-place detection → stamp + PAdES seal → verify. Uses an isolated temp database so the caller's main db is never touched. Defaults auto_place to 'first'.

Parameters* required
auto_cropboolean
auto_placestring
true|first|last|all|page:N|index:N (default first).
image_heightnumber
image_pagenumber
image_widthnumber
image_xnumber
image_ynumber
input_pathstring
Path to .docx/.doc/.odt/.rtf/.pdf input.
name_signaturestring
Render this string as a stylized name stamp.
out_pathstring
Where to write the final sealed PDF.
preserve_aspect_ratioboolean
signature_imagestring
File path OR data:image/...;base64,... URL.
signer_emailstring
Optional. Defaults to slug@local.invalid.
signer_namestring
Signer's full name.
titlestring
Optional title. Defaults to basename of input_path.
signer_reissue_tokenMint a new per-signer token for an existing request; the previous token is invalidated. Use when a signer lost their original token or it's about to expire. Mutating.3 params

Mint a new per-signer token for an existing request; the previous token is invalidated. Use when a signer lost their original token or it's about to expire. Mutating.

Parameters* required
request_idstring
signer_emailstring
token_ttl_minutesnumber
Optional TTL override; uses request default when omitted.
audit_scanVerify the audit chain of every request in the local DB (or filtered by provider/status). Returns per-request validity and any chain break. Read-only.3 params

Verify the audit chain of every request in the local DB (or filtered by provider/status). Returns per-request validity and any chain break. Read-only.

Parameters* required
limitnumber
providerstring
one of dropbox · docusign · signwell · local
statusstring
Filter to a specific request status (e.g. 'completed').
request_receiptExport a cryptographically-signed receipt bundle for a request: audit.json, signed.pdf, manifest.json, manifest.sig (RSA-SHA256 over manifest.json), manifest.cert.pem. Verifiable end-to-end with `sign request verify-receipt`. Mutating (writes to out_dir).2 params

Export a cryptographically-signed receipt bundle for a request: audit.json, signed.pdf, manifest.json, manifest.sig (RSA-SHA256 over manifest.json), manifest.cert.pem. Verifiable end-to-end with `sign request verify-receipt`. Mutating (writes to out_dir).

Parameters* required
out_dirstring
Directory to write the bundle (must pass validateOutputPath).
request_idstring

Sponsors

Readme

sign-cli

sign-cli

Fully-offline e-signature CLI. The built-in PAdES signer (PKCS#7 in /ByteRange, self-issued cert) produces real, cryptographically verifiable signed PDFs with no signup and no third-party provider — or routes through Dropbox Sign / DocuSign / SignWell when you need an external trust anchor. Per-signer approval tokens (TTL-bounded, scoped to one email), hash-chained audit events, RFC 3161 timestamping, named profiles, a 19-tool MCP server, and a 20-route HTTP API.

The asymmetry is the architecture: an agent can drive every step except the actual signing gesture, which stays gated behind a human.


View the full README on GitHub

Details

Repository
github.com/drbaher/sign-cli
Category
AI & LLM Tools
Package
@drbaher/sign-cli
Transport
STDIO
Registry
MCP registry, active

More from drbaher

Related AI & LLM Tools MCP servers

View all
1stevysmith avatarStacktreestevysmith/stacktree-mcpPublish HTML to private, unguessable, replace-in-place URLs from any MCP-compatible AI agent.0stars
2ertad-family avatarLiquidertad-family/liquidConnect your AI agent to anything — APIs, databases, and agents; read and write, auto-discovered.0stars
3cesaryague avatarPaKi Curatores.cesaryague/paki-curatorCatalogue agent for César Yagüe's silent moving-image works, intuitively crafted, never generated.0stars
4fiber-ai avatarFiber AIfiber-ai/mcpSearch companies, enrich contacts, and reveal emails and phones from your AI agent.0stars
5fonino avatarFoninofonino/foninoLet your AI agent use your real iPhone or Android phone, with your OK before anything is sent.0stars
6foodyogi avatarIdeabob Validationfoodyogi/ideaflow-scorerScore, validate, and pressure-test startup ideas with AI from Claude or any MCP agent.0stars