
SignNow MCP Server
io.github.signnowPublished by GitHub account signnowv0.3.1Updated Oct 24, 2026
A MCP server that gives AI agents access to SignNow eSignature workflows over STDIO.
Overview
SignNow MCP server that lets an AI assistant manage eSignature workflows: templates, invites, embedded signing links, status tracking and document downloads.
- What you can do
- Browse and manage templates, template groups, documents and document groups, including creating documents from templates and converting documents into templates
- Search CRM contacts and send email invites with ordered recipients, one-shot template invites, reminders, recipient swaps and invite cancellation
- Create embedded signing, sending and editor links, and read-only document view links
- Check invite status and step details, read normalized document structure and field values, and get download links for completed documents
- Upload files from a local path, public URL or MCP resource, prefill text fields, and rename entities
- Query a bundled SignNow skill library for concept references
- When to use it
- Useful when you want an assistant to prepare, send and track SignNow signature requests, or to build embedded signing and sending experiences, without leaving the chat client. Best for teams already using SignNow who want agent-driven document workflows.
- Requirements
- A SignNow account and an active SignNow API application. Credentials via environment variables: SIGNNOW_ACCESS_TOKEN or SIGNNOW_API_KEY, or SIGNNOW_USER_EMAIL, SIGNNOW_PASSWORD and SIGNNOW_API_BASIC_TOKEN, or OAuth values such as SIGNNOW_CLIENT_ID and SIGNNOW_CLIENT_SECRET. Local runs need Python 3.11+ and optionally uvx; a pre-deployed HTTP endpoint is also offered. Network access to SignNow APIs.
Installation
In SourceWeft
- Open SignNow MCP Server in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
About SignNow API
The SignNow REST API empowers users to deliver a seamless eSignature experience for signers, preparers, and senders. Pre-fill documents, create embedded branded workflows for multiple signers, request payments, and track signature status in real-time. Ensure signing is simple, secure, and intuitive on any device.
What you can do with the SignNow API:
- Send documents and document groups for signature in a role-based order
- Create reusable templates from documents
- Pre-fill document fields with data
- Collect payments as part of the signing flow
- Embed the document sending, signing, or editing experience into your website, application, or any system of record
- Track signing progress and download the completed documents
SignNow MCP Server
A Model Context Protocol (MCP) server that gives AI agents secure, structured access to SignNow eSignature workflows — templates, embedded signing, invites, status tracking, and document downloads — over STDIO or Streamable HTTP.
mcp-name: io.github.signnow/sn-mcp-server
Table of contents
Features
-
Templates & groups
- Browse all templates and template groups
- Create documents or groups from templates (one-shot flows included)
-
Invites & embedded UX
- Email invites and ordered recipients
- Embedded signing/sending/editor links for in-app experiences
-
Status & retrieval
- Check invite status and step details
- Download final documents (single or merged)
- Read normalized document/group structure for programmatic decisions
-
Transports
- STDIO (best for local clients)
- Streamable HTTP (best for Docker/remote)
Quick start
Prerequisites
- SignNow account. Create a free developer account.
- SignNow Credentials: You will need your account email, password, and the application Basic Authorization Token. Getting started.
- An active SignNow API application.
- Python 3.11+ installed on your system (check with python3 --version)
- UVX installed (check with uvx --version). Recommended for the quickest setup.
- Environment variables configured
- If your client supports Streamable HTTP, you can use the pre-deployed server URL
https://mcp-server.signnow.com/mcpinstead of running it locally.
Quick run (uvx)
If you use uv, you can run the server without installing the package:
1. Setup Environment Variables
2. Install and Run
Option A: Install from PyPI (Recommended)
Option B: Install from Source (Development)
STDIO is ideal for desktop clients and local testing.
Local/Remote (HTTP)
By default, the Streamable HTTP MCP endpoint is served under /mcp. Example URL:
Docker
STDIO inside containers is unreliable with many clients. Prefer HTTP when using Docker.
Docker Compose
Configuration
Copy .env.example → .env and fill in values. All settings are validated via pydantic-settings at startup.
Authentication options
1) API Key / Access Token (simplest)
2) Username / Password
3) OAuth 2.0 (for hosted/advanced scenarios)
When running via some desktop clients, only user/password may be supported.
Per-request access token (HTTP transport)
For multi-tenant / proxy deployments, a wrapping backend can attach the raw SignNow
access token per request via a dedicated HTTP header — no env config, and without
reusing Authorization (which carries the MCP/OAuth bearer):
- Value is the raw token — no
Bearerprefix. - Resolved per request; nothing is cached or stored (stateless).
- Precedence: an env-configured
SIGNNOW_ACCESS_TOKEN(Option 1) still wins. To use the header as a true per-request credential, do not also setSIGNNOW_ACCESS_TOKEN— otherwise every request collapses to the env token. The header outranks a genericAuthorization: Bearer. - HTTP transport only (
sn-mcp http). It is not exposed as a tool argument, so the token never enters the model's context or conversation logs. Send over HTTPS.
SignNow & OAuth settings
Production key management
If OAUTH_RSA_PRIVATE_PEM is missing in production, a new RSA key will be generated on each restart, invalidating all existing tokens. Always provide a persistent private key via secrets management in prod.
Client setup
VS Code — GitHub Copilot (Agent Mode) / Cursor
Create .vscode/mcp.json / .cursor/mcp.json in your workspace:
STDIO (local):
STDIO (uvx — no local install):
HTTP (remote or Docker):
Then open Chat → Agent mode, enable the signnow tools, and use them in prompts.
Note: The same configuration applies in Cursor — add it under MCP settings (STDIO or HTTP). For STDIO, you can also use uvx as shown above.
Claude Desktop
Use Desktop Extensions or the manual MCP config (Developer → Edit config).
Steps:
- Open Claude Desktop → Developer → Edit config
- Add a new server entry under
mcpServers - Save and restart Claude Desktop
Examples:
STDIO (local install):
STDIO (uvx — no local install):
HTTP (remote or Docker):
Then enable the server in Claude’s chat and start using the tools.
Glama (hosted MCP)
Deploy and run this server on Glama with minimal setup:
Steps:
- Open the server page on Glama: sn-mcp-server on Glama
- Click the red "Deploy Server" button
- In environment variables, provide:
SIGNNOW_USER_EMAILSIGNNOW_PASSWORDSIGNNOW_API_BASIC_TOKEN- (other variables can be left as defaults)
- Create an access token in Glama and copy the endpoint URL. It will look like:
Use this HTTP MCP URL in any client that supports HTTP transport (e.g., VS Code/Cursor JSON config or Claude Desktop HTTP example above).
MCP Inspector (testing)
Great for exploring tools & schemas visually.
You can list tools, call them with JSON args, and inspect responses.
Tools
Each tool is described concisely; use an MCP client (e.g., Inspector) to view exact JSON schemas.
list_all_templates— List templates & template groups with simplified metadata. Supportslimit/offsetpagination (default: 50 items per page).list_contacts— Search CRM contacts by name, email, or phone. Returns id, email, first/last name, and company. Use beforesend_inviteto resolve a recipient's email address by their name. Supportsper_page(default 15, max 100).list_documents— Browse your documents, document groups and statuses. Supportslimit/offsetpagination (default: 50 items per page).create_from_template— Make a document or a group from a template/group.create_template— Convert a document or document group into a reusable template for signing.send_invite— Email invites (documents or groups), ordered recipients supported. Auto-detects freeform documents (no fields) — omitrolefor freeform recipients. Passself_sign=True(with noorders) to sign the document yourself: the tool resolves your email server-side and returns aSendInviteResponsewhose optionallinkfield holds a ready-to-open signing link (also populated when a freeform recipient email matches the authenticated user). For template/template group it auto-creates document/document group first.create_embedded_invite— Embedded signing session without email delivery for documents/groups/templates. For template/template group it auto-creates document/document group first.create_embedded_sending— Embedded “sending/management” experience for documents/groups/templates. For template/template group it auto-creates document/document group first.create_embedded_editor— Embedded editor link to place/adjust fields for documents/groups/templates. For template/template group it auto-creates document/document group first.send_invite_from_template— One-shot: create from template and invite.create_embedded_sending_from_template— One-shot: template → embedded sending.create_embedded_editor_from_template— One-shot: template → embedded editor.create_embedded_invite_from_template— One-shot: template → embedded signing.get_invite_status— Current invite status/steps for document or group. Covers field invites and freeform invites (field path preferred when both exist). Response includesinvite_mode(fieldorfreeform). For freeform document groups, signer emails come from the groupdocumentslist (signature_requests).get_document_download_link— Direct download link (merged output for groups).get_signing_link— Get signing link for a document or document group.get_document— Normalized document/group structure with field values, plus the folder the entity is stored in (folder_id/folder_name) at v3.0.update_document_fields— Prefill text fields in individual documents.upload_document— Upload a file from a local file path (file_path), public URL (file_url), or MCP resource attachment (resource_uri). Setkind='template'(default'document') to store it as a reusable template instead of a regular document (the returneddocument_idis then a template ID andnext_stepsswitch to the template follow-ups). Forfile_path, the resolved path must stay within the configured safe base directory (by default, the user's home directory); paths outside that base fail validation. Supported: PDF, DOC, DOCX, PNG, JPG, JPEG. Max 40 MB. Returnsdocument_id,filename,source.send_invite_reminder— Send a signing reminder to pending signers on a document or document group.cancel_invite— Cancel all active (pending) signing invites on a document or document group. Auto-detects entity type and invite type (field vs freeform). Returns status:cancelled,completed(already done), orinvite_not_sent.update_invite_recipient— Replace the signing recipient on a pending field invite. Finds the pending invite for the current signer and swaps in a new email. Supports both documents and document groups. Only field invites — freeform/embedded are unsupported.view_document— Generate a read-only embedded view link for a document or document group. In MCP Apps-compatible clients the document renders inline; in other hosts the link is returned as a clickable URL.rename_entity— Rename a document, document group, template, or template group. Auto-detects entity type when not provided.signnow_skills— Query the bundled SignNow skill library. Omitskill_nameto list all available skills with descriptions; provideskill_name(e.g.signnow101) to fetch the full Markdown body. Usesignnow101to learn SignNow entity types, invite types, and tool mappings.- List mode example:
{"skills": [{"name": "signnow101", "description": "SignNow 101 concepts reference... (description truncated for brevity)"}]} - Fetch mode example:
{"name": "signnow101", "body": "# SignNow 101 — Concepts Reference\n..."}
- List mode example:
Tip: Start with
signnow_skills(no arguments) to discover available skills, thenlist_all_templates→create_from_template→create_embedded_*/send_invite, thenget_invite_statusandget_document_download_link.
FAQ / tips
- STDIO vs Docker? Prefer STDIO for local dev; inside Docker, use HTTP.
- Sandbox vs production? Start with SignNow’s sandbox/dev credentials; production requires proper OAuth and persistent RSA private key.
- Where do I see exact tool schemas? Use MCP Inspector or your client’s “tool details” view.
- Where are examples? See
examples/in this repo for starter integrations.
Examples
The examples/ directory contains working examples of how to integrate the SignNow MCP Server with popular AI agent frameworks:
- LangChain - Integration with LangChain agents using
langchain-mcp-adapters - LlamaIndex - Integration with LlamaIndex agents using
llama-index-tools-mcp - SmolAgents - Integration with SmolAgents framework using native MCP support
Each example demonstrates how to:
- Start the MCP server as a subprocess
- Convert MCP tools to framework-specific tool formats
- Create agents that can use SignNow functionality
- Handle environment variable configuration
To run an example:
Useful resources
Sample apps
Explore ready-to-use sample apps to quickly test preparing, signing, and sending documents from your software using the SignNow API.
Try the sample apps.
API documentation
Find technical details on SignNow API requests, parameters, code examples, and possible errors. Learn more about the API functionality in detailed guides and use cases.
Read the API documentation.
SignNow API Helper MCP
Connect your AI to access API docs, generate code for complex signing workflows, and troubleshoot integration errors automatically. Access the API Helper MCP
License
MIT — see LICENSE.md.
About SignNow MCP Server — maintained by the SignNow team. Issues and contributions welcome via GitHub pull requests.
Source: README.md at commit 80c7de5
Tools
0Version history
1- v0.3.1LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts