Skip to main content
Glama

Create Document

create_document
Destructive

Create a document and send it for electronic signature. Provide either templateId (from list_templates) or fileId (from upload_file) — not both. When using a template: call get_template to see signee slots and pre-configured signature settings, then get_template_fields for form fields. When using a file: call get_file_fields to discover form fields. Signature placement defaults to new_page unless explicitly configured via signatureBox. The document name is visible to signees and should be a clear, human-readable title, not the uploaded filename. If deriving it from a PDF filename, strip the file extension unless the user explicitly wants to keep it. BEFORE calling this tool, always ask the user: (1) invitation language, (2) optional personal message, (3) signature placement — only when using a file, not a template: new_page (default, recommended) or existing page with coordinates, (4) signature type — only if get_account_capabilities shows non-default types available and no template default applies; the choice only selects how the signer will verify on Formify's signing page, (5) AI assistant — only if get_account_capabilities confirms the aiAssistant capability. ALSO when using a file: ask the user whether they want a preview before sending. If yes, save the configuration as a draft via create_draft, share a one-time preview via get_draft_file_url, and send via send_draft after the user confirms — instead of calling create_document directly. Recommend a preview whenever signaturePlacement is 'existing' or when custom coordinates have been used.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "name": "<name>",
      "signeeDetails": "<signeeDetails>"
    },
    "name": "create_document"
  }
}

Input Schema

