Create PDF contracts, send signing links and check signature status with CanUSign e-signatures.
Runs on your machine from its package; the steps are below.
At most: moves money, runs code or commands, deletes data, or sends messages for you.
Odel charges nothing per call. The publisher may charge for its own service.
Runs locally over stdio
This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).
Run
npx -y canusign-mcp-server
MCP client config
{
"mcpServers": {
"canusign": {
"command": "npx",
"args": [
"-y",
"canusign-mcp-server"
]
}
}
}MCP (Model Context Protocol) server for CanUSign. Allows Claude to create and manage contracts.
git clone https://github.com/devin-lemcke/canusign-mcp-server
cd canusign-mcp-server
npm install
npm run build
Go to CanUSign Settings and create an API key.
Add the following to your Claude Code MCP settings (~/.claude/claude_desktop_config.json or via Claude Code settings):
{
"mcpServers": {
"canusign": {
"command": "node",
"args": ["/path/to/canusign-mcp-server/dist/index.js"],
"env": {
"CANUSIGN_API_KEY": "canu_your_api_key_here"
}
}
}
}
Or if using npx (after publishing to npm):
{
"mcpServers": {
"canusign": {
"command": "npx",
"args": ["canusign-mcp-server"],
"env": {
"CANUSIGN_API_KEY": "canu_your_api_key_here"
}
}
}
}
create_contractCreate a new contract for signing.
Parameters:
title (required): Title of the contractcontent: HTML content of the contract (give this or document)document: Your own PDF, as { path } (a file on this machine) or { pdf } (base64), up to 3 MBlanguage: de, en, es or fr (default en)signatureFields: Array of { label } for HTML content. With a document each field also
takes page, x, y, width, height in percent of the page, origin top-left, where x/y
is the top-left corner of the field
and an optional type: signature (default), initials, date or text. Every type
except text needs a label. date prints the day that label signs, so the label also needs
a signature or initials field. text needs text (at most 500 characters) and prints it
as is. Only signature works with HTML contentsigners: Array of { label, email?, title?, level? }, one entry per field label. With an
email the signer gets a signing link of their own by e-mail. The link opens only the fields
of that label, and the audit certificate records the address as "link delivered to". Without
an address the signer keeps using the shared signing URL. title such as "Managing Director"
(at most 80 characters) presets what the signer signs as, with or without an addresstags: Array of tags for organizationfinalize: If true (default), contract is ready for signingExample:
Create a service agreement contract between Acme Corp (client) and John Doe (provider) for web development services at $5000. Add signature fields for both parties.
Example with delivered links:
Create a service agreement between Acme Corp and John Doe. Send the signing link for "Client" to anna@acme.example and let John sign on my laptop.
update_contractRename, retag or finalize a draft, and send or resend signing links.
Parameters:
id (required): Contract ID or tokentitle, tags, finalizesigners: Array of { label, email }. The same address resends the link, a new address
replaces it and the old link stops working. At most 5 sends per signer in 24 hourslist_contractsList all contracts with optional filtering.
Parameters:
status: Filter by status (draft, pending, pending_payment, fully_signed)limit: Maximum number of resultsget_contractGet details of a specific contract.
Parameters:
id (required): Contract ID or tokendelete_contractDelete a contract (refused once anyone has signed).
Parameters:
id (required): Contract ID or tokenCANUSIGN_API_KEY (required): Your CanUSign API keyCANUSIGN_API_URL (optional): API base URL (default: https://canusign.com)# Install dependencies
npm install
# Build
npm run build
# Watch mode
npm run dev
MIT