Send for signature
Sends a PDF from the file store to up to 10 people to sign; each gets their own link by email.
$0.50 a call
From your agent’s balance. A call that fails costs nothing.
An example
Send the trade agreement to Jana Weber to sign, with a short note.
Your agent callsesign_send$0.50 a call
The example business is Hansen & Voss, a restaurant-equipment wholesaler in Hamburg with 60 staff. The reply is the one the tool really gives.
{
"file_id": "9a1c3e5a-7d9f-4b1d-8f3a-6c8e0a2c4d7b",
"title": "Trade account agreement",
"signers": [
{
"name": "Jana Weber",
"email": "jana@weber-kuechenplanung.example"
}
],
"message": "Hi Jana, here is the trade agreement we discussed. Thank you!"
}Use it when
A contract, agreement or form needs signatures.
What it does
Send a PDF from the file store to up to 10 people to sign. Each gets an email with their own link, signs in the browser by drawing or typing, and everyone gets the signed PDF with a signing certificate. Without fields, a signature page with a signature and date line per signer is added at the end. With fields, place them yourself: page, x, y, width and height in percent of the page from its top-left corner (a signature field of about 30 x 5 fits a line). Every signer needs a signature field. Signers are emailed at once (parallel) or one after another (sequential). Emailing people outside the business needs an account that has topped up once. You hear how it goes as events (account_events, or a channel from notify_subscribe): esign.signed after each signature that leaves others to sign, naming who is left, esign.completed when everyone has signed, and esign.declined if someone declines.
What comes back
The request: its request_id, title, status, order, when it was sent and expires, the document's file_id, and each signer with their status and signing link. Every reply also carries cost_usd and balance_usd.
Inputs
| Name | Type | What it is |
|---|---|---|
file_idRequired | string | A PDF in the file store. Exactly 36 characters. |
titleRequired | string | What signers see, e.g. "Service agreement". 1 to 200 characters. |
signersRequired | array of objects | 1 to 10 items. |
signers[].nameRequired | string | Up to 120 characters. |
signers[].emailRequired | string | Up to 254 characters. |
fields | array of objects | Up to 300 items. |
fields[].signerRequired | integer | The signer's number in the signers list, from 1. At least 1. |
fields[].kindRequired | string | One of: signature,initials,name,date,text,checkbox. |
fields[].pageRequired | integer | At least 1. |
fields[].xRequired | number | Left edge, in percent of the page width from the left. |
fields[].yRequired | number | Top edge, in percent of the page height from the top. |
fields[].widthRequired | number | In percent of the page width. |
fields[].heightRequired | number | In percent of the page height. |
fields[].required | boolean | Default true (false for checkboxes). |
fields[].label | string | Shown to the signer, e.g. "Company name". Up to 120 characters. |
message | string | A note to the signers, shown in the email and on the signing page. Up to 2,000 characters. |
order | string | One of: parallel,sequential. Default: parallel. |
expires_in_days | integer | 1 to 90. Default: 30. |
The call
Over MCP, call esign_send on https://api.conecto.chat/mcp/esign. Over REST:
curl -X POST https://api.conecto.chat/v1/tools/esign_send \
-H "Authorization: Bearer $CONECTO_KEY" \
-H "Content-Type: application/json" \
-d '{"file_id":"9a1c3e5a-7d9f-4b1d-8f3a-6c8e0a2c4d7b","title":"Trade account agreement","signers":[{"name":"Jana Weber","email":"jana@weber-kuechenplanung.example"}],"message":"Hi Jana, here is the trade agreement we discussed. Thank you!"}'When it refuses
A refused call costs nothing and says what to do next.
| Code | When | What to do |
|---|---|---|
not_found404 | No file in the store has that file_id. | Find it with files_list. |
not_pdf400 | The file is not a PDF. | Make one with documents_convert_to_pdf first. |
too_many_pages400 | The PDF has more pages than a request takes. | Split it with fewer pages. |
invalid_input400 | A field is not on the page, too small, or of an unknown kind, or a signer has no signature field. | Place fields in percent of the page, and give each signer a signature field. |
payment_required_for_outbound402 | The balance is still free credit, which cannot send documents to people outside the business. | Top up once (POST /v1/topups). |
storage_full409 | The file store has no room for the request's files. | Delete files with files_delete, or add room with files_add_storage. |
More E-signature tools
All 10 tools- Save a document as a template
esign_save_templateSaves a PDF once with its signature fields placed per signer role, to send again and again.$0.001 a call - Send a template for signature
esign_send_templateSends a saved template to new signers, one per role: one request, or up to 50 at once.$0.50 per request sent - List templates
esign_list_templatesThe saved templates, with their roles and fields.Free* - Delete a template
esign_delete_templateDeletes a saved template; requests already sent from it stay as they are.Free - Get a signature request
esign_getWhere a signature request stands: each signer's status, and the signed PDF once everyone signed.Free* - List signature requests
esign_listSignature requests, newest first, optionally of one status.Free* - Get a signer's link
esign_signing_linkOne signer's signing link, to hand over yourself.Free* - Remind signers
esign_remindEmails everyone who still has to sign a reminder with their link, at most once a day.$0.02 a call
Give this to your agent.
Set up Conecto from https://conecto.chat/SKILL.md