Skip to main content
Glama

Server Details

Send documents for legally valid e-signature in Brazil, track signers and download signed files.

Ownership verified
Status
Healthy
Uptime
100.0% over 22 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
assinafy/mcp-server
GitHub Stars
3
Server Listing
Assinafy MCP Server

TDQS

A4.1/5.0

Scored across 14 tools

Disambiguation4/5

Most tools have clearly distinct purposes (upload, send, download, delete, verify, follow up). There is mild overlap between assinafy_find_documents (which inspects status/assignment) and assinafy_show_document (which renders a status card), and check_fields vs place_fields both touch field placement, but descriptions largely disambiguate.

Naming Consistency5/5

Every tool follows the same assinafy_verb_noun snake_case convention (find_documents, request_signatures, save_signer, verify_document). Verb choice is consistent and the prefix is uniform throughout.

Tool Count5/5

14 tools is well-scoped for an e-signature lifecycle spanning documents, signers, templates, fields, assignments and verification. Each tool covers a distinct stage without redundant entries.

Completeness4/5

Strong coverage: create/prepare, send, review, follow-up, download, show, verify, delete for documents plus signer create/update/find and field/template discovery. Minor gaps include template authoring (explicitly delegated to the Assinafy app) and document content editing beyond rename.

Available Tools

27 tools
assinafy_create_assignmentCreate assignment (request signatures)AInspect

Request signatures on a document. Use method: virtual to sign without input fields, or method: collect to place input fields on specific pages.

For virtual, the document may be in uploaded, metadata_processing or metadata_ready; it is promoted to pending_signature automatically once metadata processing completes. For collect, the document must be in metadata_ready (fields reference specific pages).

step controls signing order: signers sharing a step sign in parallel, and the next step is notified only after the previous step completes. If supplied, every signer must supply it and values must be contiguous starting at 1. Obtain signer IDs from assinafy_list_signers or assinafy_create_signer and page IDs from assinafy_get_document. This sends signing invitations. Check with assinafy_get_document that no assignment exists first; this can consume credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
methodYesvirtual
entriesNoRequired for `collect`: field placements per page.
messageNoText included in the invitation email.
signersYes
expires_atNoISO 8601; default is no expiration. Must be at least one hour in the future.
document_idYesDocument ID.
estimate_onlyNoPreview cost and balances without creating an assignment or notifying anyone.
copy_receiversNoSigner IDs that only receive a copy.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnlyHint=false, idempotentHint=false, openWorldHint=true), and the description adds non-obvious behavior beyond them: 'this sends signing invitations', 'can consume credits', and the automatic promotion from uploaded/metadata_processing to pending_signature. It does not describe the response payload, but with no output schema that is a minor gap.

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 action and the two modes, then prerequisites, ordering, ID sourcing, and the credit/invitation warning. Dense but every clause carries operational information; slightly long, yet nothing reads as filler.

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 8 parameters, no output schema and a mutation tool, the description covers the essentials an agent needs: mode selection, document-state preconditions, signer ordering rules, ID sourcing, invitation/credit side effects. It omits what the call returns, but with no output schema declared that omission is acceptable.

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 75% and the schema itself is very detailed (step only says minimum 1, verification_method and notification_methods carry long docs). The description compensates for the weakest field by explaining `step` semantics: parallel within a step, next step notified after the previous completes, and 'every signer must supply it and values must be contiguous starting at 1'. It also adds state requirements for `method`.

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?

The opening sentence states a specific verb+resource ('Request signatures on a document') and immediately disambiguates the two modes ('virtual' vs 'collect') by what each one does. An agent can distinguish this from siblings like assinafy_place_fields or assinafy_send_pdf_for_signature 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.

Usage Guidelines5/5

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

Explicitly states when each method applies (virtual needs no input fields; collect places fields on specific pages), the required document state per method, and the precondition to 'Check with assinafy_get_document that no assignment exists first'. It also names where to obtain signer IDs (assinafy_list_signers / assinafy_create_signer) and page IDs (assinafy_get_document).

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

assinafy_create_document_from_templateSend a template for signatureAInspect

Generate a document from a saved template and invite one signer per role, by signer ID or full name and email. Find roles with assinafy_list_templates and validate editor_fields values with assinafy_validate_fields first. This sends invitations and can consume credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNocustom document name
tagsNotag names, merged with the template's defaults
messageNosigning invitation message
signersYesone signer per template role, each by ID or by name and email
account_idNoaccount ID; uses request routing if omitted
expires_atNoassignment expiry in RFC 3339 format
template_idYestemplate ID
editor_fieldsNotemplate editor field values
estimate_onlyNopreview cost and balances for the given roles without creating contacts, documents or invitations; roles alone are sufficient

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover the mutation profile (readOnly=false, idempotent=false, destructive=false, openWorld=true), but the description adds the non-obvious operational facts that this sends real invitations and can consume credits. It does not say what happens on partial failure — e.g. whether some invitations are sent if a later signer fails validation.

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

Conciseness5/5

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

Three sentences with the core action front-loaded, followed by prerequisites and then the cost caveat. No filler, and each sentence carries a distinct piece of information.

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?

For a 9-parameter mutation tool with no output schema, the description covers the action, prerequisites, and credit implications, which is most of what an agent needs. It stops short of describing the result (document ID vs. invitation status) or failure behavior when a role has no matching signer.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter including the nested signer fields is already documented in the schema. The description restates the ID-or-name/email alternative and the one-signer-per-role rule but adds no syntax, ordering, or constraint detail beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource combination — generate a document from a saved template and invite one signer per role — which separates it from assinafy_send_pdf_for_signature (arbitrary PDF) and assinafy_create_assignment. It never names those siblings outright, so an agent must infer the boundary from the 'saved template' phrasing.

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

Usage Guidelines4/5

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

Explicitly routes the agent to two prerequisite tools: assinafy_list_templates to discover roles and assinafy_validate_fields to check editor_fields values before calling. It gives clear context but offers no when-not guidance distinguishing it from assinafy_send_pdf_for_signature or assinafy_create_assignment.

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

assinafy_create_signerCreate signerAInspect

Create a signer in the workspace. Search with assinafy_list_signers first to avoid duplicates. Sends no invitation.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNo
full_nameYes
account_idNoAuthorized workspace; discovered from OAuth when omitted.
government_idNoSigner's CPF (11 digits) or CNPJ (14 characters; may be alphanumeric). Formatting is accepted and the value is normalized on save. Required before the signer can use a verification method that identifies them by CPF.
whatsapp_phone_numberNoE.164; normalized on save.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false), and the description adds two facts not derivable from them: no invitation/notification is dispatched, and duplicates are possible so a prior list is required. It does not say what happens when a duplicate is submitted (error vs. created) or what permissions are needed.

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

Conciseness5/5

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

Three short sentences, zero filler, with the action front-loaded and the prerequisite/side-effect notes immediately after. Every sentence carries distinct information.

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?

For a 5-parameter, 1-required tool with annotations present, the description covers purpose, a dedupe prerequisite, and the key side effect. No output schema exists and the description does not indicate what is returned (e.g., the created signer id needed by downstream tools), which is the main remaining gap.

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

Parameters3/5

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

Schema coverage is only 60%, and the description adds no parameter meaning at all — it never mentions full_name, email, or the optional account_id/government_id/whatsapp fields. The schema does document the non-obvious fields (normalization, CPF/CNPJ requirement, OAuth-derived account_id), so the baseline 3 applies rather than a penalty.

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 ('Create a signer') plus its scope ('in the workspace'), which cleanly separates it from the sibling read/update tools (assinafy_get_signer, assinafy_list_signers, assinafy_update_signer). An agent can identify the operation without opening the schema.

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

Usage Guidelines4/5

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

Gives an explicit prerequisite and alternative: 'Search with assinafy_list_signers first to avoid duplicates.' It also clarifies the tool's relationship to the notification flow ('Sends no invitation'), implying the agent must separately trigger sending. It stops short of naming update_signer as the path for existing signers, so it is clear but not complete on when-not-to-use.

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

assinafy_delete_documentDelete a document
Destructive
Inspect

