Formify — AI Assisted E-Signing

Formify turns document paperwork into something you can just ask for.

От сообщества: Добавлен пользователем или импортирован; проверьте владельца перед подключениемРаботаетБез входаГлобальныйБесплатноМожет изменять данные

Что умеет

  • List Documents: List documents created by the user or shared within the account.
  • Get Document: Get detailed status and metadata for a specific document, including per-signee signing status. The document `status` is exactly one of: `created` (created and ready), `processing` (the A
  • Create Document: 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_templa

Какие данные видит

Нужен ли аккаунт

Не нужен: сервер работает без входа

Formify turns document paperwork into something you can just ask for.

Describe the agreement you need and it is built as a real, fillable PDF — text fields, checkboxes, dropdowns and signature space placed where a signing client actually expects them. Send it for electronic signature to one person or several, in a set order or all at once, by email or SMS, and preview exactly where every field landed before anyone is contacted.

Prove who signed. Swedish BankID, an ID document scan, a live face check, or a company registration lookup for KYC and AML — including the option to capture an ID document's data without storing the image at all.

Attach an AI assistant to the document itself. The recipient can ask it what a clause means and it highlights the passage it is answering about, reads it aloud if they prefer, and answers in English, Swedish or Spanish. They never have to paste your contract into another chatbot to understand it.

Then track it. See who signed, who only opened it, and who never looked. Remind only the people who have not signed. Fix a mistyped email, hand someone a link in person, revoke a send, or download the completed document.

Built for small businesses — agencies, property managers, trades, clinics and tour operators — where the person winning the client is also the person chasing the signature.

Список инструментов сервера (35)

Технические названия из tools/list. Нужны только разработчикам.

list_documentsList documents created by the user or shared within the account.
get_documentGet detailed status and metadata for a specific document, including per-signee signing status. The document `status` is exactly one of: `created` (created and ready), `processing` (the AI assistant is still preparing it), `error` (processing failed), `awaiting_signatures` (one or more signees have not signed yet), `completed` (all signees have signed), `revoked` (cancelled), `deleted`. Each entry in `signeeDetails` carries `signeeId`, `signatureStatus` (either `awaiting_signature` or `signed` — note the field is `signatureStatus`, not `status`), `reminders.reminderCooldown` (seconds left before another reminder may be sent, 0 when allowed now) and `updates.updateCooldown` (seconds left before contact details may be changed again, 0 when allowed now).
create_documentCreate 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, (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.
revoke_documentRevoke a document that has been sent for signing (only possible if not yet fully signed). Always call get_document first to confirm status, then show the user a summary and ask for confirmation — revoking is irreversible.
delete_documentPermanently delete a document. Only documents with status 'completed' or 'revoked' can be deleted. This also deletes the associated file. Always call get_document first to confirm status, then ask the user for confirmation — deletion is irreversible.
get_signed_document_urlGet a download URL for a completed (signed by all parties) document. The URL is valid for 10 minutes.
send_reminderSend a signing reminder to one or more signees who have not yet signed. Always call get_document first. Two conditions decide who can be reminded: (1) the document `status` must be `awaiting_signatures` — any other status returns 403; (2) include only signees whose `signatureStatus` is `awaiting_signature`, never one whose `signatureStatus` is `signed`. Show who will be reminded and ask for confirmation before sending. Rate limit: max 2 reminders per signee per 60-minute rolling window, after which the API returns 429. `signeeDetails[].reminders.reminderCooldown` from get_document is the number of seconds left before the next reminder is allowed — check it before calling, and tell the user how long is left instead of retrying.
update_signeeUpdate contact details for one or more signees who have not yet signed (e.g. fix a wrong email). A new signing invitation is sent to each updated signee, and links already sent to the old contact details are revoked. Always call get_document first to read `signeeId` and `signatureStatus`. Constraints, all of which return 403 when broken: (1) the signee's `signatureStatus` must be `awaiting_signature` — a signee who has signed cannot be changed, and neither can a completed document; (2) an existing contact method can only be CHANGED, never added — updating the email of a signee who only has a phone number (or vice versa) is rejected; (3) a signee's contact details can be updated at most twice, after which a 60-minute cooldown applies. `signeeDetails[].updates.updateCooldown` from get_document is the number of seconds left — check it before calling and tell the user how long is left instead of retrying. Note that a successful update generates a NEW `signeeId` for that signee, so any previously read ID is stale afterwards; call get_document again before acting on the signee a second time.
get_recipient_linksGet unique, self-distributable signing links for a document — one per recipient — so the sender can hand out the links over any channel instead of relying on Formify's email/SMS/WhatsApp invitation. Use this for signees created with disableInvitationMessage: true (Formify did not invite them), or whenever the user wants to distribute a signing link themselves. SECURITY: every returned link is verification-locked. Opening one requires a one-time code that Formify sends to the recipient's contact method on file (the email/phone provided), never to a value the opener types in — so a leaked or forwarded link cannot be opened by anyone else. The lock is enforced automatically in the browser when the recipient opens the link; no extra calls are needed. Simply deliver the signingUrl. The response contains one entry per recipient signing share: signeeId, fullName, emailAddress/phoneNumber (contact on file), verificationChannel ('email' | 'sms' | 'whatsapp'), signingUrl, and requiresVerification (always true). A recipient given BOTH an email and a phone is returned as TWO entries (same signeeId, one per verificationChannel) — present both and let the user choose which to distribute. A recipient with no contact method on file cannot be verified, so they are omitted from the response entirely; add a contact method via update_signee first if a link is expected but missing. Calling this generates and persists the links on first use (idempotent on later calls). Only works on a sent document, not a draft.
get_document_fieldsRetrieve all form field definitions in a document. Each field has: name (use as key in API calls), label (display only), type (textField, checkbox, combobox, listbox, radioButton), required, readOnly (signee cannot edit), editable (API can update), options [{label, value}] for choice fields. Use this before calling set_document_field_values. For already filled values, use get_document_field_values instead. Value format rule: ONLY textField and radioButton take a plain string. ALL other types (checkbox, combobox, listbox) MUST be an array — even for a single value like ["Beginner"].
get_document_field_valuesRetrieve the current values of all form fields in a document. Works on documents in any status. For field definitions and types, use get_document_fields instead.
set_document_field_valuesUpdate form field values on an already-created document. Only use this when values need to be added or corrected after the document was created — if you have the values upfront, pass them via create_document's fields parameter instead. Only works on editable fields before anyone has signed.
list_draftsList draft documents with pagination. Drafts are saved document configurations that have not been sent for signing yet. Use get_draft to inspect a draft before updating, sending, or deleting it.
get_draftGet full draft details, including saved signee details, signature placements, form field values, invitation settings, and AI assistant configuration. Always call this before update_draft, send_draft, or delete_draft.
create_draftCreate a draft document without sending invitations. Requires fileId from upload_file; templates are not supported for drafts. Signee details, contact methods, signature type, and signature coordinates are optional while drafting. Full validation occurs only when send_draft is called. Call get_file_fields after upload_file if the PDF has form fields that should be pre-filled and saved in the draft. The draft name will become visible to signees when the draft is sent, so it 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. PREVIEW USE CASE: drafts are the recommended way to preview an uploaded document before sending. When the user wants to verify that signature fields, ID scan placeholders, or pre-filled values look correct, build the full configuration here, call get_draft_file_url to retrieve a one-time PDF preview, let the user verify (and adjust via update_draft if needed), then call send_draft to send.
update_draftUpdate an existing draft. The draft must still have status draft. This is a full draft configuration update: include the complete signeeDetails list you want to keep, because signees not included may be removed. fileId is optional; if omitted, the draft keeps its current file.
send_draftConvert a draft into a live document and send invitations. Always call get_draft first, verify every signee has fullName plus at least one contact method, verify required coordinates for existing placement and digital_ink_id_scan, show a summary, and ask for confirmation before calling this tool. If validation fails, the draft remains unsent.
get_draft_file_urlGet a short-lived, one-time-use download URL for a PDF preview of the draft with signature fields rendered at their configured coordinates. Returns JSON with downloadUrl + filename + mimeType + expiresInMinutes (also exposed as a resource_link). The user opens the URL in a browser; no Authorization header is required. Use this when the MCP client should hand the user a clickable link. If the client can render PDFs inline, prefer get_draft_file (returns the PDF as an embedded resource via the session Bearer token). Typical preview flow: create_draft → get_draft_file_url (or get_draft_file) → user reviews PDF → (optional update_draft and re-fetch) → send_draft. Fields without valid coordinates (page, x, y) are not rendered in the PDF but remain in the draft data. The URL expires after 10 minutes and is consumed on successful download. The draft must still have status draft and must not be expired.
get_draft_fileGet a PDF preview of the draft with signature fields rendered at their configured coordinates, returned as an embedded resource (base64 PDF) plus filename and size metadata. Use this when the MCP client can render PDFs inline in the conversation. If the client only supports clickable links, use get_draft_file_url instead. Fields without valid coordinates (page, x, y) are not rendered in the PDF but remain in the draft data. The draft must still have status draft and must not be expired. Authenticated via the session Bearer token.
delete_draftPermanently delete a draft and its associated draft data. Both active and expired drafts can be deleted. Always call get_draft first, show the user a summary, and ask for confirmation — deletion is irreversible.
request_file_upload_urlStage an upload for a PDF that is attached to the conversation, for clients that can execute shell commands. Returns a presigned upload URL plus a ready-made curlCommand that streams the file to it. Only use this tool if you are able to run that command; if you cannot, skip it and call upload_file directly with `url` (when the PDF is reachable over HTTPS) or with `file` as base64 plus `fileName`. After calling this tool, run the returned curlCommand to upload the file. CRITICAL: wait for it to complete and return HTTP 200 before calling upload_file — the staged entry holds no bytes until then, and upload_file will fail. The upload URL expires in 10 minutes. Once the upload has succeeded, call upload_file with the returned uploadId. If the command fails with a network, DNS, or 'host not in allowlist' error, the client's code-execution sandbox is blocking outbound requests to this server — do not retry the same command. Report what blocked it, then either fall back to upload_file with `file` (base64), or, in Claude, tell the user they can allow it under Settings → Capabilities → Code execution → Domain allowlist by selecting 'All domains', after which the upload can be retried.
upload_fileUpload a PDF file to Formify. Returns a fileId for use with create_document or create_draft. Three input paths, in order of preference: (1) `url` — a PDF reachable over HTTPS. Works in every client; use it whenever a URL is available. (2) `uploadId` — for a file attached to the conversation, when you can execute shell commands: call request_file_upload_url first, run its curlCommand, then pass the uploadId here. (3) `file` — base64 content, for an attached file when you cannot execute shell commands. IMPORTANT: Do NOT use base64 unless you can guarantee you are passing the complete, untruncated file content. AI assistants routinely truncate large strings, which silently corrupts the file and causes upload failures. If you cannot verify the base64 string is complete and unmodified, use uploadId or url instead. Max size: 50 MB. The PDF must not be password-protected or contain digital signatures from other services.
get_file_fieldsRetrieve all form fields in an uploaded PDF file before creating a document from it. Call this after upload_file to discover fields that can be pre-filled. Value format rule: ONLY textField and radioButton take a plain string. ALL other types (checkbox, combobox, listbox) MUST be an array — even for a single value like ["Beginner"].
merge_filesMerge 2–8 previously uploaded PDF files into a single file. Returns a new fileId for the merged result. The original files are kept. The first fileId in the array appears first (topmost pages) in the merged document — order matters.
delete_fileDelete a previously uploaded file. The file must not be attached to an active document — one whose status is `created` or `awaiting_signatures`.
list_templatesList all available signing templates. Present results as a short scannable list of template names only — hide IDs and metadata from the user.
get_templateGet details for a specific template. Returns the template's name, number of signees, and each signee's pre-configured signature settings (signatureType, signaturePlacement, signatureBox). Always call get_template_fields immediately after this — before collecting signer details or creating the document.
get_template_fieldsAlways call this immediately after get_template — before collecting signer details. Reveals whether the template has form fields the user can pre-fill. Each field has: name (key for API calls), label (display only), type (textField, checkbox, combobox, listbox, radioButton), editable (can be pre-filled via API), readOnly (signee cannot edit), options [{label, value}] for choice fields. If any fields have editable: true, ask the user whether to pre-fill them now (values locked for signer) or leave for the signer. Value format rule: ONLY textField and radioButton take a plain string. ALL other types (checkbox, combobox, listbox) MUST be an array — even for a single value like ["Beginner"]. Never pass an empty string for text fields — omit the field instead.
list_webhooksList all registered webhooks for this account.
register_webhookRegister a new webhook to receive real-time document event notifications via HTTP POST.
delete_webhookDelete a registered webhook. Event delivery stops immediately.
rotate_webhook_secretRotate the HMAC signing secret for a webhook. Returns the new secret. Update your webhook verification logic immediately after rotating.
get_account_usersList all users on the account, including pending invitations. Returns userId for each user, which can be passed to create_document's userId parameter to assign document ownership.
get_account_capabilitiesCheck which features are enabled for the account (e.g. BankID, templates, AI assistant).
get_current_userGet information about the currently authenticated user.