SELISE Signature
Server Details
Prepare and send documents for electronic signature with SELISE Signature.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 4 tools
The four tools cover distinct stages of the signature lifecycle, and descriptions explicitly route between them (e.g. 'For an already prepared document, use send_prepared_signature_document instead'). However, prepare_and_send_free_signature_document overlaps conceptually with the prepare + send pair, creating some misselection risk despite the heavy guidance.
All names use consistent snake_case with verb-first phrasing (get_, prepare_, send_), which is predictable. Minor deviation: one tool uses a compound verb 'prepare_and_send', and 'send_prepared_' vs 'prepare_' prefixes slightly blur the verb pattern.
Four tools is well-scoped for a document-signing workflow, covering the prepare, prepare-and-send, send, and status operations without redundancy. Slightly lean but each tool earns its place.
Core prepare/send/status operations are covered, but notable lifecycle gaps exist: no cancel/void, no list or get-document-metadata, no download of the signed document, and the status tool explicitly omits cancellation, expiration, and signer-level progress. Agents can work around some gaps but cannot fully manage documents.
Available Tools
4 toolsget_signature_document_statusGet signature document statusARead-onlyIdempotentInspect
Read document status events once using an actual documentId UUID. Use to check progress after preparation/sending, especially pending or UNKNOWN_OUTCOME. Does not upload, prepare, send, sign, or continuously poll. Returns {statuses: [...]} containing only distinct observed values: preparation_success (preparation succeeded), preparation_failed (preparation failed), sending_success (dispatch succeeded, not completed signing), sending_failed (dispatch failed), completed (document completion recorded). These are historical observations, not one current state. Success and failure can both appear; array order does not establish chronology. An empty list means no recognized events were returned: it does not prove existence, failure, completion, or that resubmission is safe. Other events, including cancellation, expiration, and individual-signer progress, are omitted; this is not a complete lifecycle report. Returns no timestamps, signer details, download URLs, or signing links. Request/authentication failures return an error, not an empty status list. If polling is needed, space checks by at least 3 seconds and avoid concurrent polling of the same document. A status check does not authorize retrying a state-changing tool. Use only the declared fields. Ask for missing facts instead of inventing values. Service credentials are configured on the server and must not be included in tool arguments.
| Name | Required | Description | Default |
|---|---|---|---|
| documentId | Yes | Document UUID returned by a previous preparation/submission or supplied from a trusted source. Use the exact documentId, not fileId, trackingId, or operationId. Do not generate a placeholder UUID; format validity does not prove the document exists. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes far beyond the annotations (which only cover read-only/idempotent safety): it discloses the return shape, the exact distinct status values, that the list is historical rather than a single current state, that order is not chronology, that an empty list proves nothing, what event types are omitted, that no timestamps/links are returned, and that request failures error rather than return empty. It also adds a rate-limit guideline (>=3s spacing, no concurrent polling).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose, then constraints, then return semantics are front-loaded and mostly information-dense. It is long for a one-parameter read tool and closes with somewhat generic boilerplate ('Use only the declared fields. Ask for missing facts instead of inventing values'), which costs a point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even though an output schema exists (so return values need not be explained), the description still supplies the interpretive context an agent needs: what each status value means, how to read an empty result, and what is omitted. Nothing needed to call or interpret this tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and there is a single required parameter, so the schema already carries the semantics. The description reinforces the documentId semantics (use the actual UUID, not fileId/trackingId/operationId, no placeholders) but adds little beyond what the schema field description already states, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read document status events') and explicitly bounds scope by naming what it does not do (upload, prepare, send, sign, poll continuously). This cleanly separates it from the three state-changing siblings without requiring the agent to open any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear when-to-use context ('after preparation/sending, especially pending or UNKNOWN_OUTCOME') and when-not guidance (not continuous polling, a status check does not authorize retrying a state-changing tool). It does not name the sibling tools as explicit alternatives, leaving that inference to the agent, which keeps this just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_and_send_free_signature_documentPrepare and send free signature documentADestructiveInspect
Prepare a NEW free-signature document from one PDF, add placements, and send it in one workflow. Accept Base64, a public HTTPS download URL, an existing SELISE storage file ID, a reference from the binary upload endpoint, or a ChatGPT attachment through chatgptFile. Uploads new bytes or reuses the existing storage file. Use only when sending is requested and all participant details and actual PDF placements are known. For an already prepared document, use send_prepared_signature_document instead. This tool does not itself sign the PDF. Provide exactly ONE file source: documentBase64 (raw standard Base64), documentUrl (public HTTPS PDF download URL, including a temporary signed URL), storageFileId (an existing SELISE storage PDF accessible to this server), uploadId (the exact short-lived reference returned by this server's HTTP POST /uploads), or chatgptFile (the host-provided file object for a PDF attached in ChatGPT). In ChatGPT, use chatgptFile via the declared file-input integration for a user attachment; its download_url and file_id are supplied by the host. Do not combine sources, invent file content or IDs, or pass local paths to the server. A bare ChatGPT attachment ID is not a documentUrl or storageFileId. Other clients can continue using the four generic sources. For binary upload, POST multipart/form-data with one file part named file to /uploads on this server's HTTP deployment, then use the returned uploadId before expiresAt; uploading does not prepare or send a document. Raw application/pdf uploads with a fileName query parameter are also accepted. The uploadId is valid for one hour; keep it private. Source PDFs are validated consistently. documentUrl must return PDF bytes without additional authentication headers; the server does not use browser cookies, login pages, or private-network URLs. It follows at most three public HTTPS redirects. Storage files and upload references are reused without a second upload. Supply fileName ending in .pdf and the normal preparation fields for every method. A file reference is not a documentId and does not mean preparation has completed. Maximum actual PDF size for every source on this server: 26214400 bytes, excluding Base64 encoding or multipart overhead. PDFs must be readable, unencrypted, and have supported page geometry. File-source retrieval and validation happen before preparation. Never fabricate file content. ownerEmail must match one of the signatories' emails. Signatory emails must be unique (case-insensitive). Provide a positive integer signingOrder for every signatory or omit it for all; role defaults to signer. Ask for missing participant details; do not invent people or change their intended roles to satisfy validation. Role values and behavior: signer signs the contract; reviewer is a view-only participant who can see the contract but has no action to perform; approver reviews and approves the contract without signing. Map a requested viewer to reviewer, and a requested reviewer who must approve to approver. The literal value viewer is not accepted. If the intended action is unclear, ask before choosing a role. Set coordinateSystem to page_percent. ALL field types use the same page-relative percentages: (0,0) is the top-left of the visible page, x increases rightward, y increases downward; 100 is the full page width or height, not 1. pageNumber is zero-based (0 is the first page). x/width are percentages of page width; y/height are percentages of page height. Positions must be >= 0, sizes > 0, x + width <= 100 and y + height <= 100. Example: x=10,y=80,width=30,height=10 starts 10% from the left and 80% from the top, covering 30% of page width and 10% of its height. The server reads each PDF page and handles backend units and field-specific conversions. Do not supply pixels, PDF points, or backend coordinates, or guess a placement from an unrelated image. Use the actual visible page and the user's intended field location. Unrepresentable placements, unreadable PDFs, 180-degree rotated placement pages, and text fields on rotated/cropped pages are rejected before sending; provide a flattened PDF if requested by the error. Provide at least one signatureCoordinates entry; optional coordinate arrays default to empty. Every coordinate's signatoryEmail must identify a participant in this document. Every signatory with role signer (including the default role) must have at least one signatureCoordinates entry, and every signature coordinate email must appear in signatories. The reviewer (view-only) and approver (approval without signing) roles do not sign and are not subject to this MCP signer-coverage check; do not invent signature placements for them. Every coordinate array applies to the selected source PDF. If placements are missing, obtain them; use prepare_free_signature_document only when preparation alone is intended. Returns sent when rollout succeeds, or pending when accepted but unconfirmed. sent does not mean completed signing. A failed combined workflow may already have uploaded or prepared a document; inspect its status before choosing a follow-up action. Keep returned documentId, fileId, operationId, and trackingId when present. pending means accepted but completion is unconfirmed: check get_signature_document_status with documentId instead of resubmitting. UNKNOWN_OUTCOME, a timeout, or a lost response may follow a successful submission; do not automatically repeat a preparation or send call. Inspect status when an ID is available; an empty status list does not make a retry safe. INVALID_REQUEST means inputs need correction; REQUEST_FAILED gives a referenceId for diagnosis. If the cause is unclear, ask for clarification or use the referenceId rather than guessing. Repeating a preparation can create another document. Use only the declared fields. Ask for missing facts instead of inventing values. Service credentials are configured on the server and must not be included in tool arguments.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Document title; required and nonempty after trimming. | |
| fileName | Yes | PDF filename, 1-255 characters, ending in .pdf (case-insensitive). Required for every source. Use a filename, not a path or URL. | |
| language | No | Document workflow language. Supported values: en, en-US, de, de-DE. Defaults to en-US; this does not translate the uploaded PDF. | en-US |
| uploadId | No | File source option 4: exact signed reference returned by this server's POST /uploads endpoint. Valid for one hour, until its expiresAt; do not alter it or replace it with a storage ID. Omit the other sources. Use only to begin a new preparation; it does not make preparation/send calls idempotent. An accepted/pending document must not be prepared again. | |
| ownerEmail | Yes | Document owner's valid email, without surrounding whitespace. Must match an email in signatories after lowercase normalization. Being the owner does not automatically make someone a signer; preserve their intended role. | |
| chatgptFile | No | File source option 5: actual user-attached PDF supplied through ChatGPT's file-input integration. Use the host-provided file object with download_url and file_id. Omit all other file sources; do not copy a /mnt/data path into documentUrl or invent file metadata. Supply the separate fileName and normal contract fields. The server downloads and validates the PDF; expired URLs require a fresh host-provided file reference. | |
| documentUrl | No | File source option 2: public HTTPS link that returns the actual PDF, optionally with a short-lived signed query string. No login page, browser cookies, custom authentication headers, local/private address, or data/file URL. Omit all other file sources. The server downloads and size-checks the file. For a ChatGPT attachment, use chatgptFile through the host file-input integration. | |
| signatories | Yes | Complete participant list, including the owner; at least one entry. ownerEmail must match one of the signatories' emails. Signatory emails must be unique (case-insensitive). Provide a positive integer signingOrder for every signatory or omit it for all; role defaults to signer. Ask for missing participant details; do not invent people or change their intended roles to satisfy validation. Role values and behavior: signer signs the contract; reviewer is a view-only participant who can see the contract but has no action to perform; approver reviews and approves the contract without signing. Map a requested viewer to reviewer, and a requested reviewer who must approve to approver. The literal value viewer is not accepted. If the intended action is unclear, ask before choosing a role. | |
| storageFileId | No | File source option 3: exact existing SELISE storage file ID accessible using this server's configured credentials. It is not a documentId, client-specific attachment ID, or uploadId. Use an original PDF intended for a NEW document; for an already prepared document use send_prepared_signature_document. Omit all other file sources. The PDF is validated and reused without uploading again. | |
| documentBase64 | No | File source option 1: actual PDF bytes encoded as raw standard Base64. Whitespace is ignored; no data URL, placeholder, local path, or fabricated content. Omit all other file sources when using this option. | |
| coordinateSystem | Yes | Required: page_percent. All positions and sizes use 0-100 percentages of the visible PDF page, from its top-left. This explicit marker prevents old pixel/backend coordinates from being misinterpreted. Do not relabel old values; calculate their page percentages first. | |
| receiveRolloutEmail | No | Whether the document owner should receive the rollout email when the document is sent. Defaults to true. Setting this during preparation does not send the document. | |
| signatureCoordinates | Yes | Required nonempty signature-placement list for this PDF. In the combined tool, every signer needs at least one entry and every entry must refer to a supplied participant. For send-only, use the prepared document's participants and placements. | |
| textFieldCoordinates | No | Optional text placements for this PDF; omit or use [] when none are requested. Each entry requires propertyName and participant/page/position/size fields. | |
| simpleImageCoordinates | No | Optional simple-image placements for this PDF; defaults to []. Each entry requires a verified type and participant/page/position/size fields. | |
| stampPostInfoCoordinates | No | Optional post-signing information placements for this PDF; defaults to []. Each entry requires verified entityName/propertyName and participant/page/position/size fields. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Far exceeds the annotations: it discloses the 26,214,400-byte cap, one-hour uploadId lifetime and privacy requirement, the absence of auth-header/cookie/private-network support for documentUrl, the three-redirect limit, pre-send rejection cases (unreadable, rotated, cropped), and the fact that a failed combined workflow may already have uploaded or prepared a document. It also explains the sent vs pending outcomes and warns against retrying on UNKNOWN_OUTCOME or timeouts, directly complementing idempotentHint=false and destructiveHint=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded well, but the description is enormously long and heavily duplicative: the role definitions, the page_percent coordinate explanation, the one-source rule, and the signer-coverage rule all appear multiple times within the description and again in the nested schema property descriptions. Many sentences do not earn their place because the same content is already carried by the 100%-covered schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 16-parameter, nested, mutation tool with an output schema, the description covers everything an agent needs: file-source selection, participant rules, coordinate semantics, rollback/retry hazards, and the meaning of sent/pending statuses. Nothing material is left for the agent to infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so a baseline of 3 is warranted, but the description goes beyond it by enumerating the exactly-one file-source rule, stating ownerEmail must match a signatory, requiring all-or-nothing signingOrder, and defining the page_percent coordinate convention with a worked example. It still largely restates schema text rather than adding new cross-field constraints for every parameter, so it stops short of 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a precise compound verb ('Prepare', 'add placements', 'send'), the resource (a NEW free-signature document from one PDF), and the workflow scope. It explicitly distinguishes itself from siblings: 'For an already prepared document, use send_prepared_signature_document instead' and 'use prepare_free_signature_document only when preparation alone is intended.' An agent can route among all three siblings without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit entry condition ('Use only when sending is requested and all participant details and actual PDF placements are known'), names the two alternative tools and the conditions selecting them, and adds exclusion guidance such as not combining sources and asking for missing facts rather than inventing them. Role-selection guidance (viewer→reviewer, reviewer-who-approves→approver) is spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_free_signature_documentPrepare free signature documentAInspect
Prepare a NEW free-signature document from one PDF without sending it. Accept Base64, a public HTTPS download URL, an existing SELISE storage file ID, a reference from the binary upload endpoint, or a ChatGPT attachment through chatgptFile. New bytes are uploaded; existing storage/upload references are reused. Use when preparation is requested or placements are not ready; do not call again for an existing or pending document. Provide exactly ONE file source: documentBase64 (raw standard Base64), documentUrl (public HTTPS PDF download URL, including a temporary signed URL), storageFileId (an existing SELISE storage PDF accessible to this server), uploadId (the exact short-lived reference returned by this server's HTTP POST /uploads), or chatgptFile (the host-provided file object for a PDF attached in ChatGPT). In ChatGPT, use chatgptFile via the declared file-input integration for a user attachment; its download_url and file_id are supplied by the host. Do not combine sources, invent file content or IDs, or pass local paths to the server. A bare ChatGPT attachment ID is not a documentUrl or storageFileId. Other clients can continue using the four generic sources. For binary upload, POST multipart/form-data with one file part named file to /uploads on this server's HTTP deployment, then use the returned uploadId before expiresAt; uploading does not prepare or send a document. Raw application/pdf uploads with a fileName query parameter are also accepted. The uploadId is valid for one hour; keep it private. Source PDFs are validated consistently. documentUrl must return PDF bytes without additional authentication headers; the server does not use browser cookies, login pages, or private-network URLs. It follows at most three public HTTPS redirects. Storage files and upload references are reused without a second upload. Supply fileName ending in .pdf and the normal preparation fields for every method. A file reference is not a documentId and does not mean preparation has completed. Maximum actual PDF size for every source on this server: 26214400 bytes, excluding Base64 encoding or multipart overhead. PDFs must be readable, unencrypted, and have supported page geometry. File-source retrieval and validation happen before preparation. Never fabricate file content. ownerEmail must match one of the signatories' emails. Signatory emails must be unique (case-insensitive). Provide a positive integer signingOrder for every signatory or omit it for all; role defaults to signer. Ask for missing participant details; do not invent people or change their intended roles to satisfy validation. Role values and behavior: signer signs the contract; reviewer is a view-only participant who can see the contract but has no action to perform; approver reviews and approves the contract without signing. Map a requested viewer to reviewer, and a requested reviewer who must approve to approver. The literal value viewer is not accepted. If the intended action is unclear, ask before choosing a role. No coordinates are needed for this tool. Returns prepared only after preparation is confirmed, or pending after acceptance without confirmation. prepared does not mean sent or signed. Once prepared (or preparation_success is observed), use send_prepared_signature_document with the returned documentId/fileId and verified placements when sending is requested. Keep returned documentId, fileId, operationId, and trackingId when present. pending means accepted but completion is unconfirmed: check get_signature_document_status with documentId instead of resubmitting. UNKNOWN_OUTCOME, a timeout, or a lost response may follow a successful submission; do not automatically repeat a preparation or send call. Inspect status when an ID is available; an empty status list does not make a retry safe. INVALID_REQUEST means inputs need correction; REQUEST_FAILED gives a referenceId for diagnosis. If the cause is unclear, ask for clarification or use the referenceId rather than guessing. Repeating a preparation can create another document. Use only the declared fields. Ask for missing facts instead of inventing values. Service credentials are configured on the server and must not be included in tool arguments.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Document title; required and nonempty after trimming. | |
| fileName | Yes | PDF filename, 1-255 characters, ending in .pdf (case-insensitive). Required for every source. Use a filename, not a path or URL. | |
| language | No | Document workflow language. Supported values: en, en-US, de, de-DE. Defaults to en-US; this does not translate the uploaded PDF. | en-US |
| uploadId | No | File source option 4: exact signed reference returned by this server's POST /uploads endpoint. Valid for one hour, until its expiresAt; do not alter it or replace it with a storage ID. Omit the other sources. Use only to begin a new preparation; it does not make preparation/send calls idempotent. An accepted/pending document must not be prepared again. | |
| ownerEmail | Yes | Document owner's valid email, without surrounding whitespace. Must match an email in signatories after lowercase normalization. Being the owner does not automatically make someone a signer; preserve their intended role. | |
| chatgptFile | No | File source option 5: actual user-attached PDF supplied through ChatGPT's file-input integration. Use the host-provided file object with download_url and file_id. Omit all other file sources; do not copy a /mnt/data path into documentUrl or invent file metadata. Supply the separate fileName and normal contract fields. The server downloads and validates the PDF; expired URLs require a fresh host-provided file reference. | |
| documentUrl | No | File source option 2: public HTTPS link that returns the actual PDF, optionally with a short-lived signed query string. No login page, browser cookies, custom authentication headers, local/private address, or data/file URL. Omit all other file sources. The server downloads and size-checks the file. For a ChatGPT attachment, use chatgptFile through the host file-input integration. | |
| signatories | Yes | Complete participant list, including the owner; at least one entry. ownerEmail must match one of the signatories' emails. Signatory emails must be unique (case-insensitive). Provide a positive integer signingOrder for every signatory or omit it for all; role defaults to signer. Ask for missing participant details; do not invent people or change their intended roles to satisfy validation. Role values and behavior: signer signs the contract; reviewer is a view-only participant who can see the contract but has no action to perform; approver reviews and approves the contract without signing. Map a requested viewer to reviewer, and a requested reviewer who must approve to approver. The literal value viewer is not accepted. If the intended action is unclear, ask before choosing a role. | |
| storageFileId | No | File source option 3: exact existing SELISE storage file ID accessible using this server's configured credentials. It is not a documentId, client-specific attachment ID, or uploadId. Use an original PDF intended for a NEW document; for an already prepared document use send_prepared_signature_document. Omit all other file sources. The PDF is validated and reused without uploading again. | |
| documentBase64 | No | File source option 1: actual PDF bytes encoded as raw standard Base64. Whitespace is ignored; no data URL, placeholder, local path, or fabricated content. Omit all other file sources when using this option. | |
| receiveRolloutEmail | No | Whether the document owner should receive the rollout email when the document is sent. Defaults to true. Setting this during preparation does not send the document. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare non-read-only, non-idempotent, non-destructive, open-world; the description goes far past that with concrete behavior: 26214400-byte size cap, one-hour private uploadId lifetime, at-most-three HTTPS redirects, no cookies/auth headers/private-network URLs, and 'repeating a preparation can create another document.' Error semantics (INVALID_REQUEST vs REQUEST_FAILED/referenceId) and the prepared/pending distinction are disclosed explicitly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and usage rules are correctly front-loaded, but the body is very long and repeats itself: the signer/reviewer/approver definitions, the ownerEmail-matches-signatories rule, and the unique-email rule each appear both here and again in the signatories/role schema properties. Several sentences (source ingestion details) earn their place; several others are restatements of structured data.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 11-parameter tool with nested objects, a oneOf source union, and an output schema, the description covers everything an agent needs to call it correctly: source selection, upload prerequisites, validation constraints, idempotency hazards, and post-call routing. Return-value detail is (correctly) left to the output schema rather than duplicated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so 3 is the baseline; the description exceeds it by explaining source precedence (exactly ONE of five sources, no combining, no fabrication), the two-step /uploads multipart flow that produces uploadId, and role-mapping rules (viewer→reviewer, approving reviewer→approver). Much of the role/ownerEmail text is, however, duplicated verbatim in the schema, so the net add is real but partly redundant.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a precise verb+resource+scope: "Prepare a NEW free-signature document from one PDF without sending it." The 'without sending it' clause and the explicit routing to send_prepared_signature_document and get_signature_document_status let an agent separate this from its three siblings without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ("Use when preparation is requested or placements are not ready"), an explicit prohibition ("do not call again for an existing or pending document"), and names the follow-on alternatives (send_prepared_signature_document for sending, get_signature_document_status for pending). It also states the anti-retry rule for UNKNOWN_OUTCOME/timeout cases, which is exactly the guidance an agent needs before re-invoking.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_prepared_signature_documentSend prepared signature documentADestructiveInspect
Add field placements to an EXISTING prepared free-signature document and send it to its participants. This tool does not upload, prepare, or itself sign a document. Use only when sending is requested and preparation is confirmed; for a pending preparation, check status first. Reuse the matching documentId and fileId from preparation. All coordinate arrays apply to that single PDF and must refer to its existing participants. The server downloads the current PDF to read page dimensions for conversion; it does not discover intended field locations or retrieve participants. Obtain the participants and intended placements before calling. This tool uses only the prepared document's fileId, not documentBase64, documentUrl, storageFileId, uploadId, or chatgptFile. Maximum downloaded PDF size: 26214400 bytes. To start a new document from any of the five file sources, use a preparation tool instead. Set coordinateSystem to page_percent. ALL field types use the same page-relative percentages: (0,0) is the top-left of the visible page, x increases rightward, y increases downward; 100 is the full page width or height, not 1. pageNumber is zero-based (0 is the first page). x/width are percentages of page width; y/height are percentages of page height. Positions must be >= 0, sizes > 0, x + width <= 100 and y + height <= 100. Example: x=10,y=80,width=30,height=10 starts 10% from the left and 80% from the top, covering 30% of page width and 10% of its height. The server reads each PDF page and handles backend units and field-specific conversions. Do not supply pixels, PDF points, or backend coordinates, or guess a placement from an unrelated image. Use the actual visible page and the user's intended field location. Unrepresentable placements, unreadable PDFs, 180-degree rotated placement pages, and text fields on rotated/cropped pages are rejected before sending; provide a flattened PDF if requested by the error. Provide at least one signatureCoordinates entry; optional coordinate arrays default to empty. Every coordinate's signatoryEmail must identify a participant in this document. Role values and behavior: signer signs the contract; reviewer is a view-only participant who can see the contract but has no action to perform; approver reviews and approves the contract without signing. Map a requested viewer to reviewer, and a requested reviewer who must approve to approver. The literal value viewer is not accepted. If the intended action is unclear, ask before choosing a role. Returns sent when rollout succeeds, or pending when accepted but unconfirmed. sent means dispatched for signing, not that all participants have signed; use the status tool for completed. Do not send again after sending_success or completed, or while a previous send is pending. Keep returned documentId, fileId, operationId, and trackingId when present. pending means accepted but completion is unconfirmed: check get_signature_document_status with documentId instead of resubmitting. UNKNOWN_OUTCOME, a timeout, or a lost response may follow a successful submission; do not automatically repeat a preparation or send call. Inspect status when an ID is available; an empty status list does not make a retry safe. INVALID_REQUEST means inputs need correction; REQUEST_FAILED gives a referenceId for diagnosis. If the cause is unclear, ask for clarification or use the referenceId rather than guessing. Repeating a preparation can create another document. Use only the declared fields. Ask for missing facts instead of inventing values. Service credentials are configured on the server and must not be included in tool arguments.
| Name | Required | Description | Default |
|---|---|---|---|
| fileId | Yes | Exact fileId for the PDF in that prepared document, returned by preparation. Every supplied coordinate applies to this one file. Do not use a documentId, local path, or URL. | |
| documentId | Yes | Exact documentId returned by preparation for the existing document to send. Confirm preparation succeeded before calling. Do not invent an ID or substitute a fileId, operationId, or trackingId. | |
| coordinateSystem | Yes | Required: page_percent. All positions and sizes use 0-100 percentages of the visible PDF page, from its top-left. This explicit marker prevents old pixel/backend coordinates from being misinterpreted. Do not relabel old values; calculate their page percentages first. | |
| signatureCoordinates | Yes | Required nonempty signature-placement list for this PDF. In the combined tool, every signer needs at least one entry and every entry must refer to a supplied participant. For send-only, use the prepared document's participants and placements. | |
| textFieldCoordinates | No | Optional text placements for this PDF; omit or use [] when none are requested. Each entry requires propertyName and participant/page/position/size fields. | |
| simpleImageCoordinates | No | Optional simple-image placements for this PDF; defaults to []. Each entry requires a verified type and participant/page/position/size fields. | |
| stampPostInfoCoordinates | No | Optional post-signing information placements for this PDF; defaults to []. Each entry requires verified entityName/propertyName and participant/page/position/size fields. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive=true, idempotent=false and openWorld=true, and the description goes well beyond them: it warns that retrying after UNKNOWN_OUTCOME/timeout may duplicate a successful submission, defines sent vs pending vs completed semantics, lists rejection conditions (unreadable PDFs, 180-degree rotated pages, text on cropped pages), states the 26214400-byte download cap, and specifies preconditions (participants and placements must pre-exist). This is unusually rich disclosure for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the scope and the key exclusions, but the page-percentage paragraph appears verbatim in the schema root, again in the description, and a third time inside signatureCoordinates, and the same rejection/size text is duplicated. Substantial length is spent repeating structured fields rather than adding new information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be documented, yet the description still explains the sent/pending outcomes and which IDs to retain. Combined with error-code handling, retry safety, and preconditions, there is nothing material an agent needs to invoke this tool correctly that is left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema does not carry: which file sources are excluded (documentBase64, documentUrl, storageFileId, uploadId, chatgptFile), the requirement to reuse the preparation's documentId/fileId, and the role semantics (signer/reviewer/approver, with 'viewer' not accepted). It loses a point because the coordinate-unit explanation largely duplicates the schema text rather than adding to it, and the referenced role values do not appear as schema properties.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Add field placements to an EXISTING prepared free-signature document and send it to its participants') and immediately bounds scope by naming what it does not do (upload, prepare, sign). An agent can separate it from prepare_free_signature_document and prepare_and_send_free_signature_document without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly conditions use ('Use only when sending is requested and preparation is confirmed'), names the prerequisite alternative ('for a pending preparation, check status first'), and routes new-document work to a preparation tool. It also tells the agent not to repeat a send after success/completed/pending, which is exactly the when-not guidance an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
- First observed
get_signature_document_status - First observed
prepare_and_send_free_signature_document - First observed
prepare_free_signature_document - First observed
send_prepared_signature_document
Related MCP Connectors
Send documents for legally binding e-signature and manage the reusable templates behind them.
- FormifyOAutheu.formify
Send agreements for e-signing, use templates, track signatures, send reminders, get signed documents
Send documents for e-signature, e-witness, track and remind signers, SMS, and download signed PDFs.
Send contracts for e-signature, track signing, get signed PDFs and audit trails, verify any PDF.
1
Related MCP Servers
AlicenseNot gradedqualityAmaintenanceEnables connecting to a Brazilian digital signature platform to prepare and send documents, track signatures, send reminders, and download signed copies.3MIT- AlicenseNot gradedqualityDmaintenanceSubnoto - Electronic Signature MCP server allows to send, receive and sign electronic documents with legally binding signatures. It connects to a confidential computing environment to ensure confidentiality of exchanged documents.MIT
- AlicenseBqualityBmaintenanceeSignatures.com MCP: full control of contract content from your AI. Read and rewrite contracts and templates as Markdown, before and after sending. Send for signature, manage signers, create public signing links and track status. Hosted with OAuth, no install. Pay-per-use, no subscription.1353 PyPI40MIT
- AlicenseAqualityDmaintenanceEnables managing electronic signatures and contracts through the eSignatures API, including creating, sending, and withdrawing contracts, as well as managing templates and collaborators.13MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.