Delete a document only when the user's instruction explicitly authorizes deletion. Inspect its current state first; Assinafy enforces which documents may be deleted.

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idYesunique document ID to delete
assinafy_download_documentDownload a document
Read-onlyIdempotent
Inspect

Download a document artifact as base64: original (default), certificated, certificate-page, pades or bundle. Download the signed PDF only when the document is certificated and the artifact is listed.

ParametersJSON Schema
NameRequiredDescriptionDefault
artifactNooriginal (default), certificated, certificate-page, pades, or bundle
document_idYesunique document ID
assinafy_download_document_pageDownload document pageA
Read-onlyIdempotent
Inspect

Download the rendered image of a specific document page. Use a page_id returned by assinafy_get_document. Returns base64.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYesThe page ID.
document_idYesDocument ID.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint, so the safety profile is covered; the description usefully adds the return encoding ('Returns base64'), which matters because no output schema exists. It still omits practical behavior such as image format, size limits, or error behavior for an invalid page_id.

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

Conciseness5/5

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

Three short sentences, front-loaded with the action, followed by the dependency and the return encoding. No filler, no repetition of the title.

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?

For a two-parameter read tool with full annotation coverage, the description supplies purpose, input provenance, and return type. Only marginal items are missing (image format/size constraints, pagination across pages), which are not strictly needed to invoke it correctly.

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% and both properties are documented, so the baseline is 3. The description adds genuine meaning the schema does not: the provenance of page_id (it must come from assinafy_get_document), which is the one thing an agent could get wrong.

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 ('Download') and a precisely scoped resource ('the rendered image of a specific document page'), which cleanly separates it from the sibling assinafy_download_document (whole document) and assinafy_show_document. An agent can route on 'page' vs 'document' without opening either schema.

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

Usage Guidelines4/5

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

Gives explicit prerequisite guidance: 'Use a page_id returned by assinafy_get_document,' naming the sibling that produces the required identifier. It does not, however, state when to prefer this tool over assinafy_download_document or how to obtain page IDs when the caller only has a document.

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

assinafy_get_documentGet a documentA
Read-onlyIdempotent
Inspect

Inspect one known document: status, assignment, signers with their progress, pages and available artifacts. Read it before retrying a send or following up. 100% signed does not mean certification is finished; the signed PDF is ready at status certificated.

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idYesunique document ID

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint/non-destructive, so the safety profile is covered. The description adds genuine domain behavior beyond that: '100% signed does not mean certification is finished; the signed PDF is ready at status certificated' warns the agent about a state distinction it would otherwise get wrong.

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

Conciseness5/5

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

Three sentences, front-loaded with what is returned, then usage timing, then the certification caveat. Every sentence carries distinct information with no filler.

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

Completeness5/5

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

With no output schema, the description itself enumerates the return surface (status, assignment, signers with progress, pages, artifacts) and warns about the certification state, which is exactly the context an agent needs to interpret the result.

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

Parameters3/5

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 document_id parameter, so the schema fully documents the input. The description adds no syntax, format, or ID-sourcing detail beyond 'known document'. Baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb (inspect) and resource (one known document) and enumerates what it surfaces: status, assignment, signer progress, pages, artifacts. The phrase 'one known document' implicitly contrasts with the list_documents sibling. However, it does not differentiate from the confusingly similar sibling assinafy_show_document, which an agent could easily confuse with this tool.

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

Usage Guidelines4/5

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

Gives a clear situational trigger: 'Read it before retrying a send or following up.' That tells the agent when this tool belongs in a workflow. No explicit when-not or named alternative (e.g., vs list_documents or show_document) is provided, so it stops short of full routing guidance.

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

assinafy_get_fieldGet fieldC
Read-onlyIdempotent
Inspect

Retrieve a single field definition.

ParametersJSON Schema
NameRequiredDescriptionDefault
field_idYesThe field ID.
account_idNoAuthorized workspace; discovered from OAuth when omitted.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds no behavioral context of its own beyond restating that something is retrieved.

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?

A single short sentence with zero padding and the key noun front-loaded. It is efficient, though its brevity reflects under-specification rather than deliberate compression.

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

Completeness3/5

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

For a simple read-only getter with complete parameter coverage and full annotations, this is minimally adequate. There is no output schema, so the description could have said what a 'field definition' contains (type, placement, validation rules), which would help an agent decide whether to call it.

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

Parameters3/5

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

Schema description coverage is 100%, so both field_id and account_id are already documented, including the OAuth fallback behavior for account_id. Baseline 3 applies: the description adds no syntax, format, or scoping detail beyond the schema.

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

Purpose4/5

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

States a specific verb ('Retrieve') and resource ('a single field definition'), and the singular framing distinguishes it from list_fields in a general sense. It does not, however, name or differentiate against close siblings like list_fields or validate_fields, so an agent gets no explicit routing signal.

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

Usage Guidelines2/5

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

The description gives no when-to-use guidance and never mentions the obvious alternative (list_fields) or when a single-field fetch is preferable. Nothing is misleading, but nothing is provided either.

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

assinafy_get_signerGet signerC
Read-onlyIdempotent
Inspect

Retrieve a signer's information.

ParametersJSON Schema
NameRequiredDescriptionDefault
signer_idYesThe signer ID.
account_idNoAuthorized workspace; discovered from OAuth when omitted.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnly=true, idempotent=true, destructive=false, and openWorld=false, so the safety profile is fully covered. The description adds nothing beyond that — no note on what is returned, auth/permission needs, or error behavior for a missing ID.

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?

A single short sentence that is front-loaded and wastes no words. It is efficient, though its brevity edges toward under-specification rather than pure conciseness.

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

Completeness3/5

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

For a simple single-resource getter with a 100%-documented two-parameter schema and full annotation coverage, the definition is minimally adequate. With no output schema, though, the description could say what fields a signer record contains or how failures surface.

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

Parameters3/5

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

Schema description coverage is 100%, so signer_id and account_id are fully documented in the schema, including the OAuth fallback for account_id. The description contributes no additional parameter meaning, so the baseline 3 applies.

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

Purpose4/5

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

Clear verb + resource: 'Retrieve a signer's information' identifies a fetch of a single signer. It does not distinguish itself from the sibling list_signers or clarify what 'information' includes, so an agent must infer the single-vs-collection distinction.

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

Usage Guidelines2/5

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

No when-to-use guidance and no mention of alternatives such as assinafy_list_signers or assinafy_update_signer. The agent gets no help deciding between this and the other signer tools.

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

assinafy_get_templateGet a templateB
Read-onlyIdempotent
Inspect

Get one saved template with its roles and field placements.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNoaccount ID; uses default if omitted
template_idYesunique template ID

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description's one added fact — that the response includes roles and field placements — is genuinely useful content context, but it says nothing about failure behavior for unknown IDs or scope of account_id.

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

Conciseness5/5

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

A single tight sentence with zero filler that front-loads the verb and resource. Nothing can be trimmed without losing information.

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?

For a simple, read-only, two-parameter lookup whose safety semantics are already in annotations, the description plus schema is nearly sufficient. The only shortfall is that no output schema exists and the return shape is summarized in half a clause, leaving the exact structure of roles/field placements unstated.

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

Parameters3/5

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

Schema description coverage is 100%, with both template_id and account_id documented inline including the default-if-omitted behavior for account_id. The description adds no parameter-level meaning, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ("Get one saved template") and adds what the payload contains ("roles and field placements"), which sharpens it beyond the bare title. It implicitly contrasts with assinafy_list_templates via "one," but never names or explicitly distinguishes itself from that sibling.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no statement of prerequisites, and no mention of the obvious alternative (assinafy_list_templates for enumeration vs this tool for fetching one by ID). The agent must infer that a template_id is required and that enumeration lives elsewhere.

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

assinafy_list_document_activitiesList document activitiesA
Read-onlyIdempotent
Inspect

List the activities recorded for a document. Each entry carries an event-specific payload snapshot (keys vary per event) and the request origin (ip, user-agent). Use it to explain what happened to a document and when.

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idYesDocument ID.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds genuinely new context beyond that: each entry includes an event-specific payload snapshot with variable keys and request origin metadata (ip, user-agent), which tells the agent what to expect from the response shape.

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