NameRequiredDescriptionDefault
nameYesHuman-readable document title visible to signees. If deriving from an uploaded PDF filename, strip the file extension (e.g. 'contract.pdf' → 'contract') unless the user explicitly wants the extension.
fieldsNoForm fields to pre-fill at document creation time. This is the preferred way to fill fields — always use this when you have the values, rather than set_document_field_values after creation.
fileIdNoFile ID from upload_file. Required if templateId is not provided.
userIdNoUser ID to assign as document owner. Defaults to the authenticated user.
languageNoLanguage for the signing invitation
templateIdNoTemplate ID from list_templates. Required if fileId is not provided.
aiAssistantNoOptional AI assistant that helps signees while reviewing the document. Requires the aiAssistant capability.
signeeDetailsYesList of signees. At least 1 is always required. The number of signees should match what the template expects — call get_template first to see how many signee slots it defines. The user decides the final count; some templates are pre-configured for a specific number.
sharingSettingNoWhether the document is private or shared with other users on the account
personalMessageNoOptional personal message included in the signing invitation. Maximum 500 characters.
enableSigningOrderNoEnable sequential signing order (default false)
fieldsReadonlyModeNoAlways set to 'filled' when providing field values — this locks pre-filled fields so signers cannot change them. Options: keepOriginal (default — no locking), filled (pre-filled fields become read-only), all (all fields become read-only).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / signeeDetails / items / properties / idScanBox / description
      Previous value: -"ID scan placeholder coordinates. Required for digital_ink_id_scan unless a template already provides a pre-configured position. Omit unless overriding. The ID document itself is captured and read on Formify's signing page; only the placeholder's position is configured here, and no image or document data passes through this API."New value: +"ID scan placeholder coordinates. Required for digital_ink_id_scan unless a template already provides a pre-configured position. Omit unless overriding. The ID document itself is captured and read on Formify's signing page; only the placeholder's position is configured here, and no image or document data passes through this API. The scanned front side is then placed in the signed document at this position, so the sender needs a legal basis for keeping a copy of the identity document there (see signatureType)."
    • changedInput schema / properties / signeeDetails / items / properties / signatureType / description
      Previous value: -"Signature method: digital_ink (default, always available), bankid_identification (Swedish BankID — requires signatureBankId capability), digital_ink_id_scan (draw + ID scan — requires signatureIdScan capability), face_liveness (draw + face liveness — requires signatureFaceLiveness capability). Call get_account_capabilities to verify availability before using a non-default type. Omit when using a template to use its pre-configured method. Only set to override. Identity verification for bankid_identification, digital_ink_id_scan and face_liveness is performed by Formify's signing page in the signer's browser, after the invitation is sent. This parameter only selects the method: no identity document, biometric data or national identity number is sent to, returned by or stored through this API."New value: +"Signature method: digital_ink (default, always available), bankid_identification (Swedish BankID — requires signatureBankId capability), digital_ink_id_scan (draw + ID scan — requires signatureIdScan capability), face_liveness (draw + face liveness — requires signatureFaceLiveness capability). Call get_account_capabilities to verify availability before using a non-default type. Omit when using a template to use its pre-configured method. Only set to override. Identity verification for bankid_identification, digital_ink_id_scan and face_liveness is performed by Formify's signing page in the signer's browser, after the invitation is sent. This parameter only selects the method: no identity document, biometric data or national identity number is sent to, returned by or stored through this API. digital_ink_id_scan additionally places an image of the signer's identity document (front side) in the signed document, at the idScanBox position. Reproducing a copy of an identity document requires the sender's own legal basis: before selecting this method, tell the user that a copy of the ID document will be embedded in the signed document and get an explicit yes. Suggest another signing method if they do not need a copy of the identity document in the document."
  2. Changed2 schema fields changed
    • changedInput schema / properties / signeeDetails / items / properties / idScanBox / description
      Previous value: -"ID scan placeholder coordinates. Required for digital_ink_id_scan unless a template already provides a pre-configured position. Omit unless overriding."New value: +"ID scan placeholder coordinates. Required for digital_ink_id_scan unless a template already provides a pre-configured position. Omit unless overriding. The ID document itself is captured and read on Formify's signing page; only the placeholder's position is configured here, and no image or document data passes through this API."
    • changedInput schema / properties / signeeDetails / items / properties / signatureType / description
      Previous value: -"Signature method: digital_ink (default, always available), bankid_identification (Swedish BankID — requires signatureBankId capability), digital_ink_id_scan (draw + ID scan — requires signatureIdScan capability), face_liveness (draw + face liveness — requires signatureFaceLiveness capability). Call get_account_capabilities to verify availability before using a non-default type. Omit when using a template to use its pre-configured method. Only set to override."New value: +"Signature method: digital_ink (default, always available), bankid_identification (Swedish BankID — requires signatureBankId capability), digital_ink_id_scan (draw + ID scan — requires signatureIdScan capability), face_liveness (draw + face liveness — requires signatureFaceLiveness capability). Call get_account_capabilities to verify availability before using a non-default type. Omit when using a template to use its pre-configured method. Only set to override. Identity verification for bankid_identification, digital_ink_id_scan and face_liveness is performed by Formify's signing page in the signer's browser, after the invitation is sent. This parameter only selects the method: no identity document, biometric data or national identity number is sent to, returned by or stored through this API."
  3. First observed

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint/openWorldHint/non-idempotent, and the description adds the real behavioral context those hints don't convey: invitations are sent to signees immediately, ID-scan embeds a copy of the signer's identity document and requires an explicit user yes, and the mandatory pre-call questionnaire. It also discloses the preview recommendation for 'existing' placement.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, then ordered by workflow phase (inputs → discovery → user questions → preview branch). Dense but each clause carries a decision; some parentheticals (name/extension stripping, AI assistant language) restate schema text and could be trimmed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 12 parameters, nested objects and no output schema, the description covers the full pre-call workflow and the draft/preview alternative thoroughly. It never says what the call returns (e.g. a document ID for subsequent get_document/get_recipient_links calls), which is the one gap for a create-then-send tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description still adds decision-level semantics the schema can't — which inputs are exclusive, that placement defaults to new_page only for file-based documents, that template defaults should not be overridden, and when signature-type choice is actually available. It mostly mirrors schema guidance on name/extension handling, which caps it below 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource plus the immediate effect ('Create a document and send it for electronic signature'), which separates it from create_draft (unsent draft) and create_link in the sibling list. It also names the two mutually exclusive source inputs (templateId vs fileId) up front.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes between template and file paths, names the prerequisite discovery calls (get_template, get_template_fields, get_file_fields, get_account_capabilities), and gives a concrete when-not-to-use rule: for previews, use create_draft → get_draft_file_url → send_draft instead of calling this tool directly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources