Back to MCP Servers

SignNow MCP Server

Official MCP server for SignNow eSignature: send contracts, manage templates, embed signing flows, track invites, and download completed documents.

Collaboration by airSlate SignNow OAuth2 active
Overview

The SignNow MCP Server is the official Model Context Protocol server from airSlate SignNow that gives AI agents structured access to eSignature workflows. It exposes tools for template management, document uploads, signing invitations (email or embedded), status tracking, and downloading completed PDFs over either STDIO or Streamable HTTP transports.

Out of the box the server covers the full document lifecycle: list and create templates, upload PDFs/DOC/DOCX/PNG/JPG files (up to 40MB), send invites with ordered recipients, generate embedded signing/editor/sending links, prefill fields, send reminders, and pull final signed documents. It also includes a signnow_skills tool that bundles a skill library and inline documentation for agent use.

The server is distributed as the signnow-mcp-server Python package (Python 3.11+) and ships with example integrations for LangChain, LlamaIndex, and SmolAgents. It is released under the MIT license, and according to SignNow's developer portal, MCP access is available on all paid plans at no additional cost (with a free sandbox/trial).

Tools

Tool Description
list_all_templates Browse SignNow templates with pagination.
create_from_template Create a new document from an existing template.
create_template Convert an existing document into a reusable template.
list_documents Browse documents and document groups with status info.
get_document Retrieve normalized document structure with field values.
upload_document Upload a PDF, DOC, DOCX, PNG, JPG, or JPEG file (max 40MB).
send_invite Send a signing invitation via email with ordered recipients.
send_invite_from_template Single-step create document from template plus send invite.
send_invite_reminder Resend an email reminder to pending signers.
get_invite_status Check current signing progress and per-step details.
get_signing_link Obtain a direct signing URL for a recipient.
create_embedded_invite Create an in-app signing session without sending email.
create_embedded_sending Create an embedded document sending/management interface.
create_embedded_editor Create an embedded field-placement/editor interface.
list_contacts Search CRM contacts by name, email, or phone.
get_document_download_link Get a download URL for the final signed document.
update_document_fields Prefill text fields on a document.
signnow_skills Access the bundled SignNow skill library and reference documentation.
Setup Guide

Prerequisites

  • A SignNow account (free sandbox available at signnow.com/developers)
  • Python 3.11+
  • SignNow API credentials (Basic token, plus email/password or OAuth client)

Install

Quick start with uvx (no install):

uvx --from signnow-mcp-server sn-mcp serve

Or install from PyPI:

pip install signnow-mcp-server
sn-mcp serve

HTTP mode (for Docker or remote deployments):

sn-mcp http --host 0.0.0.0 --port 8000

Claude Desktop config (STDIO)

{
  "mcpServers": {
    "signnow": {
      "command": "sn-mcp",
      "args": ["serve"],
      "env": {
        "SIGNNOW_USER_EMAIL": "your-email@example.com",
        "SIGNNOW_PASSWORD": "your-password",
        "SIGNNOW_API_BASIC_TOKEN": "your-base64-token"
      }
    }
  }
}

VS Code / Cursor config (uvx, no local install)

{
  "servers": {
    "signnow": {
      "command": "uvx",
      "args": ["--from", "signnow-mcp-server", "sn-mcp", "serve"],
      "env": {
        "SIGNNOW_USER_EMAIL": "${env:SIGNNOW_USER_EMAIL}",
        "SIGNNOW_PASSWORD": "${env:SIGNNOW_PASSWORD}",
        "SIGNNOW_API_BASIC_TOKEN": "${env:SIGNNOW_API_BASIC_TOKEN}"
      }
    }
  }
}

Remote HTTP transport

{
  "mcpServers": {
    "signnow": {
      "type": "http",
      "url": "http://localhost:8000/mcp"
    }
  }
}

Environment variables

  • SIGNNOW_USER_EMAIL, SIGNNOW_PASSWORD, SIGNNOW_API_BASIC_TOKEN: username/password auth
  • SIGNNOW_CLIENT_ID, SIGNNOW_CLIENT_SECRET, OAUTH_ISSUER: OAuth 2.0 alternative
  • SIGNNOW_APP_BASE (default https://app.signnow.com), SIGNNOW_API_BASE (default https://api.signnow.com)
  • OAUTH_RSA_PRIVATE_PEM, OAUTH_JWK_KID, ACCESS_TTL, REFRESH_TTL for production OAuth
Use Cases
  • Generate an NDA or contract from a saved template and email it to a counterparty in one prompt, with fields prefilled from CRM data.
  • Run a daily agent that lists pending invites, checks get_invite_status for each, and sends reminders to recipients who have not signed.
  • Build embedded signing into an internal tool by calling create_embedded_invite or create_embedded_editor to mint per-session URLs.
  • Auto-download completed signed PDFs via get_document_download_link and archive them to storage once status is "completed".
  • Convert ad-hoc uploaded PDFs into reusable templates with upload_document followed by create_template for repeated workflows.
Example Prompts
  • "Create a document from my MSA template, prefill the customer name as Acme Corp, and send it to legal@acme.com for signature."
  • "List all my pending SignNow invites and send a reminder to anyone who hasn't signed in 3 days."
  • "Generate an embedded signing link for document abc123 so I can drop it into our onboarding app."
  • "What's the current signing status of the contract I sent to jane@example.com yesterday?"
  • "Download the completed signed PDF for document ID 9f2c1 and save the link."
Pros
  • Official server maintained by airSlate SignNow, MIT licensed, with full lifecycle coverage (templates, invites, embedded flows, downloads).
  • Supports both STDIO and Streamable HTTP transports, plus a Docker image, making it usable in desktop clients and hosted deployments.
  • Multiple auth modes: simple email/password + basic token for local dev, OAuth 2.0 with RSA keys for production.
  • Ships with working integration examples for LangChain, LlamaIndex, and SmolAgents.
Limitations
  • Requires Python 3.11+ and self-hosting; no fully managed remote endpoint is published by SignNow.
  • File uploads are restricted to a configured safe base directory (defaults to the user's home), which can complicate agent workflows that pull files from arbitrary paths.
  • Production OAuth requires careful RSA key persistence: a missing OAUTH_RSA_PRIVATE_PEM regenerates keys on each restart and invalidates issued tokens.
Alternatives