Conciseness5/5

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

Three tight sentences with no filler; the core action is front-loaded and each following sentence earns its place by describing the payload and origin details.

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?

With no output schema, the description carries the burden of return-value context, and it partially does so by characterizing the payload snapshot and origin fields. It stops short of covering ordering, pagination, or volume of entries, which are minor gaps for a read-only list tool.

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

Parameters3/5

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

Schema coverage is 100% for the single document_id parameter, so the schema fully documents the input. The description adds nothing about document_id semantics, format, or scoping, 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.

Purpose4/5

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

States a specific verb and resource: 'List the activities recorded for a document.' The 'activities' resource is distinct from sibling tools like get_document, show_document, and list_documents, so an agent can differentiate it, though no sibling is named explicitly.

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

Usage Guidelines3/5

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

'Use it to explain what happened to a document and when' gives an implied usage context, which is better than nothing. However, it offers no when-not guidance, no prerequisites, and does not point to alternatives such as verify_document or get_document for related audit information.

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

assinafy_list_documentsList documentsA
Read-onlyIdempotent
Inspect

Search workspace documents by name or status, with pagination. Use it to find a document the user names before inspecting or following up on it.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNopage number (1-based)
sortNoname or updated_at; prefix with - for descending
tagsNocomma-separated tag IDs; documents must have all listed tags
methodNosignature method filter: virtual or collect
searchNopartial match on document name or signer
statusNodocument status filter
per_pageNonumber of results per page (max 100)
account_idNoaccount ID; uses request routing if omitted

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so safety behavior is covered. The description adds pagination and filter-based retrieval, which is useful behavioral context, but it does not describe return format, default page size, status value semantics, or authentication/routing behavior beyond what annotations and schema provide.

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

Conciseness5/5

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

Two sentences, front-loaded with the core action and followed by a single usage sentence. Nothing is repeated or wasted, and the most important scoping information appears first.

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 rich annotations and 100% schema description coverage, the description covers purpose, primary use case, and pagination. It omits return value shape and status enum semantics, but with no output schema and a comprehensive input schema, the definition is largely complete for invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so all eight parameters are already documented in the input schema. The description mentions filtering by name and status and pagination, but adds no syntax, default values, or semantic detail beyond what the schema already provides. Baseline 3 applies when the schema carries parameter documentation.

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

Purpose4/5

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

The description states a specific verb (search/list) and resource (workspace documents) and names the filters (name, status) and pagination. It does not explicitly distinguish this from get_document or show_document, though the phrase 'before inspecting' hints at the relationship. Clear but missing explicit sibling routing.

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

Usage Guidelines4/5

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

It gives clear usage context: use it to find a document the user names before inspecting or following up. This tells the agent when to use it, but it does not state when not to use it (e.g., when a document ID is already known, use get_document) or name alternatives explicitly.

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

assinafy_list_fieldsList fieldsA
Read-onlyIdempotent
Inspect

List the field definitions of a workspace.

When include_standard is enabled, records of type signature, initial and signatureDate are also returned. Match definitions to template placement field_id and ask about ambiguous names.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNoAuthorized workspace; discovered from OAuth when omitted.
include_inactiveNoInclude inactive field definitions.
include_standardNoInclude standard field types (signature, initial, signatureDate).

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that enabling include_standard returns signature, initial, and signatureDate records, but this largely repeats the schema's parameter description and omits return format or pagination details.

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?

The definition is short and front-loaded with the core action. The second sentence adds conditional return behavior and a usage hint without significant waste, though it could be slightly tighter.

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?

For a low-complexity list tool with no output schema, the description covers the core purpose, the include_standard effect, and a matching workflow. It lacks explicit routing against siblings like get_field or validate_fields, but annotations and the schema carry most remaining context.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three optional parameters. The description echoes the include_standard behavior without adding syntax or format detail beyond what the schema provides.

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

Purpose4/5

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

The description states a specific verb and resource: 'List the field definitions of a workspace.' This clearly distinguishes it from singular retrieval tools like get_field, but it does not explicitly name or contrast with any sibling tool.

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

Usage Guidelines3/5

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

The description hints at a workflow ('Match definitions to template placement field_id and ask about ambiguous names'), but gives no explicit when-to-use, when-not-to-use, or alternative tool guidance. Usage is implied rather than prescribed.

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

assinafy_list_signersList signersA
Read-onlyIdempotent
Inspect

List the signers of a workspace. Use it to resolve a recipient to a signer ID; ask the user about ambiguous matches before sending.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number.
searchNoFilter by full_name or email.
per_pageNoRecords per page (max 100).
account_idNoAuthorized workspace; discovered from OAuth when omitted.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false and destructiveHint=false, so the safety profile is fully covered. The description adds only the ambiguity-handling caution and says nothing about pagination, filtering behavior, or workspace scoping beyond what the schema shows. Adequate but thin given the low bar set by annotations.

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

Conciseness5/5

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

Two short sentences with zero waste; the scope statement is front-loaded and the actionable guidance follows immediately. Nothing redundant with the title or annotations.

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?

For a read-only list tool with full schema coverage and annotations covering the safety profile, the description supplies the key missing piece: why you'd call it (recipient-to-signer-ID resolution). Return values and pagination are not described, but there is no output schema to lean on, which is a minor gap.

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

Parameters3/5

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

Schema description coverage is 100% with all four parameters (page, search, per_page, account_id) documented inline, so the schema carries the load. The description mentions 'workspace' loosely but adds no syntax, defaults, or filtering detail beyond the schema. Baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('List the signers of a workspace'), which distinguishes it from assinafy_get_signer (single signer) and the other list_* tools. It does not explicitly name a sibling to contrast against, but the scope is clear enough to select it correctly.

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

Usage Guidelines4/5

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

Gives concrete when-to-use context ('resolve a recipient to a signer ID') and an operational caution ('ask the user about ambiguous matches before sending'). It stops short of naming get_signer as the alternative for a known ID, so it is clear context without explicit exclusions.

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

assinafy_list_templatesList templatesA
Read-onlyIdempotent
Inspect

List saved templates with their signer roles, pages and field placements (field_id). Template authoring is done in Assinafy.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNopage number (1-based)
searchNofilter templates by name
per_pageNoresults per page
account_idNoaccount ID; uses default if omitted

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds that the response surfaces signer roles, pages, and field placements, which is useful output context, but it says nothing about pagination or result limits.

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

Conciseness5/5

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

Two short sentences, front-loaded with what the tool returns, and the second sentence sets a useful expectation about authoring. No filler.

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?

With no output schema, the description partially fills the gap by enumerating returned fields. The main omission is any mention of pagination despite page and per_page parameters, which an agent would need when results are large.

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

Parameters3/5

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

Schema description coverage is 100%, so page, search, per_page, and account_id are all documented in the schema. The description adds no parameter-level detail, which is the expected baseline when the schema does the work.

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

Purpose4/5

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

States a specific verb and resource (list saved templates) and goes further by naming what the results contain: signer roles, pages, and field placements with field_id. This distinguishes it from get_template and the create_* siblings without naming them explicitly.

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

Usage Guidelines3/5

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

'Template authoring is done in Assinafy' implicitly tells the agent this tool is read-only and cannot create templates, but there is no explicit when-to-use guidance versus get_template or create_document_from_template, and no mention of pagination behavior.

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

assinafy_list_whatsapp_notificationsList WhatsApp notificationsA
Read-onlyIdempotent
Inspect

List all WhatsApp notification messages sent for an assignment. The response includes the rendered template text split into header, body and buttons — exactly what the signer would see. In sandbox/stage, WhatsApp messages are simulated (no real delivery) and button URLs include access/verification codes you can use to simulate the signing flow. Treat returned signing links and verification codes as sensitive; never use them to sign for another person. Use it to troubleshoot WhatsApp delivery for one assignment.

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idYesDocument ID.
assignment_idYesThe assignment ID.

TDQS

A4.3/5.0
Behavior5/5

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

