E-signature

Save a document as a template

esign_save_template · Changes data · Markdown

Saves a PDF once with its signature fields placed per signer role, to send again and again.

$0.001 a call

From your agent’s balance. A call that fails costs nothing.

An example

Keep our trade account agreement as a template: the customer signs and dates at the bottom of page 2, then Henrik countersigns.

Your agent callsesign_save_template$0.001 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.

With these arguments
{
  "name": "trade-account-agreement",
  "file_id": "0b8e4c1a-5d2f-4f8e-9a51-2c3d4e5f6a7b",
  "title": "Trade account agreement",
  "roles": [
    "Customer",
    "Hansen & Voss"
  ],
  "fields": [
    {
      "role": 1,
      "kind": "signature",
      "page": 1,
      "x": 10,
      "y": 70,
      "width": 30,
      "height": 5
    },
    {
      "role": 1,
      "kind": "date",
      "page": 1,
      "x": 45,
      "y": 70,
      "width": 15,
      "height": 4
    },
    {
      "role": 2,
      "kind": "signature",
      "page": 1,
      "x": 10,
      "y": 82,
      "width": 30,
      "height": 5
    }
  ]
}
What comes back
{
  "template": {
    "name": "trade-account-agreement",
    "title": "Trade account agreement",
    "file_id": "0b8e4c1a-5d2f-4f8e-9a51-2c3d4e5f6a7b",
    "roles": [
      "Customer",
      "Hansen & Voss"
    ],
    "fields": [
      {
        "kind": "signature",
        "page": 1,
        "x": 10,
        "y": 70,
        "width": 30,
        "height": 5,
        "required": true,
        "label": "",
        "role": 1
      },
      {
        "kind": "date",
        "page": 1,
        "x": 45,
        "y": 70,
        "width": 15,
        "height": 4,
        "required": true,
        "label": "",
        "role": 1
      }
    ],
    "message": null,
    "order": "parallel",
    "expires_in_days": 30,
    "updated_at": "2026-10-14T08:00:00+00:00"
  }
}

Use it when

A contract, NDA or waiver goes out often, to different people.

What it does

Save a PDF from the file store once, with its fields placed per signer role (page, x, y, width and height in percent of the page, as in esign_send), so contracts, NDAs and waivers go out later without placing a field again. roles names who signs, in order; every role needs a signature field. Saving a name again replaces it. $0.001.

What comes back

template: its name, title, PDF, roles and fields (each with its role), note, order and expiry. Every reply also carries cost_usd and balance_usd.

Inputs

NameTypeWhat it is
nameRequiredstringThe template's name, like service-agreement. 2 to 60 characters, matches ^[a-z0-9][a-z0-9-]*[a-z0-9]$.
file_idRequiredstringA PDF in the file store. Exactly 36 characters.
titleRequiredstringWhat signers see, e.g. "Service agreement". 1 to 200 characters.
rolesRequiredarray of stringsWho signs, in order, e.g. ["Customer", "Hansen & Voss"]. 1 to 10 items.
fieldsRequiredarray of objects1 to 300 items.
fields[].kindRequiredstringOne of: signature,initials,name,date,text,checkbox.
fields[].pageRequiredintegerAt least 1.
fields[].xRequirednumberLeft edge, in percent of the page width from the left.
fields[].yRequirednumberTop edge, in percent of the page height from the top.
fields[].widthRequirednumberIn percent of the page width.
fields[].heightRequirednumberIn percent of the page height.
fields[].requiredbooleanDefault true (false for checkboxes).
fields[].labelstringShown to the signer, e.g. "Company name". Up to 120 characters.
fields[].roleRequiredintegerWhose field: the role's number in roles, from 1. At least 1.
messagestringThe note to signers each time. Up to 2,000 characters.
orderstringOne of: parallel,sequential. Default: parallel.
expires_in_daysinteger1 to 90. Default: 30.

The call

Over MCP, call esign_save_template on https://api.conecto.chat/mcp/esign. Over REST:

Terminal
curl -X POST https://api.conecto.chat/v1/tools/esign_save_template \
  -H "Authorization: Bearer $CONECTO_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"trade-account-agreement","file_id":"0b8e4c1a-5d2f-4f8e-9a51-2c3d4e5f6a7b","title":"Trade account agreement","roles":["Customer","Hansen & Voss"],"fields":[{"role":1,"kind":"signature","page":1,"x":10,"y":70,"width":30,"height":5},{"role":1,"kind":"date","page":1,"x":45,"y":70,"width":15,"height":4},{"role":2,"kind":"signature","page":1,"x":10,"y":82,"width":30,"height":5}]}'

When it refuses

A refused call costs nothing and says what to do next.

CodeWhenWhat to do
not_found404The file is not in the store.Upload the PDF with files_upload first.
not_pdf400The file is not a PDF.Make one with documents_convert_to_pdf.
invalid_input400A role has no signature field, a field does not fit its page, or the name is not lowercase letters, digits and dashes.Fix what the message names.
limit_reached409The account keeps 100 templates already.Delete one first.

Give this to your agent.

Set up Conecto from https://conecto.chat/SKILL.md