Skip to main content
Glama

Signathing MCP server

Send PDFs for e-signature from any AI agent, with ESIGN and UETA consent captured on every signature, and get back a certified copy whose history anyone can verify without trusting the sender or Signathing.

  • Remote server: https://signathing.com/api/mcp (Streamable HTTP). Sign in with OAuth, or send an API key as a bearer header.

  • Free tier: 100 documents a month, no card. Then $0.06 a document (101 to 500), $0.03 (501 to 3,000), $0.025 (3,001+), prepaid.

  • Evidence: every signing event is appended to a public hash chain, sealed daily and archived with the Internet Archive. signathing.com/transparency

  • Docs: signathing.com/developers · OpenAPI: /api/v1/openapi.json · /llms.txt

Operated by AllContraX LLC, Kentucky, USA. The Signathing app and website stay free for people; the API and MCP server are for software.

Tools

Tool

What it does

send_document

Upload a PDF (https URL or base64), name up to 25 signers and 25 view-only recipients, optionally place signature, initials, date, name, email, text, number, checkbox, radio or dropdown fields. Signers get a private link by email (and text). Per signer, payment_amount_cents collects a card payment after they sign (into the sender's own Stripe account, no platform fee; the document completes when paid) and id_verification: true requires a government ID plus selfie check before signing ($2 an attempt from the prepaid balance). language: "es" sends that signer's emails, texts and signing page in Spanish (default en). One billable unit.

get_document

Status, signers with viewed/signed times, download links, event history.

list_documents

Your recent documents, filterable by status.

remind_document

Re-send links to everyone who has not signed (once an hour).

void_document

Withdraw an open document. Within 10 minutes of sending, the unit is refunded.

extend_document

Give an expired document 14 more days and fresh links for everyone still waited on.

get_account

Prepaid balance, documents used this month, free documents left, projected run-out.

get_evidence

Evidence package: PDF hashes, every signer and event with its position in the public evidence log, and the recipe to verify it.

verify_signature_code

Look up the code stamped beside any Signathing signature. Works for any document.

Related MCP server: swiftsign-mcp

Connect

Claude.ai, ChatGPT, Grok apps (OAuth)

Add a custom connector / remote MCP server with the URL https://signathing.com/api/mcp. You will be sent to signathing.com to sign in and approve. Disconnect any time under API in your Signathing dashboard.

Claude Code

claude mcp add --transport http signathing https://signathing.com/api/mcp \
  --header "Authorization: Bearer sk_live_..."

Or without a key, using OAuth: claude mcp add --transport http signathing https://signathing.com/api/mcp and run /mcp to sign in.

Cursor, VS Code, Windsurf (mcp.json)

{ "mcpServers": { "signathing": {
    "url": "https://signathing.com/api/mcp",
    "headers": { "Authorization": "Bearer sk_live_..." } } } }

Grok (xAI Responses API)

{ "type": "mcp", "server_label": "signathing",
  "server_url": "https://signathing.com/api/mcp",
  "headers": { "Authorization": "Bearer sk_live_..." } }

Claude API (Messages API, mcp_servers)

{ "type": "url", "name": "signathing", "url": "https://signathing.com/api/mcp",
  "authorization_token": "sk_live_..." }

stdio-only clients

This repository ships a dependency-free bridge for clients that cannot speak HTTP MCP:

{ "mcpServers": { "signathing": {
    "command": "npx", "args": ["-y", "github:jacejb/signathing-mcp"],
    "env": { "SIGNATHING_API_KEY": "sk_live_..." } } } }

Create a key at signathing.com/dashboard/api.

Why a third party instead of letting the agent sign things itself

A signature only matters on the day it is disputed. On that day the party that controlled the signing system is the party with something to gain, and its own logs are "trust me." Signathing is nobody's party to the contract, and it does not ask you to trust it either: every signing event goes into one public hash chain, each entry commits to the private details through a hash without publishing them, each day is sealed and archived by the Internet Archive, and the verifier in verifier/ recomputes all of it from a document's evidence package.

node verifier/verify-signathing.mjs evidence.json original.pdf signed.pdf

Example: the whole loop, verified

examples/agent-loop.mjs (Node 18+, no dependencies, public domain) sends a PDF, waits for the signature, pulls the evidence package and the certified PDF, recomputes every hash and chain entry, confirms each entry against the public log, and resolves the verification code publicly. It is the loop an agent should run before it treats an agreement as done.

SIGNATHING_API_KEY=sk_live_... node examples/agent-loop.mjs --name "Pat Lee" --email pat@example.com
[2] Send for signature
  ok   document 71 (sent); billing {"charged_tenths":0,"unit_this_month":1}
  ok   server's original_sha256 matches the bytes we sent
[3] Waiting for Pat Lee to sign (up to 30 min)
  ok   completed at 2026-10-26T02:02:00Z; signed PDF SHA-256 afe6...; sealed=true
[4] Evidence package and certified PDF
  ok   signed PDF hashes to document.signed_sha256
[5] Independent verification
  ok   event 609 completed -> chain seq 589
  ok   seq 589 is identical in the public log
  ok   public log slice 583 to 590 recomputes end to end
[6] Public checks anyone can repeat
  ok   verification code resolves publicly to this document and its signed hash
VERIFIED: document 71, 6 events, all hashes and public-log entries recomputed.

With MCP it is four tool calls: send_document, get_document (or the document.completed webhook), get_evidence, then the verifier on what came back. The day's seal, Internet Archive snapshot and OpenTimestamps proof arrive after midnight UTC; a second verifier run the next day checks those too.

Example: an agent sends a lease

User: Send the lease at https://files.example.com/lease.pdf to Pat Lee (pat@example.com) for signature.
Agent -> send_document { file_url, title: "Lease", signers: [{ name: "Pat Lee", email: "pat@example.com" }] }
Signathing -> { id: 58, status: "sent", signers: [{ signing_url: "https://signathing.com/sign/..." }], billing: { charged_tenths: 0 } }

Pat gets an email, signs in the browser, and the agent can call get_document or receive a webhook. The certified PDF is digitally sealed and carries a certificate page and a verification code per signature.

License

MIT for this repository. The Signathing service has its own terms and privacy policy.

Available Tools

11 tools
extend_documentExtend an expired document 14 days and resendAInspect

Give an expired document a new signing deadline 14 days out, put it back to sent, and send a fresh link to everyone who has not signed (signers-in-order: only the current stage). Signatures already collected stay. Free.

Inputs: id (required).

get_accountAccount and balanceBInspect

Prepaid balance, documents used this month, free documents left, the price of the next document, and the projected run-out.

Inputs: no named parameters.

get_documentGet a documentBInspect

Status, signers (viewed/signed times), download links, and the event history of one document you sent.

Inputs: id (required).

get_evidenceEvidence packageAInspect

The evidence package for a document: SHA-256 of the original and signed PDFs, every signer and event with its position in Signathing's public hash-chained evidence log, and the recipe to verify it independently.

Inputs: id (required).

list_documentsList documentsAInspect

Your most recent documents, optionally filtered by status: sent, completed, declined, voided, expired (a sent document whose date has passed reads expired).

Inputs: limit, status.

list_templatesList templatesAInspect

Saved templates (a PDF with placed fields and named signer roles; approver_slots lists roles that approve instead of sign) and their direct links. Use send_from_template to send one.

Inputs: no named parameters.

remind_documentRemind pending signersAInspect

Re-send the signing link to everyone who has not signed yet. At most once an hour per document. An expired document cannot be reminded; use extend_document.

Inputs: id (required).

send_documentSend a document for signatureAInspect

Upload a PDF and send it to up to 25 signers or approvers, plus up to 25 view-only and 25 CC recipients. Give the file as an https URL (file_url) or base64 (file_base64). Optionally place signature/initials/date/text boxes with fields; without fields, signers sign on a certificate page appended to the PDF. Returns the document with each signer's private signing_url and what the send cost. Counts as one billable unit.

Inputs: signers (required), title, fields, message, +5 more.

send_from_templateSend a document from a templateBInspect

Create and send a document from a saved template. Give one signer per role, in role order or with an explicit 0-based slot. Counts as one billable unit like send_document.

Inputs: signers (required), template_id (required), title, message, +2 more.

verify_signature_codeVerify a signature codeBInspect

Look up the verification code stamped beside any Signathing signature and return the signing record it belongs to. Works for any document, not only yours.

Inputs: code (required).

void_documentVoid a documentBInspect

Withdraw an open document so nobody can sign it. Within 10 minutes of sending the billable unit is refunded.

Inputs: id (required), reason.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.7/5.0

    Scored across 11 tools

    Disambiguation4/5

    Most tools target clearly distinct actions (send, void, remind, extend, list). The only mild overlap is between get_document, get_evidence, and verify_signature_code, all of which surface records about a document, but their descriptions delineate different intents (status/signers, verification package, code lookup).

    Naming Consistency5/5

    All tools follow a consistent verb_noun snake_case pattern (get_account, list_documents, send_document, void_document, verify_signature_code). send_from_template is a minor extension but still fits the convention.

    Tool Count5/5

    11 tools is well-scoped for an e-signature service, covering sending, lifecycle management, templates, evidence, and account balance without redundancy. Each tool earns its place.

    Completeness4/5

    The core document lifecycle (send, list, get, remind, extend, void, evidence) plus template sending and account status is well covered. Minor gaps exist around template management (no create/update/delete template) and any document update/metadata operations, but core workflows have no dead ends.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      E-signature for AI agents. One unauthenticated call returns a sandbox API key (no account, no browser), then the agent can send documents for signature, check status, and download the sealed PDF plus Certificate of Completion.
      4 npm
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables AI agents and developers to create, send, and follow up on contracts for e-signature, manage signers and templates, retrieve signed PDFs and audit trails, and verify PDF signatures. It keeps signing and declining in the hands of each signer through personal links.
      1
      MIT