Goes well beyond the annotations: it describes the return shape (header/body/buttons as the signer sees it), discloses that sandbox/stage runs are simulated with no real delivery, and warns that returned signing links and verification codes are sensitive and must not be used to sign for someone else. That is meaningful behavioral context the readOnly/idempotent hints do not convey.

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?

Four tight sentences with the core action front-loaded, and each subsequent sentence adds a distinct fact (response shape, sandbox behavior, sensitivity). Dense but no filler; it could be marginally tightened but nothing is wasted.

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?

With no output schema, the description correctly compensates by explaining the rendered return structure and the sandbox caveat. It does not cover ordering or whether results are paginated/limited, a minor gap for a list tool, so it is strong but not fully complete.

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

Parameters3/5

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

Schema description coverage is 100% for the two required IDs, so the schema already carries parameter meaning. The description only restates scope ('for an assignment') without adding format or constraint detail, so the baseline of 3 applies.

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 (List) and a narrowly scoped resource (WhatsApp notification messages sent for an assignment), which no sibling tool covers. An agent can tell this apart from resend_notification or list_document_activities without opening the schema.

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

Usage Guidelines4/5

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

Names an explicit use case -- troubleshooting WhatsApp delivery for a single assignment -- which tells the agent when this tool is the right call. It stops short of stating when-not to use it or pointing at resend_notification as the alternative for re-sending, so it does not reach a 5.

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

assinafy_place_fieldsPlace signature fields
Read-onlyIdempotent
Inspect

Open a visual editor to place signature, initials, date and input fields on a metadata_ready document, then send it with method collect. Takes the assinafy_create_assignment arguments except method and entries. Sends nothing by itself: in apps-capable hosts the user places fields and presses Send; other clients get page sizes and field IDs as text to build entries.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageNoText included in the invitation email.
signersYes
expires_atNoISO 8601; default is no expiration. Must be at least one hour in the future.
document_idYesDocument ID.
copy_receiversNoSigner IDs that only receive a copy.
assinafy_rename_documentRename documentA
Destructive
Inspect

Update a document's name. Only allowed before any assignment is created (i.e. while the document is in uploaded or metadata_ready status and has no signers yet); once the signature process has started or the document is certificated, the name is locked. The name is normalized: diacritics are removed and unsupported characters are replaced with dashes.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
document_idYesDocument ID.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, so the mutation profile is covered. The description adds real context the annotations cannot: the state-based lock after assignment/certification and the fact that the stored name is normalized (diacritics stripped, unsupported characters replaced with dashes). It stops short of saying what error or state the caller observes when the lock applies.

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

Conciseness5/5

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

Two sentences, both dense with information, and the primary action is front-loaded ahead of the constraint and the normalization caveat. No filler or restatement of the title.

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?

For a two-parameter mutation tool with no output schema, the description covers the action, the eligibility window, the lock condition, and the name transformation — enough to call it correctly. It omits failure behavior when the document is already locked and any permission requirements, which are the only remaining gaps.

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

Parameters3/5

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

