MCP Server for eSignatures
by esignaturescom
Verified
create_contract
Creates a new contract. The contract can be a draft which the user can customize/send, or the contract can be sent instantly. So called 'signature fields' like Name/Date/signature-line must be left out, they are all handled automatically. Contract owners can customize the content by replacing {{placeholder fields}} inside the content, and the signers can fill in Signer fields when they sign the contract.
Input Schema
Name | Required | Description | Default |
---|---|---|---|
assigned_user_email | No | Assigns an eSignatures user as contract owner with edit/view/send rights and notification settings. Contract owners get email notifications for signings and full contract completion if enabled on their Profile. | |
contract_source | Yes | Identifies the originating system. Currently only mcpserver supported for MCP requests. | |
custom_branding | No | Customize branding for documents and emails. | |
custom_webhook_url | No | Overrides default webhook HTTPS URL for this contract, defined on the API page in eSignatures. Retries 6 times with 1 hour delays, timeout is 20 seconds. | |
document_elements | No | Customize document content with headers, text, images, etc. Owners can manually replace {{placeholder fields}} in the eSignatures editor, and signers can fill in Signer fields. Use placeholders for signer names unless names are already provided. The contract title is automatically added as the first line. | |
emails | No | Customize email communications for signing and final documents. | |
expires_in_hours | No | Sets contract expiry time in hours; expired contracts can't be signed. Expiry period can be extended per contract in eSignatures. | |
labels | No | Assigns labels to the contract, overriding template labels. Labels assist in organizing contracts without using folders. | |
locale | No | Language for signer page and emails. | |
mcp_query | Yes | The original text query that the user typed which triggered this MCP command execution. Used for logging and debugging purposes. | |
metadata | No | Custom data for contract owners and webhook notifications; e.g. internal IDs. | |
placeholder_fields | No | Replaces text placeholders in templates when creating a contract. Example: {{interest_rate}}. Do not add placeholder values when creating a draft. | |
save_as_draft | No | Saves contract as draft for further editing; draft can be edited and sent via UI. URL: https://esignatures.com/contracts/contract_id/edit, where contract_id is in the API response. | |
signer_fields | No | Set default values for Signer fields. | |
signers | No | List of individuals required to sign the contract. Only include specific persons with their contact details; do not add generic signers. | |
template_id | No | GUID of a mobile-friendly contract template within eSignatures. The template provides content, title, and labels. Required unless document_elements is provided. | |
test | No | Marks contract as 'demo' with no fees; adds DEMO stamp, disables reminders. | |
title | No | Sets the contract's title, which appears as the first line in contracts and PDF files, in email subjects, and overrides the template's title. |
Input Schema (JSON Schema)
{
"properties": {
"assigned_user_email": {
"description": "Assigns an eSignatures user as contract owner with edit/view/send rights and notification settings. Contract owners get email notifications for signings and full contract completion if enabled on their Profile.",
"type": "string"
},
"contract_source": {
"description": "Identifies the originating system. Currently only mcpserver supported for MCP requests.",
"enum": [
"mcpserver"
],
"type": "string"
},
"custom_branding": {
"description": "Customize branding for documents and emails.",
"properties": {
"company_name": {
"description": "Custom company name shown as the sender.",
"type": "string"
},
"logo_url": {
"description": "URL for custom logo (PNG, recommended 400px size).",
"type": "string"
}
},
"type": "object"
},
"custom_webhook_url": {
"description": "Overrides default webhook HTTPS URL for this contract, defined on the API page in eSignatures. Retries 6 times with 1 hour delays, timeout is 20 seconds.",
"type": "string"
},
"document_elements": {
"description": "Customize document content with headers, text, images, etc. Owners can manually replace {{placeholder fields}} in the eSignatures editor, and signers can fill in Signer fields. Use placeholders for signer names unless names are already provided. The contract title is automatically added as the first line.",
"items": {
"oneOf": [
{
"properties": {
"text": {
"type": "string"
},
"text_alignment": {
"default": "left",
"enum": [
"center",
"right",
"justified"
],
"type": "string"
},
"type": {
"description": "Header lines. Do not add the title of the template/contract as the first line; it will already be included at the beginning of the contracts.",
"enum": [
"text_header_one",
"text_header_two",
"text_header_three"
],
"type": "string"
}
},
"required": [
"type",
"text"
]
},
{
"properties": {
"depth": {
"default": 0,
"description": "Indentation level of text, defaults to 0.",
"type": "integer"
},
"text": {
"type": "string"
},
"text_alignment": {
"default": "left",
"enum": [
"center",
"right",
"justified"
],
"type": "string"
},
"text_styles": {
"description": "An array defining text style ranges within the element. For Placeholder fields, ensure the moustache brackets around the placeholder also match the style. Example for '{{rate}} percent': [{offset:0, length:8, style:'bold'}]",
"items": {
"properties": {
"length": {
"description": "Number of characters in the styled range",
"type": "integer"
},
"offset": {
"description": "Start index of styled text (0-based)",
"type": "integer"
},
"style": {
"description": "Style to apply",
"enum": [
"bold",
"italic",
"underline"
],
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"type": {
"description": "For paragraphs and non-list text content.",
"enum": [
"text_normal"
],
"type": "string"
}
},
"required": [
"type",
"text"
]
},
{
"properties": {
"depth": {
"default": 0,
"description": "Depth of list nesting, default 0. For ordered lists, numbering persists at the same or deeper indentation levels; paragraphs don't interrupt numbering.",
"type": "integer"
},
"text": {
"type": "string"
},
"type": {
"description": "For list items. Use ordered_list_item for sequential/numbered lists, unordered_list_item for bullet points. Lists continue at the same indentation level until interrupted by another element type which is not a list or indented paragraph.",
"enum": [
"ordered_list_item",
"unordered_list_item"
],
"type": "string"
}
},
"required": [
"type",
"text"
]
},
{
"properties": {
"signer_field_assigned_to": {
"description": "Specifies which signer(s) can interact with this field based on signing order. 'first_signer' means only the first signer to open and sign can fill the field; others with the same or later order cannot. The same rule applies for 'second_signer' and 'last_signer'. 'every_signer' shows the field to each signer, with separate values in the final PDF. Examples: 'Primary contact for property issues' (first signer) and 'My mobile number' (every signer).",
"enum": [
"first_signer",
"second_signer",
"last_signer",
"every_signer"
],
"type": "string"
},
"signer_field_dropdown_options": {
"description": "Options for dropdown fields, separated by newline \n characters",
"type": "string"
},
"signer_field_id": {
"description": "Unique ID for the Signer field, used in Webhook notifications for value inclusion. If not specified, values are excluded from Webhook notifications and CSV exports.",
"type": "string"
},
"signer_field_required": {
"enum": [
"yes",
"no"
],
"type": "string"
},
"text": {
"type": "string"
},
"type": {
"description": "Signer fields allow input or selection by signers. Do not add any signer fields for collecting signatures, names, dates, company names or titles or anything similar at the end of documents. Radio buttons group automatically, do not insert any other elements (like text) between radio buttons that should be grouped together. Instead, place descriptive text before or after the complete radio button group.",
"enum": [
"signer_field_text",
"signer_field_text_area",
"signer_field_date",
"signer_field_dropdown",
"signer_field_checkbox",
"signer_field_radiobutton",
"signer_field_file_upload"
],
"type": "string"
}
},
"required": [
"type",
"text",
"signer_field_assigned_to"
]
},
{
"properties": {
"image_alignment": {
"default": "left",
"enum": [
"center",
"right"
],
"type": "string"
},
"image_base64": {
"description": "The base64-encoded png or jpg image (max 0.5MB).",
"type": "string"
},
"image_height_rem": {
"maximum": 38,
"minimum": 2,
"type": "number"
},
"type": {
"enum": [
"image"
],
"type": "string"
}
},
"required": [
"type",
"image_base64"
]
},
{
"properties": {
"table_cells": {
"items": {
"items": {
"properties": {
"alignment": {
"default": "left",
"enum": [
"center",
"right"
],
"type": "string"
},
"styles": {
"items": {
"enum": [
"bold",
"italic"
],
"type": "string"
},
"type": "array"
},
"text": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"type": "array"
},
"type": {
"enum": [
"table"
],
"type": "string"
}
},
"required": [
"type",
"table_cells"
]
},
{
"properties": {
"template_id": {
"description": "ID of the template to insert; Placeholder fields apply within this template too.",
"type": "string"
},
"type": {
"description": "Nested template inclusion. Maximum depth: 1 level",
"enum": [
"template"
],
"type": "string"
}
},
"required": [
"type",
"template_id"
]
}
],
"type": "object"
},
"type": "array"
},
"emails": {
"description": "Customize email communications for signing and final documents.",
"properties": {
"cc_email_addresses": {
"description": "Email addresses CC'd when sending the signed contract PDF.",
"items": {
"type": "string"
},
"type": "array"
},
"final_contract_subject": {
"description": "Email subject for the final contract email.",
"type": "string"
},
"final_contract_text": {
"description": "Body of final contract email; use __FULL_NAME__ for personalization. First line is bold and larger.",
"type": "string"
},
"reply_to": {
"description": "Custom reply-to email address (defaults to support email if not set).",
"type": "string"
},
"signature_request_subject": {
"description": "Email subject for signature request emails.",
"type": "string"
},
"signature_request_text": {
"description": "Email body of signature request email; use __FULL_NAME__ for personalization. First line is bold and larger.",
"type": "string"
}
},
"type": "object"
},
"expires_in_hours": {
"description": "Sets contract expiry time in hours; expired contracts can't be signed. Expiry period can be extended per contract in eSignatures.",
"type": "string"
},
"labels": {
"description": "Assigns labels to the contract, overriding template labels. Labels assist in organizing contracts without using folders.",
"items": {
"type": "string"
},
"type": "array"
},
"locale": {
"description": "Language for signer page and emails.",
"enum": [
"es",
"hu",
"da",
"id",
"ro",
"sk",
"pt",
"hr",
"sl",
"de",
"it",
"pl",
"rs",
"sv",
"en",
"ja",
"en-GB",
"fr",
"cz",
"vi",
"no",
"zh-CN",
"nl"
],
"type": "string"
},
"mcp_query": {
"description": "The original text query that the user typed which triggered this MCP command execution. Used for logging and debugging purposes.",
"type": "string"
},
"metadata": {
"description": "Custom data for contract owners and webhook notifications; e.g. internal IDs.",
"type": "string"
},
"placeholder_fields": {
"description": "Replaces text placeholders in templates when creating a contract. Example: {{interest_rate}}. Do not add placeholder values when creating a draft.",
"items": {
"properties": {
"api_key": {
"description": "The template's placeholder key, e.g., for {{interest_rate}}, api_key is 'interest_rate'.",
"type": "string"
},
"document_elements": {
"description": "Allows insertion of custom elements like headers, text, images into placeholders.",
"items": {
"oneOf": [
{
"properties": {
"text": {
"type": "string"
},
"text_alignment": {
"default": "left",
"enum": [
"center",
"right",
"justified"
],
"type": "string"
},
"type": {
"description": "Header lines. Do not add the title of the template/contract as the first line; it will already be included at the beginning of the contracts.",
"enum": [
"text_header_one",
"text_header_two",
"text_header_three"
],
"type": "string"
}
},
"required": [
"type",
"text"
]
},
{
"properties": {
"depth": {
"default": 0,
"description": "Indentation level of text, defaults to 0.",
"type": "integer"
},
"text": {
"type": "string"
},
"text_alignment": {
"default": "left",
"enum": [
"center",
"right",
"justified"
],
"type": "string"
},
"text_styles": {
"description": "An array defining text style ranges within the element. For Placeholder fields, ensure the moustache brackets around the placeholder also match the style. Example for '{{rate}} percent': [{offset:0, length:8, style:'bold'}]",
"items": {
"properties": {
"length": {
"description": "Number of characters in the styled range",
"type": "integer"
},
"offset": {
"description": "Start index of styled text (0-based)",
"type": "integer"
},
"style": {
"description": "Style to apply",
"enum": [
"bold",
"italic",
"underline"
],
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"type": {
"description": "For paragraphs and non-list text content.",
"enum": [
"text_normal"
],
"type": "string"
}
},
"required": [
"type",
"text"
]
},
{
"properties": {
"depth": {
"default": 0,
"description": "Depth of list nesting, default 0. For ordered lists, numbering persists at the same or deeper indentation levels; paragraphs don't interrupt numbering.",
"type": "integer"
},
"text": {
"type": "string"
},
"type": {
"description": "For list items. Use ordered_list_item for sequential/numbered lists, unordered_list_item for bullet points. Lists continue at the same indentation level until interrupted by another element type which is not a list or indented paragraph.",
"enum": [
"ordered_list_item",
"unordered_list_item"
],
"type": "string"
}
},
"required": [
"type",
"text"
]
},
{
"properties": {
"signer_field_assigned_to": {
"description": "Specifies which signer(s) can interact with this field based on signing order. 'first_signer' means only the first signer to open and sign can fill the field; others with the same or later order cannot. The same rule applies for 'second_signer' and 'last_signer'. 'every_signer' shows the field to each signer, with separate values in the final PDF. Examples: 'Primary contact for property issues' (first signer) and 'My mobile number' (every signer).",
"enum": [
"first_signer",
"second_signer",
"last_signer",
"every_signer"
],
"type": "string"
},
"signer_field_dropdown_options": {
"description": "Options for dropdown fields, separated by newline \n characters",
"type": "string"
},
"signer_field_id": {
"description": "Unique ID for the Signer field, used in Webhook notifications for value inclusion. If not specified, values are excluded from Webhook notifications and CSV exports.",
"type": "string"
},
"signer_field_required": {
"enum": [
"yes",
"no"
],
"type": "string"
},
"text": {
"type": "string"
},
"type": {
"description": "Signer fields allow input or selection by signers. Do not add any signer fields for collecting signatures, names, dates, company names or titles or anything similar at the end of documents. Radio buttons group automatically, do not insert any other elements (like text) between radio buttons that should be grouped together. Instead, place descriptive text before or after the complete radio button group.",
"enum": [
"signer_field_text",
"signer_field_text_area",
"signer_field_date",
"signer_field_dropdown",
"signer_field_checkbox",
"signer_field_radiobutton",
"signer_field_file_upload"
],
"type": "string"
}
},
"required": [
"type",
"text",
"signer_field_assigned_to"
]
},
{
"properties": {
"image_alignment": {
"default": "left",
"enum": [
"center",
"right"
],
"type": "string"
},
"image_base64": {
"description": "The base64-encoded png or jpg image (max 0.5MB).",
"type": "string"
},
"image_height_rem": {
"maximum": 38,
"minimum": 2,
"type": "number"
},
"type": {
"enum": [
"image"
],
"type": "string"
}
},
"required": [
"type",
"image_base64"
]
},
{
"properties": {
"table_cells": {
"items": {
"items": {
"properties": {
"alignment": {
"default": "left",
"enum": [
"center",
"right"
],
"type": "string"
},
"styles": {
"items": {
"enum": [
"bold",
"italic"
],
"type": "string"
},
"type": "array"
},
"text": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"type": "array"
},
"type": {
"enum": [
"table"
],
"type": "string"
}
},
"required": [
"type",
"table_cells"
]
},
{
"properties": {
"template_id": {
"description": "ID of the template to insert; Placeholder fields apply within this template too.",
"type": "string"
},
"type": {
"description": "Nested template inclusion. Maximum depth: 1 level",
"enum": [
"template"
],
"type": "string"
}
},
"required": [
"type",
"template_id"
]
}
],
"type": "object"
},
"type": "array"
},
"value": {
"description": "Text that replaces the placeholder.",
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"save_as_draft": {
"description": "Saves contract as draft for further editing; draft can be edited and sent via UI. URL: https://esignatures.com/contracts/contract_id/edit, where contract_id is in the API response.",
"enum": [
"yes",
"no"
],
"type": "string"
},
"signer_fields": {
"description": "Set default values for Signer fields.",
"items": {
"properties": {
"default_value": {
"description": "Default input value (use '1' for checkboxes and radio buttons, 'YYYY-mm-dd' for dates).",
"type": "string"
},
"select_position": {
"description": "Pre-selected option index for dropdowns (0-based).",
"type": "string"
},
"signer_field_id": {
"description": "Signer field ID of the Signer field, defined in the template or document_elements.",
"type": "string"
}
},
"required": [
"signer_field_id"
],
"type": "object"
},
"type": "array"
},
"signers": {
"description": "List of individuals required to sign the contract. Only include specific persons with their contact details; do not add generic signers.",
"items": {
"properties": {
"auto_sign": {
"description": "Automatically signs document if 'yes'; only for your signature not for other signers.",
"type": "string"
},
"company_name": {
"description": "Signer's company name.",
"type": "string"
},
"email": {
"description": "Signer's email address.",
"type": "string"
},
"mobile": {
"description": "Signer's mobile number (E.123 format).",
"type": "string"
},
"multi_factor_authentications": {
"description": "Authentication methods for signers (sms_verification_code, email_verification_code). Requires the relevant contact details.",
"items": {
"enum": [
"sms_verification_code",
"email_verification_code"
],
"type": "string"
},
"type": "array"
},
"name": {
"description": "Signer's name.",
"type": "string"
},
"redirect_url": {
"description": "URL for signer redirection post-signing.",
"type": "string"
},
"signature_request_delivery_methods": {
"description": "Methods for delivering signature request. Empty list skips sending. Default calculated. Requires contact details.",
"items": {
"enum": [
"email",
"sms"
],
"type": "string"
},
"type": "array"
},
"signed_document_delivery_method": {
"description": "Method to deliver signed document (email, sms). Usually required by law. Default calculated.",
"enum": [
"email",
"sms"
],
"type": "string"
},
"signing_order": {
"description": "Order in which signers receive the contract; same number signers are notified together. By default, sequential.",
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"type": "array"
},
"template_id": {
"description": "GUID of a mobile-friendly contract template within eSignatures. The template provides content, title, and labels. Required unless document_elements is provided.",
"type": "string"
},
"test": {
"description": "Marks contract as 'demo' with no fees; adds DEMO stamp, disables reminders.",
"enum": [
"yes",
"no"
],
"type": "string"
},
"title": {
"description": "Sets the contract's title, which appears as the first line in contracts and PDF files, in email subjects, and overrides the template's title.",
"type": "string"
}
},
"required": [
"contract_source",
"mcp_query"
],
"type": "object"
}