Metadata-Version: 2.5
Name: mcp-server-esignatures
Version: 0.3.0
Summary: MCP server for eSignatures.com (https://esignatures.com)
Project-URL: Homepage, https://github.com/esignaturescom/mcp-server-esignatures
Project-URL: Repository, https://github.com/esignaturescom/mcp-server-esignatures
Author-email: "eSignatures.com" <dev@esignatures.com>
License-File: LICENSE
Requires-Python: >=3.10
Requires-Dist: httpx>=0.27
Requires-Dist: mcp<2,>=1.2.0
Requires-Dist: twine>=6.1.0
Description-Content-Type: text/markdown

# mcp-server-esignatures

**The most developer- and AI-friendly electronic signature platform.**

Traditional eSignature tools lock you into rigid, static PDF files.
**eSignatures.com** takes a different approach — contracts remain **fully editable, Markdown-based content** throughout their entire lifecycle, making them effortless for developers, automation systems, and AI agents to create, understand, modify, and manage.

This MCP server gives AI agents (such as Claude) real-time access to the complete eSignatures API, enabling:

* Dynamic contract creation and editing — even after sending
* Markdown-based content that AI can generate, understand, and update
* End-to-end workflows: drafting → placeholder filling → sending → signing → amendments
* Flexible templates and reusable contract workflows
* Contract links: reusable public signing URLs for waivers, NDAs and onboarding forms
* Signer management, notifications, and lifecycle automation

Built for intelligent, adaptive contract workflows — not outdated PDF-based signing.


## Tools

| Tool                                 | Category       | Description                                              |
| ------------------------------------ | -------------- | -------------------------------------------------------- |
| `create_contract`                    | Contracts      | Send a contract, or save it as a draft for review        |
| `send_draft_contract`                | Contracts      | Send a draft contract to its signers                     |
| `query_contract`                     | Contracts      | Retrieve contract info                                   |
| `withdraw_contract`                  | Contracts      | Withdraw an active contract                              |
| `delete_contract`                    | Contracts      | Delete a draft or test contract                          |
| `list_recent_contracts`              | Contracts      | List recent contracts, 100 per page                      |
|                                      |                |                                                          |
| `add_contract_signer`                | Signers        | Add a signer to an existing contract                     |
| `update_contract_signer`             | Signers        | Update an existing signer's contact details              |
| `resend_contract_signer_request`     | Signers        | Send or resend the sign request to a signer              |
| `delete_contract_signer`             | Signers        | Remove a signer from a contract                          |
|                                      |                |                                                          |
| `query_contract_placeholder_fields`  | Placeholders   | Get a contract's placeholder field values                |
| `update_contract_placeholder_fields` | Placeholders   | Update an active contract's placeholder fields           |
|                                      |                |                                                          |
| `query_contract_content`             | Content        | Get a contract's content, or an earlier version of it    |
| `update_contract_content`            | Content        | Edit an active contract's body via find/replace          |
|                                      |                |                                                          |
| `create_template`                    | Templates      | Create a new contract template (Markdown body)           |
| `update_template`                    | Templates      | Update an existing template's title/labels               |
| `update_template_content`            | Templates      | Edit a template's Markdown body via find/replace         |
| `query_template`                     | Templates      | Retrieve template metadata                               |
| `query_template_content`             | Templates      | Retrieve a template's Markdown body                      |
| `delete_template`                    | Templates      | Delete a template                                        |
| `list_templates`                     | Templates      | List all your templates                                  |
|                                      |                |                                                          |
| `add_template_collaborator`          | Collaborators  | Invite someone to edit a template                        |
| `remove_template_collaborator`       | Collaborators  | Revoke template editing rights                           |
| `list_template_collaborators`        | Collaborators  | View who can edit a template                             |
|                                      |                |                                                          |
| `create_contract_link`               | Contract links | Publish a reusable signing link from a template or Markdown |
| `query_contract_link`                | Contract links | Retrieve a contract link's settings and signing URL      |
| `query_contract_link_content`        | Contract links | Retrieve a contract link's Markdown body                 |
| `update_contract_link`               | Contract links | Update verification, redirect, CC, counter-signer, test mode |
| `update_contract_link_content`       | Contract links | Edit a contract link's Markdown body via find/replace    |
| `delete_contract_link`               | Contract links | Delete a contract link; its signing URL stops working    |
| `list_contract_links`                | Contract links | List all contract links with their signing URLs          |


## Examples

#### Creating a draft contract

`Create a draft NDA for a publisher, ready for me to review and send. Signer: John Doe, ACME Corp, john@acme.com.`

#### Sending a draft

`Send the draft NDA for John Doe now.`

#### Sending a contract from a template

`Send an NDA based on my template to John Doe from ACME Corp at john@acme.com. Set the term to 2 years.`

#### Creating a new contract

`Create a contractor agreement for a graphic designer, including payment terms of net 14 days. Prepare it as a draft for review. Signer: John Doe, ACME Corp, john@acme.com.`

#### Adding a signer to a contract

`Add Jane Smith from ACME Corp (jane@acme.com) as a signer on the NDA contract, then send her the signature request.`

#### Editing an active contract's wording

`On the NDA, change the term to 24 months and remove the jurisdiction section.`

#### Reviewing an earlier version

`Show me the NDA as it was before the term changed.`

#### Editing an existing template

`Update my NDA template to include a 12-month non-solicitation clause.`

#### Reviewing templates

`Review my templates and suggest improvements. Do not apply any changes until I approve them one by one.`

#### Finding the right template

`Find the best template for onboarding a contractor and prepare a draft contract for John Doe.`

#### Managing contracts

`Show me the recent contracts that are waiting for signatures.`

#### Updating signer details

`Update the signer email on the NDA contract for John Doe to john.doe@acme.com.`

#### Publishing a contract link

`Turn my waiver template into a contract link, verify signers by SMS, and CC office@acme.com on every signed copy.`

#### Reviewing contract links

`List my contract links and flag any still in test mode.`

#### Inviting template collaborators

`Invite John Doe to edit the NDA template. His email is john@acme.com.`

## Hosted server, no install

Prefer not to run anything locally? Connect any MCP client to `https://esignatures.com/mcp` (Streamable HTTP, OAuth). Claude, ChatGPT and other clients are covered at <https://esignatures.com/docs/mcp>.

## Install (local)

### Create an eSignatures.com account

Create an eSignatures.com account at https://esignatures.com for free, then copy your API secret token from the Automation & API page.

### Claude Desktop

On MacOS: `~/Library/Application\ Support/Claude/claude_desktop_config.json`
On Windows: `%APPDATA%/Claude/claude_desktop_config.json`

##### Development/Unpublished Servers Configuration
```
"mcpServers": {
  "mcp-server-esignatures": {
    "command": "uv",
    "env": {
      "ESIGNATURES_SECRET_TOKEN": "your-esignatures-api-secret-token"
    },
    "args": [
      "--directory",
      "/your-local-directories/mcp-server-esignatures",
      "run",
      "mcp-server-esignatures"
    ]
  }
}
```

#### Published Servers Configuration
```
"mcpServers": {
  "mcp-server-esignatures": {
    "command": "uvx",
    "args": [
      "mcp-server-esignatures"
    ],
    "env": {
      "ESIGNATURES_SECRET_TOKEN": "your-esignatures-api-secret-token"
    }
  }
}
```

### Authentication

To use this server, you need to set the `ESIGNATURES_SECRET_TOKEN` environment variable with your eSignatures.com API secret token.

## eSignatures.com API Documentation

For a detailed guide on API endpoints, parameters, and responses, see [eSignatures.com API](https://esignatures.com/docs/api).

## eSignatures.com Support

For support, please navigate to [Support](https://esignatures.com/support) or contact [support@esignatures.com](mailto:support@esignatures.com).

## Contributing

Contributions are welcome! If you'd like to contribute, please fork the repository and make changes as you see fit. Here are some guidelines:

- **Bug Reports**: Please open an issue to report any bugs you encounter.
- **Feature Requests**: Suggest new features by opening an issue with the "enhancement" label.
- **Pull Requests**: Ensure your pull request follows the existing code style.
- **Documentation**: Help improve or translate documentation. Any form of documentation enhancement is appreciated.

For major changes, please open an issue first to discuss what you would like to change. We're looking forward to your contributions!