Schema coverage is 50%: `document_id` is documented in the schema, while `name` has no schema description and the constraints (minLength 1, maxLength 255) live only in the schema. The description adds meaningful semantics for the name value — the normalization rules that transform whatever is submitted — which partially compensates, but it says nothing about the identifier format or uniqueness. Baseline 3 given the mixed coverage.

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 ('Update a document's name') with no ambiguity, and no sibling tool performs the same operation, so the agent can route to it unambiguously. The scope is narrowed immediately rather than leaving the reader to infer it.

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?

Gives an explicit eligibility window ('only allowed before any assignment is created ... while the document is in `uploaded` or `metadata_ready` status and has no signers yet') and an explicit when-not condition ('once the signature process has started or the document is certificated, the name is locked'). The agent knows exactly when to call and when to avoid it, with no alternative tool competing for the same job.

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

assinafy_resend_notificationRemind a signerAInspect

Send one reminder to a pending signer in the assignment's active step, after confirming with assinafy_get_document that they have not signed. May consume notification credits; never repeat a reminder only because progress is unchanged.

ParametersJSON Schema
NameRequiredDescriptionDefault
signer_idYesunique signer ID to notify
document_idYesunique document ID
assignment_idYesunique assignment ID
estimate_onlyNopreview the reminder cost and balances without notifying the signer

TDQS

A4.4/5.0
Behavior4/5

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

Annotations declare readOnly=false, idempotent=false, destructive=false, so safety profile is partly covered, but the description adds real value beyond them: reminder credits may be consumed, delivery is single-shot, and refreshing without progress should not re-trigger. It stops short of describing delivery failures or credit units, but the cost and non-idempotency reinforcement are meaningful context.

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

Conciseness5/5

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

Two tight sentences with zero filler; the action and its scope are front-loaded before the precondition and the cost warning. Every clause carries operational weight.

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?

For a non-idempotent, credit-consuming notification with no output schema, the description supplies the precondition, cost awareness, and anti-repeat rule an agent needs. It does not mention what a successful send returns or how to detect delivery failure, a modest gap.

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

Parameters3/5

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

Schema description coverage is 100%, so each of the four parameters is already documented by the schema; the description adds only the 'pending signer in active step' scoping for signer_id. It says nothing about estimate_only, but the schema covers it, so the baseline of 3 applies.

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+resource+scope: 'Send one reminder to a pending signer in the assignment's active step.' The 'one reminder' and 'active step' qualifiers make it distinguishable from sibling send/notify tools like assinafy_send_pdf_for_signature. An agent can identify the action without opening the schema.

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?

Gives an explicit precondition ('after confirming with assinafy_get_document that they have not signed'), naming the exact sibling to call first. It also provides a when-not rule: 'never repeat a reminder only because progress is unchanged,' which prevents a common misuse loop.

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

assinafy_review_signature_requestReview a signature request
Read-onlyIdempotent
Inspect

Preview an assinafy_create_assignment call without sending anything: same arguments, checked against the document and signers. Use it when the user wants to review before sending. Apps-capable hosts render a card whose Send button performs the request; other clients get the summary as text, and the request is sent only after the user confirms.

ParametersJSON Schema
NameRequiredDescriptionDefault
methodYesvirtual
entriesNoRequired for `collect`: field placements per page.
messageNoText included in the invitation email.
signersYes
expires_atNoISO 8601; default is no expiration. Must be at least one hour in the future.
document_idYesDocument ID.
copy_receiversNoSigner IDs that only receive a copy.
assinafy_send_pdf_for_signatureSend a PDF for signatureAInspect

Upload a new PDF, wait for processing and invite signers by full name and email, using Email verification and notification. This sends invitations and uses plan allowance: use only recipients the user authorized. After a partial failure, inspect the retained document ID and continue with assinafy_create_assignment instead of uploading again.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageNoinvitation message shown to signers
signersYesone or more signers to create or reuse and request signatures from
file_nameYesPDF filename including the .pdf extension
poll_secsNopolling interval in seconds (default 2; cannot exceed max_wait_secs)
account_idNoaccount ID; uses the request or server default if omitted
expires_atNoassignment expiry timestamp in RFC 3339 format
file_base64Yesbase64-encoded PDF bytes (max 25 MB decoded)
estimate_onlyNoupload and prepare the PDF, then return cost and document ID without creating contacts or sending invitations; reuse that ID to send
max_wait_secsNomaximum seconds to wait for PDF processing (default 30; max 600)

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already mark this as a non-read-only, non-idempotent, open-world write, so the bar is lower; the description still adds meaningful behavior: it consumes plan allowance, sends real invitations/notifications via Email verification, blocks on processing, and retains a document ID on partial failure. It stops short of describing what a successful response contains or any auth/permission requirements.

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?

Three sentences, front-loaded with the primary action, then cost constraint, then failure-recovery guidance. Dense but every clause carries actionable information; no filler.

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?

For a 9-parameter mutation with no output schema, the description covers the happy path, the cost/allowance implication, and the partial-failure recovery path. It could say more about what is returned or how signers are matched/reused (left to the schema), but nothing critical is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter including estimate_only, poll_secs, and max_wait_secs is already documented in the schema; the description only echoes signer name/email and the Email verification mode. Baseline 3 is appropriate.

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?

The description names a specific multi-step verb chain (upload, wait, invite) on a specific resource (PDF) and identifies the signer identity fields, clearly distinguishing it from the bare assinafy_upload_document sibling.

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

Usage Guidelines4/5

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

It gives a real usage constraint ('use only recipients the user authorized') and explicitly routes the agent to assinafy_create_assignment after a partial failure rather than re-uploading. It does not, however, state when to prefer assinafy_upload_document or the template-based creation path.

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

assinafy_set_assignment_expirationChange the deadlineAInspect

Change when an existing signature request expires, using an RFC 3339 timestamp. Assinafy may refuse for requests that already expired.

ParametersJSON Schema
NameRequiredDescriptionDefault
expires_atYesnew expiry timestamp in RFC 3339 format
document_idYesunique document ID
assignment_idYesunique assignment ID

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare this is a non-read-only, non-idempotent, closed-world mutation. The description adds value beyond that by disclosing a failure mode (provider may refuse already-expired requests) and the accepted timestamp format, which is genuine behavioral context an agent needs before calling.

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

Conciseness5/5

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

Two tight sentences, front-loaded with the action and followed by the constraint. No filler, no restatement of the title.

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

Completeness3/5

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

For a three-parameter mutation with no output schema, the description covers the action, the format, and one refusal condition. It omits prerequisites (must the request be pending?), whether the change notifies signers, and whether the new expiry must be in the future, leaving a few gaps an agent might need.

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

Parameters3/5

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

Schema description coverage is 100% and all three parameters are required and documented in the schema. The description only restates the RFC 3339 requirement for expires_at, adding nothing the schema does not already say, so the baseline of 3 applies.

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

Purpose4/5

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

The description gives a specific verb+resource ('Change when an existing signature request expires') and names the required timestamp format. It is unambiguous as to what is being modified, though it does not differentiate from any sibling (none of which touch expiration) and uses 'signature request' where the name/params say 'assignment'.

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

Usage Guidelines3/5

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

Usage is implied: only apply this to an existing, not-yet-expired request. The caveat that 'Assinafy may refuse for requests that already expired' is a useful conditional, but there is no explicit when-to-use vs. when-not-to-use routing or mention of alternatives such as re-issuing the assignment.

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

assinafy_show_documentShow document status
Read-onlyIdempotent
Inspect

Show a status card for one known document: its status, who has signed, who is still pending and when it expires. Apps-capable hosts render it with a reminder button; other clients get the same summary as text. Resolve the document with assinafy_list_documents first.

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idYesunique document ID
assinafy_update_signerUpdate signerA
Destructive
Inspect

Update a signer's information.

Verification integrity: email / whatsapp_phone_number cannot be changed while the signer has verified that channel on an in-flight (not yet certificated) document — the response is 400 naming the offending document(s). Already-certificated documents do not block updates. Changing a channel that has unverified in-flight requests rotates their access/verification codes (invalidating previously sent links/OTPs); use the resend endpoint to redeliver. full_name can always be updated.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNo
full_nameNo
signer_idYesThe signer ID.
account_idNoAuthorized workspace; discovered from OAuth when omitted.
government_idNoSigner's CPF (11 digits) or CNPJ (14 characters; may be alphanumeric). Formatting is accepted and the value is normalized on save. Required before the signer can use a verification method that identifies them by CPF.
whatsapp_phone_numberNoE.164; normalized on save.

TDQS

A4.3/5.0
Behavior5/5

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

Annotations only declare destructiveHint=true and idempotentHint=false; the description supplies the real behavioral payload: which fields are immutable in which document states, the exact failure code and its content, and the side effect of rotating access/verification codes for unverified in-flight requests. That is exactly the kind of consequence disclosure an agent cannot get from the schema or annotations.

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

Conciseness5/5

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

One-line purpose statement followed by a bold-labeled block that front-loads the constraint. Every sentence carries non-redundant information (blocking rule, certificated exception, rotation side effect, resend remedy) with no filler.

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?

For a destructive mutation with no output schema, the description covers the failure mode, the side effects, and the per-field mutability model, which is most of what an agent needs. It omits any notion of partial-update semantics implied by the anyOf requirement and the role of account_id when omitted, minor gaps against otherwise strong coverage.

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 67%, and the description compensates by explaining per-field mutability rules: email/whatsapp_phone_number are blocked under specific conditions, full_name is always updatable, and channel changes ripple into code rotation. It adds no guidance on account_id or signer_id, but the schema covers those, so the gap is small.

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

Purpose4/5

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

States a specific verb+resource ('Update a signer's information'), which cleanly separates it from get_signer, create_signer, and list_signers. It does not, however, explicitly name or contrast itself with any sibling, which is the only thing keeping it from a 5.

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

Usage Guidelines4/5

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

Goes well beyond typical guidance by stating when an update will fail (verified channel on an in-flight document → 400) and when it succeeds (already-certificated documents do not block it), plus what to do instead when codes rotate ('use the resend endpoint to redeliver'). It routes the agent toward the resend capability without naming the exact sibling tool id, so a 4 rather than a 5.

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

assinafy_upload_documentUpload a documentAInspect

Upload a PDF without sending invitations and return its document ID. Use it when the user wants to prepare a document now and send it later with assinafy_create_assignment. Never upload again when a document ID is already known.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_nameYesPDF filename including .pdf
account_idNoauthorized workspace; discovered through OAuth when omitted
file_base64Yesbase64 PDF bytes, at most 25 MiB decoded

TDQS

A4.4/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnly false, destructive false, non-idempotent), so the description adds context beyond them: no invitations are dispatched, the document ID is returned, and re-uploading a known document is discouraged. It doesn't mention size/auth prerequisites, but the schema covers the 25 MiB limit.

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

Conciseness5/5

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

Three tight sentences, front-loaded with the core action and return value, followed by the usage rule and the anti-pattern warning. No filler.

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?

For a 3-param upload tool with no output schema, the description supplies the return value (document ID) and the intended workflow, which is what an agent needs to chain into create_assignment. Minor gaps around failure behavior are tolerable given the annotations and schema.

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

Parameters3/5

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

Schema coverage is 100%, so file_name, account_id, and file_base64 are already fully documented in the schema. The description adds no syntax or format detail beyond it, making the baseline 3 appropriate.

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 (upload a PDF) plus a key scope qualifier (without sending invitations) and the return value (document ID). This clearly separates it from send_pdf_for_signature and create_assignment.

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 names the when ('prepare a document now and send it later with assinafy_create_assignment') and an anti-pattern ('never upload again when a document ID is already known'). Both the alternative tool and the exclusion condition are stated.

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

assinafy_validate_fieldsValidate multiple field valuesA
Read-onlyIdempotent
Inspect

Validate one or more input values against existing field definitions without creating a document or requesting signatures. Supply field/value pairs in values; the server sends the documented JSON array. Check each result's success before requesting signatures.

ParametersJSON Schema
NameRequiredDescriptionDefault
valuesYesField/value pairs to validate; sent to Assinafy as the JSON request array.
account_idNoAuthorized workspace; discovered from OAuth when omitted.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world). The description adds real value beyond them: it discloses that no document is created, no signature request is sent, and that each returned result carries a per-item success indicator — implying partial validation outcomes rather than a single pass/fail.

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?

Three sentences, purpose front-loaded, then input mechanics, then a follow-up instruction. The 'the server sends the documented JSON array' clause is slightly redundant/murky but not wasteful enough to hurt scanning.

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?

With no output schema, the description partially compensates by telling the agent results carry success flags. It leaves minor gaps — behavior on unknown field_id, or what a failed validation means — but for a simple two-parameter read-only validator this is nearly complete.

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

Parameters3/5

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

Schema description coverage is 100%, so both values and account_id are already documented, and the nested field_id/value pair descriptions are complete. The description's 'supply field/value pairs in values' largely restates the schema, adding only the note that it is sent as the JSON request array. Baseline 3 is appropriate.

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 — validating one or more input values against existing field definitions — and immediately narrows scope with 'without creating a document or requesting signatures'. This clearly separates it from the sibling create/send tools like assinafy_create_document_from_template and assinafy_send_pdf_for_signature.

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

Usage Guidelines4/5

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

Establishes when to use it: as a pre-flight check before requesting signatures ('Check each result's success before requesting signatures'), and implicitly rules out use for document creation. It doesn't name a specific alternative sibling for the same job, so it stops short of the explicit when/when-not/alternative triad.

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

assinafy_verify_documentVerify a signed document
Read-onlyIdempotent
Inspect

Verify a signed document using its actual Assinafy SHA-1 signature hash. Public lookup; requires no workspace connection and sends no credential upstream.

ParametersJSON Schema
NameRequiredDescriptionDefault
hashYesSHA-1 signature hash of the signed document

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 9 tool updates
    • Changedassinafy_create_assignment11 fields changed
      • changedInput schema / allOf
        Previous value: -[
        -  {
        -    "if": {
        -      "properties": {
        -        "method": {
        -          "const": "collect"
        -        }
        -      },
        -      "required": [
        -        "method"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "entries": {
        -          "minItems": 1
        -        }
        -      },
        -      "required": [
        -        "entries"
        -      ]
        -    }
        -  }
        -]New value: +[
        +  {
        +    "if": {
        +      "properties": {
        +        "method": {
        +          "const": "collect"
        +        }
        +      },
        +      "required": [
        +        "method"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "entries": {
        +          "minItems": 1
        +        }
        +      },
        +      "required": [
        +        "entries"
        +      ]
        +    }
        +  },
        +  {
        +    "else": {
        +      "properties": {
        +        "signers": {
        +          "items": {
        +            "required": [
        +              "id"
        +            ]
        +          }
        +        }
        +      }
        +    },
        +    "if": {
        +      "properties": {
        +        "estimate_only": {
        +          "const": true
        +        }
        +      },
        +      "required": [
        +        "estimate_only"
        +      ]
        +    }
        +  }
        +]
      • addedInput schema / properties / estimate_only
        Added value: +{
        +  "description": "Preview cost and balances without creating an assignment or notifying anyone.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / expires_at / description
        Previous value: -"ISO 8601; default is no expiration."New value: +"ISO 8601; default is no expiration. Must be at least one hour in the future."
      • changedInput schema / properties / signers / items / properties / notification_methods / description
        Previous value: -"Channels used to notify the signer of the request. Any combination of `Email` and `Whatsapp` (WhatsApp incurs an additional cost and is available only on paid subscriptions). Omit to default to `{\"Email\"}`."New value: +"How the signer is told a signature is being requested. **Exactly one method per signer** — the array shape is historical, and sending two returns `400`. The method must also be compatible with `verification_method`: `Email` verification takes `Email`, `Whatsapp` verification takes `Whatsapp`, and `DigitalCertificate` and `IdDocumentFaceMatchBasic` take either. WhatsApp incurs an additional cost and is available only on paid subscriptions. Omit it to have it inferred from `verification_method`, or `{\"Email\"}` when neither is sent. See **Verification & Notification Methods** for the full pairing table."
      • addedInput schema / properties / signers / items / properties / notification_methods / example
        Added value: +[
        +  "Email"
        +]
      • addedInput schema / properties / signers / items / properties / notification_methods / maxItems
        Added value: +1
      • addedInput schema / properties / signers / items / properties / step / minimum
        Added value: +1
      • changedInput schema / properties / signers / items / properties / verification_method / description
        Previous value: -"How the signer's identity is verified before signing. `Email` (default) sends a one-time code to the signer's email; `Whatsapp` sends the code over WhatsApp — the verification itself is not billed, but it requires the WhatsApp notification channel, so the signer costs 0.45 credits (available only on paid subscriptions); `DigitalCertificate` has the signer sign with their own ICP-Brasil certificate (A1/A3) — it requires the Digital Certificate feature, the signer's CPF or CNPJ must already be registered on their Assinafy contact (added in Assinafy, never through this tool), must be alone in its signing step, and is charged 2 credits per signer. A CPF requires that person's certificate (an e-CPF, or an e-CNPJ naming them as legal representative); a CNPJ requires an e-CNPJ for that company, from any of its representatives. Omit to default to `Email`."New value: +"How the signer's identity is verified before signing. `Email` (default) sends a one-time code to the signer's email; `Whatsapp` sends the code over WhatsApp — the verification itself is not billed, but it requires the WhatsApp notification channel, so the signer costs 0.45 credits (available only on paid subscriptions); `DigitalCertificate` has the signer sign with their own ICP-Brasil certificate (A1/A3) — it requires the Digital Certificate feature, the signer must have a CPF or CNPJ in `government_id`, must be alone in its signing step, and is charged 0.5 credits per signer. A CPF requires that person's certificate (an e-CPF, or an e-CNPJ naming them as legal representative); a CNPJ requires an e-CNPJ for that company, from any of its representatives. `IdDocumentFaceMatchBasic` verifies the signer from a photo of their government ID, a photo of them holding it and a liveness check — it requires the ID Document + Face Match feature, the signer must have a valid CPF in `government_id`, and is charged a per-signer fee. Omit to default to `Email`."
      • changedInput schema / properties / signers / items / properties / verification_method / enum
        Previous value: -[
        -  "Email",
        -  "Whatsapp",
        -  "DigitalCertificate"
        -]New value: +[
        +  "Email",
        +  "Whatsapp",
        +  "DigitalCertificate",
        +  "IdDocumentFaceMatchBasic"
        +]
      • addedInput schema / properties / signers / items / properties / verification_method / example
        Added value: +"Email"
      • removedInput schema / properties / signers / items / required
        Removed value: -[
        -  "id"
        -]
    • Changedassinafy_create_document_from_template2 fields changed
      • addedInput schema / properties / estimate_only
        Added value: +{
        +  "description": "preview cost and balances for the given roles without creating contacts, documents or invitations; roles alone are sufficient",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / signers / items / properties / verification_method / description
        Previous value: -"Email (default), Whatsapp, or DigitalCertificate"New value: +"Email (default), Whatsapp, DigitalCertificate (A1/A3), or IdDocumentFaceMatchBasic (ID photo and liveness)"
    • Changedassinafy_create_signer1 field changed
      • addedInput schema / properties / government_id
        Added value: +{
        +  "description": "Signer's CPF (11 digits) or CNPJ (14 characters; may be alphanumeric). Formatting is accepted and the value is normalized on save. Required before the signer can use a verification method that identifies them by CPF.",
        +  "type": "string"
        +}
    • Changedassinafy_list_documents2 fields changed
      • addedInput schema / properties / method
        Added value: +{
        +  "description": "signature method filter: virtual or collect",
        +  "type": "string"
        +}
      • addedInput schema / properties / tags
        Added value: +{
        +  "description": "comma-separated tag IDs; documents must have all listed tags",
        +  "type": "string"
        +}
    • Changedassinafy_place_fields10 fields changed
      • changedInput schema / allOf
        Previous value: -[
        -  {
        -    "if": {
        -      "properties": {
        -        "method": {
        -          "const": "collect"
        -        }
        -      },
        -      "required": [
        -        "method"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "entries": {
        -          "minItems": 1
        -        }
        -      },
        -      "required": [
        -        "entries"
        -      ]
        -    }
        -  }
        -]New value: +[
        +  {
        +    "if": {
        +      "properties": {
        +        "method": {
        +          "const": "collect"
        +        }
        +      },
        +      "required": [
        +        "method"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "entries": {
        +          "minItems": 1
        +        }
        +      },
        +      "required": [
        +        "entries"
        +      ]
        +    }
        +  },
        +  {
        +    "else": {
        +      "properties": {
        +        "signers": {
        +          "items": {
        +            "required": [
        +              "id"
        +            ]
        +          }
        +        }
        +      }
        +    },
        +    "if": {
        +      "properties": {
        +        "estimate_only": {
        +          "const": true
        +        }
        +      },
        +      "required": [
        +        "estimate_only"
        +      ]
        +    }
        +  }
        +]
      • changedInput schema / properties / expires_at / description
        Previous value: -"ISO 8601; default is no expiration."New value: +"ISO 8601; default is no expiration. Must be at least one hour in the future."
      • changedInput schema / properties / signers / items / properties / notification_methods / description
        Previous value: -"Channels used to notify the signer of the request. Any combination of `Email` and `Whatsapp` (WhatsApp incurs an additional cost and is available only on paid subscriptions). Omit to default to `{\"Email\"}`."New value: +"How the signer is told a signature is being requested. **Exactly one method per signer** — the array shape is historical, and sending two returns `400`. The method must also be compatible with `verification_method`: `Email` verification takes `Email`, `Whatsapp` verification takes `Whatsapp`, and `DigitalCertificate` and `IdDocumentFaceMatchBasic` take either. WhatsApp incurs an additional cost and is available only on paid subscriptions. Omit it to have it inferred from `verification_method`, or `{\"Email\"}` when neither is sent. See **Verification & Notification Methods** for the full pairing table."
      • addedInput schema / properties / signers / items / properties / notification_methods / example
        Added value: +[
        +  "Email"
        +]
      • addedInput schema / properties / signers / items / properties / notification_methods / maxItems
        Added value: +1
      • addedInput schema / properties / signers / items / properties / step / minimum
        Added value: +1
      • changedInput schema / properties / signers / items / properties / verification_method / description
        Previous value: -"How the signer's identity is verified before signing. `Email` (default) sends a one-time code to the signer's email; `Whatsapp` sends the code over WhatsApp — the verification itself is not billed, but it requires the WhatsApp notification channel, so the signer costs 0.45 credits (available only on paid subscriptions); `DigitalCertificate` has the signer sign with their own ICP-Brasil certificate (A1/A3) — it requires the Digital Certificate feature, the signer's CPF or CNPJ must already be registered on their Assinafy contact (added in Assinafy, never through this tool), must be alone in its signing step, and is charged 2 credits per signer. A CPF requires that person's certificate (an e-CPF, or an e-CNPJ naming them as legal representative); a CNPJ requires an e-CNPJ for that company, from any of its representatives. Omit to default to `Email`."New value: +"How the signer's identity is verified before signing. `Email` (default) sends a one-time code to the signer's email; `Whatsapp` sends the code over WhatsApp — the verification itself is not billed, but it requires the WhatsApp notification channel, so the signer costs 0.45 credits (available only on paid subscriptions); `DigitalCertificate` has the signer sign with their own ICP-Brasil certificate (A1/A3) — it requires the Digital Certificate feature, the signer must have a CPF or CNPJ in `government_id`, must be alone in its signing step, and is charged 0.5 credits per signer. A CPF requires that person's certificate (an e-CPF, or an e-CNPJ naming them as legal representative); a CNPJ requires an e-CNPJ for that company, from any of its representatives. `IdDocumentFaceMatchBasic` verifies the signer from a photo of their government ID, a photo of them holding it and a liveness check — it requires the ID Document + Face Match feature, the signer must have a valid CPF in `government_id`, and is charged a per-signer fee. Omit to default to `Email`."
      • changedInput schema / properties / signers / items / properties / verification_method / enum
        Previous value: -[
        -  "Email",
        -  "Whatsapp",
        -  "DigitalCertificate"
        -]New value: +[
        +  "Email",
        +  "Whatsapp",
        +  "DigitalCertificate",
        +  "IdDocumentFaceMatchBasic"
        +]
      • addedInput schema / properties / signers / items / properties / verification_method / example
        Added value: +"Email"
      • removedInput schema / properties / signers / items / required
        Removed value: -[
        -  "id"
        -]
    • Changedassinafy_resend_notification1 field changed
      • addedInput schema / properties / estimate_only
        Added value: +{
        +  "description": "preview the reminder cost and balances without notifying the signer",
        +  "type": "boolean"
        +}
    • Changedassinafy_review_signature_request10 fields changed
      • changedInput schema / allOf
        Previous value: -[
        -  {
        -    "if": {
        -      "properties": {
        -        "method": {
        -          "const": "collect"
        -        }
        -      },
        -      "required": [
        -        "method"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "entries": {
        -          "minItems": 1
        -        }
        -      },
        -      "required": [
        -        "entries"
        -      ]
        -    }
        -  }
        -]New value: +[
        +  {
        +    "if": {
        +      "properties": {
        +        "method": {
        +          "const": "collect"
        +        }
        +      },
        +      "required": [
        +        "method"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "entries": {
        +          "minItems": 1
        +        }
        +      },
        +      "required": [
        +        "entries"
        +      ]
        +    }
        +  },
        +  {
        +    "else": {
        +      "properties": {
        +        "signers": {
        +          "items": {
        +            "required": [
        +              "id"
        +            ]
        +          }
        +        }
        +      }
        +    },
        +    "if": {
        +      "properties": {
        +        "estimate_only": {
        +          "const": true
        +        }
        +      },
        +      "required": [
        +        "estimate_only"
        +      ]
        +    }
        +  }
        +]
      • changedInput schema / properties / expires_at / description
        Previous value: -"ISO 8601; default is no expiration."New value: +"ISO 8601; default is no expiration. Must be at least one hour in the future."
      • changedInput schema / properties / signers / items / properties / notification_methods / description
        Previous value: -"Channels used to notify the signer of the request. Any combination of `Email` and `Whatsapp` (WhatsApp incurs an additional cost and is available only on paid subscriptions). Omit to default to `{\"Email\"}`."New value: +"How the signer is told a signature is being requested. **Exactly one method per signer** — the array shape is historical, and sending two returns `400`. The method must also be compatible with `verification_method`: `Email` verification takes `Email`, `Whatsapp` verification takes `Whatsapp`, and `DigitalCertificate` and `IdDocumentFaceMatchBasic` take either. WhatsApp incurs an additional cost and is available only on paid subscriptions. Omit it to have it inferred from `verification_method`, or `{\"Email\"}` when neither is sent. See **Verification & Notification Methods** for the full pairing table."
      • addedInput schema / properties / signers / items / properties / notification_methods / example
        Added value: +[
        +  "Email"
        +]
      • addedInput schema / properties / signers / items / properties / notification_methods / maxItems
        Added value: +1
      • addedInput schema / properties / signers / items / properties / step / minimum
        Added value: +1
      • changedInput schema / properties / signers / items / properties / verification_method / description
        Previous value: -"How the signer's identity is verified before signing. `Email` (default) sends a one-time code to the signer's email; `Whatsapp` sends the code over WhatsApp — the verification itself is not billed, but it requires the WhatsApp notification channel, so the signer costs 0.45 credits (available only on paid subscriptions); `DigitalCertificate` has the signer sign with their own ICP-Brasil certificate (A1/A3) — it requires the Digital Certificate feature, the signer's CPF or CNPJ must already be registered on their Assinafy contact (added in Assinafy, never through this tool), must be alone in its signing step, and is charged 2 credits per signer. A CPF requires that person's certificate (an e-CPF, or an e-CNPJ naming them as legal representative); a CNPJ requires an e-CNPJ for that company, from any of its representatives. Omit to default to `Email`."New value: +"How the signer's identity is verified before signing. `Email` (default) sends a one-time code to the signer's email; `Whatsapp` sends the code over WhatsApp — the verification itself is not billed, but it requires the WhatsApp notification channel, so the signer costs 0.45 credits (available only on paid subscriptions); `DigitalCertificate` has the signer sign with their own ICP-Brasil certificate (A1/A3) — it requires the Digital Certificate feature, the signer must have a CPF or CNPJ in `government_id`, must be alone in its signing step, and is charged 0.5 credits per signer. A CPF requires that person's certificate (an e-CPF, or an e-CNPJ naming them as legal representative); a CNPJ requires an e-CNPJ for that company, from any of its representatives. `IdDocumentFaceMatchBasic` verifies the signer from a photo of their government ID, a photo of them holding it and a liveness check — it requires the ID Document + Face Match feature, the signer must have a valid CPF in `government_id`, and is charged a per-signer fee. Omit to default to `Email`."
      • changedInput schema / properties / signers / items / properties / verification_method / enum
        Previous value: -[
        -  "Email",
        -  "Whatsapp",
        -  "DigitalCertificate"
        -]New value: +[
        +  "Email",
        +  "Whatsapp",
        +  "DigitalCertificate",
        +  "IdDocumentFaceMatchBasic"
        +]
      • addedInput schema / properties / signers / items / properties / verification_method / example
        Added value: +"Email"
      • removedInput schema / properties / signers / items / required
        Removed value: -[
        -  "id"
        -]
    • Changedassinafy_send_pdf_for_signature1 field changed
      • addedInput schema / properties / estimate_only
        Added value: +{
        +  "description": "upload and prepare the PDF, then return cost and document ID without creating contacts or sending invitations; reuse that ID to send",
        +  "type": "boolean"
        +}
    • Changedassinafy_update_signer2 fields changed
      • changedInput schema / anyOf
        Previous value: -[
        -  {
        -    "required": [
        -      "full_name"
        -    ]
        -  },
        -  {
        -    "required": [
        -      "email"
        -    ]
        -  },
        -  {
        -    "required": [
        -      "whatsapp_phone_number"
        -    ]
        -  }
        -]New value: +[
        +  {
        +    "required": [
        +      "full_name"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "email"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "whatsapp_phone_number"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "government_id"
        +    ]
        +  }
        +]
      • addedInput schema / properties / government_id
        Added value: +{
        +  "description": "Signer's CPF (11 digits) or CNPJ (14 characters; may be alphanumeric). Formatting is accepted and the value is normalized on save. Required before the signer can use a verification method that identifies them by CPF.",
        +  "type": "string"
        +}
  2. 32 tool updates
    • Removedassinafy_check_fields
    • Addedassinafy_create_assignment
    • Addedassinafy_create_document_from_template
    • Addedassinafy_create_signer
    • Changedassinafy_download_document6 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / oneOf
        Removed value: -[
        -  {
        -    "additionalProperties": false,
        -    "description": "Download a document artifact as base64.",
        -    "properties": {
        -      "action": {
        -        "enum": [
        -          "artifact"
        -        ],
        -        "type": "string"
        -      },
        -      "artifact": {
        -        "description": "original (default), certificated, certificate-page, pades, or bundle",
        -        "type": "string"
        -      },
        -      "document_id": {
        -        "description": "unique document ID",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "document_id",
        -      "action"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "description": "Download the rendered image of a specific document page.",
        -    "properties": {
        -      "action": {
        -        "enum": [
        -          "page"
        -        ],
        -        "type": "string"
        -      },
        -      "document_id": {
        -        "description": "Document ID.",
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "page_id": {
        -        "description": "The page ID.",
        -        "minLength": 1,
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "document_id",
        -      "page_id",
        -      "action"
        -    ],
        -    "type": "object"
        -  }
        -]
      • removedInput schema / properties / action
        Removed value: -{
        -  "description": "Choose exactly one action; supply only its arguments.",
        -  "enum": [
        -    "artifact",
        -    "page"
        -  ],
        -  "type": "string"
        -}
      • addedInput schema / properties / artifact
        Added value: +{
        +  "description": "original (default), certificated, certificate-page, pades, or bundle",
        +  "type": "string"
        +}
      • addedInput schema / properties / document_id
        Added value: +{
        +  "description": "unique document ID",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "action"
        -]New value: +[
        +  "document_id"
        +]
    • Addedassinafy_download_document_page
    • Removedassinafy_find_documents
    • Removedassinafy_find_signers
    • Removedassinafy_find_templates
    • Removedassinafy_follow_up_assignment
    • Addedassinafy_get_document
    • Addedassinafy_get_field
    • Addedassinafy_get_signer
    • Addedassinafy_get_template
    • Addedassinafy_list_document_activities
    • Addedassinafy_list_documents
    • Addedassinafy_list_fields
    • Addedassinafy_list_signers
    • Addedassinafy_list_templates
    • Addedassinafy_list_whatsapp_notifications
    • Changedassinafy_place_fields1 field changed
      • changedInput schema / properties / signers / items / properties / verification_method / description
        Previous value: -"How the signer's identity is verified before signing. `Email` (default) sends a one-time code to the signer's email; `Whatsapp` sends the code over WhatsApp — the verification itself is not billed, but it requires the WhatsApp notification channel, so the signer costs 0.45 credits (available only on paid subscriptions); `DigitalCertificate` has the signer sign with their own ICP-Brasil certificate (A1/A3) — it requires the Digital Certificate feature, the signer must have a CPF or CNPJ in `government_id`, must be alone in its signing step, and is charged 2 credits per signer. A CPF requires that person's certificate (an e-CPF, or an e-CNPJ naming them as legal representative); a CNPJ requires an e-CNPJ for that company, from any of its representatives. Omit to default to `Email`."New value: +"How the signer's identity is verified before signing. `Email` (default) sends a one-time code to the signer's email; `Whatsapp` sends the code over WhatsApp — the verification itself is not billed, but it requires the WhatsApp notification channel, so the signer costs 0.45 credits (available only on paid subscriptions); `DigitalCertificate` has the signer sign with their own ICP-Brasil certificate (A1/A3) — it requires the Digital Certificate feature, the signer's CPF or CNPJ must already be registered on their Assinafy contact (added in Assinafy, never through this tool), must be alone in its signing step, and is charged 2 credits per signer. A CPF requires that person's certificate (an e-CPF, or an e-CNPJ naming them as legal representative); a CNPJ requires an e-CNPJ for that company, from any of its representatives. Omit to default to `Email`."
    • Removedassinafy_prepare_document
    • Addedassinafy_rename_document
    • Removedassinafy_request_signatures
    • Addedassinafy_resend_notification
    • Changedassinafy_review_signature_request1 field changed
      • changedInput schema / properties / signers / items / properties / verification_method / description
        Previous value: -"How the signer's identity is verified before signing. `Email` (default) sends a one-time code to the signer's email; `Whatsapp` sends the code over WhatsApp — the verification itself is not billed, but it requires the WhatsApp notification channel, so the signer costs 0.45 credits (available only on paid subscriptions); `DigitalCertificate` has the signer sign with their own ICP-Brasil certificate (A1/A3) — it requires the Digital Certificate feature, the signer must have a CPF or CNPJ in `government_id`, must be alone in its signing step, and is charged 2 credits per signer. A CPF requires that person's certificate (an e-CPF, or an e-CNPJ naming them as legal representative); a CNPJ requires an e-CNPJ for that company, from any of its representatives. Omit to default to `Email`."New value: +"How the signer's identity is verified before signing. `Email` (default) sends a one-time code to the signer's email; `Whatsapp` sends the code over WhatsApp — the verification itself is not billed, but it requires the WhatsApp notification channel, so the signer costs 0.45 credits (available only on paid subscriptions); `DigitalCertificate` has the signer sign with their own ICP-Brasil certificate (A1/A3) — it requires the Digital Certificate feature, the signer's CPF or CNPJ must already be registered on their Assinafy contact (added in Assinafy, never through this tool), must be alone in its signing step, and is charged 2 credits per signer. A CPF requires that person's certificate (an e-CPF, or an e-CNPJ naming them as legal representative); a CNPJ requires an e-CNPJ for that company, from any of its representatives. Omit to default to `Email`."
    • Removedassinafy_save_signer
    • Addedassinafy_send_pdf_for_signature
    • Addedassinafy_set_assignment_expiration
    • Addedassinafy_update_signer
    • Addedassinafy_upload_document
    • Addedassinafy_validate_fields
  3. 3 tool updates
    • Addedassinafy_place_fields
    • Addedassinafy_review_signature_request
    • Addedassinafy_show_document
  4. 11 tool updates
    • First observedassinafy_check_fields
    • First observedassinafy_delete_document
    • First observedassinafy_download_document
    • First observedassinafy_find_documents
    • First observedassinafy_find_signers
    • First observedassinafy_find_templates
    • First observedassinafy_follow_up_assignment
    • First observedassinafy_prepare_document
    • First observedassinafy_request_signatures
    • First observedassinafy_save_signer
    • First observedassinafy_verify_document

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.