Assinafy
Send documents for legally valid e-signature in Brazil, track signers and download signed files.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"mcp-server": {
"url": "https://mcp.assinafy.com.br/mcp"
}
}
}Remote endpoints
https://mcp.assinafy.com.br/mcpstreamable-httpWhat it can do
Tool inventory
Tools (11)
🟢assinafy_check_fields(action)
Prepare template values or collect field placements. list finds reusable definitions; get inspects one field; validate checks values without creating a document. Match definitions to template placement field_id, ask about ambiguous names, and check each validation result's success before requesting signatures.
Input Schema
{
"type": "object",
"properties": {
"action": {
"type": "string",
"description": "Choose exactly one action; supply only its arguments.",
"enum": [
"list",
"get",
"validate"
]
}
},
"required": [
"action"
],
"oneOf": [
{
"type": "object",
"properties": {
"account_id": {
"type": "string",
"description": "Authorized workspace; discovered from OAuth when omitted.",
"minLength": 1
},
"action": {
"type": "string",
"enum": [
"list"
]
},
"include_inactive": {
"type": "boolean",
"description": "Include inactive field definitions."
},
"include_standard": {
"type": "boolean",
"description": "Include standard field types (signature, initial, signatureDate)."
}
},
"description": "List the field definitions of a workspace.\n\nWhen `include_standard` is enabled, records of type `signature`, `initial` and `signatureDate` are also returned.",
"required": [
"action"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"account_id": {
"type": "string",
"description": "Authorized workspace; discovered from OAuth when omitted.",
"minLength": 1
},
"action": {
"type": "string",
"enum": [
"get"
]
},
"field_id": {
"type": "string",
"description": "The field ID.",
"minLength": 1
}
},
"description": "Retrieve a single field definition.",
"required": [
"field_id",
"action"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"account_id": {
"type": "string",
"description": "Authorized workspace; discovered from OAuth when omitted.",
"minLength": 1
},
"action": {
"type": "string",
"enum": [
"validate"
]
},
"values": {
"type": "array",
"items": {
"type": "object",
"properties": {
"field_id": {
"type": "string",
"description": "The field definition ID."
},
"value": {
"description": "The input value to validate."
}
},
"required": [
"field_id",
"value"
],
"additionalProperties": false
},
"description": "Field/value pairs to validate; sent to Assinafy as the JSON request array."
}
},
"description": "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.",
"required": [
"values",
"action"
],
"additionalProperties": false
}
]
}🔴assinafy_delete_document(document_id)
Delete a document only when the user's instruction explicitly authorizes deletion. Inspect its current state first; Assinafy enforces which documents may be deleted.
Input Schema
{
"type": "object",
"properties": {
"document_id": {
"type": "string",
"description": "unique document ID to delete"
}
},
"required": [
"document_id"
],
"additionalProperties": false
}🟢assinafy_download_document(action)
Retrieve bytes only when needed. artifact downloads original (default), certificated, certificate-page, pades or bundle; wait for certificated status and artifact availability before downloading the signed PDF. page downloads a preview using a page_id returned by find_documents. Results contain base64 bytes.
Input Schema
{
"type": "object",
"properties": {
"action": {
"type": "string",
"description": "Choose exactly one action; supply only its arguments.",
"enum": [
"artifact",
"page"
]
}
},
"required": [
"action"
],
"oneOf": [
{
"type": "object",
"properties": {
"document_id": {
"type": "string",
"description": "unique document ID"
},
"artifact": {
"type": "string",
"description": "original (default), certificated, certificate-page, pades, or bundle"
},
"action": {
"type": "string",
"enum": [
"artifact"
]
}
},
"description": "Download a document artifact as base64.",
"required": [
"document_id",
"action"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"action": {
"type": "string",
"enum": [
"page"
]
},
"document_id": {
"type": "string",
"description": "Document ID.",
"minLength": 1
},
"page_id": {
"type": "string",
"description": "The page ID.",
"minLength": 1
}
},
"description": "Download the rendered image of a specific document page.",
"required": [
"document_id",
"page_id",
"action"
],
"additionalProperties": false
}
]
}🟢assinafy_find_documents(action)
Find a document or check signing progress. Use list to search; get to inspect status, assignment, signer IDs and artifacts; activities for the event timeline; notifications for WhatsApp delivery history. Read before retrying a send or following up. 100% signatures does not mean certification is finished.
Input Schema
{
"type": "object",
"properties": {
"action": {
"type": "string",
"description": "Choose exactly one action; supply only its arguments.",
"enum": [
"list",
"get",
"activities",
"notifications"
]
}
},
"required": [
"action"
],
"oneOf": [
{
"type": "object",
"properties": {
"page": {
"type": "integer",
"description": "page number (1-based)"
},
"per_page": {
"type": "integer",
"description": "number of results per page (max 100)"
},
"search": {
"type": "string",
"description": "partial match on document name or signer"
},
"sort": {
"type": "string",
"description": "name or updated_at; prefix with - for descending"
},
"status": {
"type": "string",
"description": "document status filter"
},
"account_id": {
"type": "string",
"description": "account ID; uses request routing if omitted"
},
"action": {
"type": "string",
"enum": [
"list"
]
}
},
"description": "Search workspace documents with pagination and filters.",
"required": [
"action"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"document_id": {
"type": "string",
"description": "unique document ID"
},
"action": {
"type": "string",
"enum": [
"get"
]
}
},
"description": "Inspect one known document, its assignment, signers and artifacts.",
"required": [
"document_id",
"action"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"action": {
"type": "string",
"enum": [
"activities"
]
},
"document_id": {
"type": "string",
"description": "Document ID.",
"minLength": 1
}
},
"description": "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`).",
"required": [
"document_id",
"action"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"action": {
"type": "string",
"enum": [
"notifications"
]
},
"assignment_id": {
"type": "string",
"description": "The assignment ID.",
"minLength": 1
},
"document_id": {
"type": "string",
"description": "Document ID.",
"minLength": 1
}
},
"description": "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.",
"required": [
"document_id",
"assignment_id",
"action"
],
"additionalProperties": false
}
]
}🟢assinafy_find_signers(action)
Resolve a recipient to a workspace signer ID. list searches the directory; get inspects a known signer. Check exact contact details and ask about ambiguous matches before sending invitations.
Input Schema
{
"type": "object",
"properties": {
"action": {
"type": "string",
"description": "Choose exactly one action; supply only its arguments.",
"enum": [
"list",
"get"
]
}
},
"required": [
"action"
],
"oneOf": [
{
"type": "object",
"properties": {
"account_id": {
"type": "string",
"description": "Authorized workspace; discovered from OAuth when omitted.",
"minLength": 1
},
"action": {
"type": "string",
"enum": [
"list"
]
},
"page": {
"type": "integer",
"description": "Page number.",
"minimum": 1
},
"per_page": {
"type": "integer",
"description": "Records per page (max 100).",
"minimum": 1,
"maximum": 100
},
"search": {
"type": "string",
"description": "Filter by full_name or email."
}
},
"description": "List the signers of a workspace.",
"required": [
"action"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"account_id": {
"type": "string",
"description": "Authorized workspace; discovered from OAuth when omitted.",
"minLength": 1
},
"action": {
"type": "string",
"enum": [
"get"
]
},
"signer_id": {
"type": "string",
"description": "The signer ID.",
"minLength": 1
}
},
"description": "Retrieve a signer's information.",
"required": [
"signer_id",
"action"
],
"additionalProperties": false
}
]
}🟢assinafy_find_templates(action)
Discover saved templates before requesting signatures. list returns roles, pages, field_id and placement labels; get inspects one template where the compatibility endpoint is supported. Match field names with check_fields. Template authoring stays in Assinafy.
Input Schema
{
"type": "object",
"properties": {
"action": {
"type": "string",
"description": "Choose exactly one action; supply only its arguments.",
"enum": [
"list",
"get"
]
}
},
"required": [
"action"
],
"oneOf": [
{
"type": "object",
"properties": {
"page": {
"type": "integer",
"description": "page number (1-based)"
},
"per_page": {
"type": "integer",
"description": "results per page"
},
"search": {
"type": "string",
"description": "filter templates by name"
},
"account_id": {
"type": "string",
"description": "account ID; uses default if omitted"
},
"action": {
"type": "string",
"enum": [
"list"
]
}
},
"description": "List saved templates with roles and field placements.",
"required": [
"action"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"template_id": {
"type": "string",
"description": "unique template ID"
},
"account_id": {
"type": "string",
"description": "account ID; uses default if omitted"
},
"action": {
"type": "string",
"enum": [
"get"
]
}
},
"description": "Get one template; this compatibility route is absent from the public API specification.",
"required": [
"template_id",
"action"
],
"additionalProperties": false
}
]
}🔴assinafy_follow_up_assignment(action)
Follow up on an existing assignment after checking find_documents. resend sends a reminder to one authorized pending signer and may consume notification credits. set_expiration changes the expiry using an explicit RFC 3339 timestamp. Use returned document, assignment and signer IDs; never repeat a reminder just because progress is unchanged.
Input Schema
{
"type": "object",
"properties": {
"action": {
"type": "string",
"description": "Choose exactly one action; supply only its arguments.",
"enum": [
"resend",
"set_expiration"
]
}
},
"required": [
"action"
],
"oneOf": [
{
"type": "object",
"properties": {
"document_id": {
"type": "string",
"description": "unique document ID"
},
"assignment_id": {
"type": "string",
"description": "unique assignment ID"
},
"signer_id": {
"type": "string",
"description": "unique signer ID to notify"
},
"action": {
"type": "string",
"enum": [
"resend"
]
}
},
"description": "Resend the invitation to a specific signer; requires authorization for the reminder.",
"required": [
"document_id",
"assignment_id",
"signer_id",
"action"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"document_id": {
"type": "string",
"description": "unique document ID"
},
"assignment_id": {
"type": "string",
"description": "unique assignment ID"
},
"expires_at": {
"type": "string",
"description": "new expiry timestamp in RFC 3339 format"
},
"action": {
"type": "string",
"enum": [
"set_expiration"
]
}
},
"description": "Change the expiration of an existing assignment.",
"required": [
"document_id",
"assignment_id",
"expires_at",
"action"
],
"additionalProperties": false
}
]
}🔴assinafy_prepare_document(action)
Prepare a PDF before requesting signatures. upload accepts PDF bytes and returns a document ID without invitations. rename changes a document's name before an assignment exists. Continue with find_documents and request_signatures action from_document.
Input Schema
{
"type": "object",
"properties": {
"action": {
"type": "string",
"description": "Choose exactly one action; supply only its arguments.",
"enum": [
"upload",
"rename"
]
}
},
"required": [
"action"
],
"oneOf": [
{
"type": "object",
"properties": {
"file_name": {
"type": "string",
"description": "PDF filename including .pdf"
},
"file_base64": {
"type": "string",
"description": "base64 PDF bytes, at most 25 MiB decoded"
},
"account_id": {
"type": "string",
"description": "authorized workspace; discovered through OAuth when omitted"
},
"action": {
"type": "string",
"enum": [
"upload"
]
}
},
"description": "Upload a PDF without sending invitations. Keep its document ID.",
"required": [
"file_name",
"file_base64",
"action"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"action": {
"type": "string",
"enum": [
"rename"
]
},
"document_id": {
"type": "string",
"description": "Document ID.",
"minLength": 1
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 255
}
},
"description": "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.",
"required": [
"name",
"document_id",
"action"
],
"additionalProperties": false
}
]
}🟡assinafy_request_signatures(action)
Send a document for signature using exactly one source. from_pdf uploads new PDF bytes, waits for processing and creates or reuses email signers. from_document uses an existing document_id and signer IDs; inspect the document first and do not repeat an existing assignment. from_template generates a document and assignment from a saved template; discover roles and field IDs first. These actions send invitations and can consume credits: use recipients authorized by the user. After a partial failure, inspect the retained document ID and continue from_document instead of uploading again.
Input Schema
{
"type": "object",
"properties": {
"action": {
"type": "string",
"description": "Choose exactly one action; supply only its arguments.",
"enum": [
"from_pdf",
"from_document",
"from_template"
]
}
},
"required": [
"action"
],
"oneOf": [
{
"type": "object",
"properties": {
"account_id": {
"type": "string",
"description": "account ID; uses the request or server default if omitted"
},
"file_name": {
"type": "string",
"description": "PDF filename including the .pdf extension"
},
"file_base64": {
"type": "string",
"description": "base64-encoded PDF bytes (max 25 MB decoded)"
},
"signers": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"properties": {
"full_name": {
"type": "string",
"description": "signer's full name"
},
"email": {
"type": "string",
"description": "signer's email address; existing exact matches are reused"
}
},
"required": [
"full_name",
"email"
],
"additionalProperties": false
},
"description": "one or more signers to create or reuse and request signatures from"
},
"message": {
"type": "string",
"description": "invitation message shown to signers"
},
"expires_at": {
"type": "string",
"description": "assignment expiry timestamp in RFC 3339 format"
},
"max_wait_secs": {
"type": "integer",
"description": "maximum seconds to wait for PDF processing (default 30; max 600)"
},
"poll_secs": {
"type": "integer",
"description": "polling interval in seconds (default 2; cannot exceed max_wait_secs)"
},
"action": {
"type": "string",
"enum": [
"from_pdf"
]
}
},
"description": "New PDF: provide file_name, file_base64 and signers by full_name/email. Creates a virtual assignment with Email verification and notification.",
"required": [
"file_name",
"file_base64",
"signers",
"action"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"action": {
"type": "string",
"enum": [
"from_document"
]
},
"copy_receivers": {
"type": "array",
"items": {
"type": "string"
},
"description": "Signer IDs that only receive a copy."
},
"document_id": {
"type": "string",
"description": "Document ID.",
"minLength": 1
},
"entries": {
"type": "array",
"items": {
"type": "object",
"properties": {
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"display_settings": {
"type": "object",
"properties": {
"backgroundColor": {
"type": "string",
"description": "CSS-compatible background-color presentation metadata."
},
"fontFamily": {
"type": "string",
"description": "Font-family presentation metadata."
},
"fontSize": {
"type": "number",
"description": "Font size in the 150-DPI page-image coordinate system.",
"exclusiveMinimum": 0,
"format": "float"
},
"height": {
"type": "number",
"description": "Height of the placement rectangle, in page-image pixels.",
"exclusiveMinimum": 0,
"format": "float"
},
"left": {
"type": "number",
"description": "Horizontal distance from the page's left edge, in page-image pixels.",
"minimum": 0,
"format": "float"
},
"top": {
"type": "number",
"description": "Vertical distance from the page's top edge, in page-image pixels.",
"minimum": 0,
"format": "float"
},
"width": {
"type": "number",
"description": "Width of the placement rectangle, in page-image pixels.",
"exclusiveMinimum": 0,
"format": "float"
}
},
"description": "A field placement rectangle on a document page. Geometry values are pixels in Assinafy's 150-DPI page image, measured from the upper-left corner. Clients must keep the rectangle within the selected page's width and height; the API does not clamp out-of-bounds values.",
"required": [
"left",
"top",
"width",
"height",
"fontSize"
],
"additionalProperties": false
},
"field_id": {
"type": "string"
},
"signer_id": {
"type": "string"
}
},
"required": [
"signer_id",
"field_id",
"display_settings"
],
"additionalProperties": false
},
"minItems": 1
},
"page_id": {
"type": "string"
}
},
"required": [
"page_id",
"fields"
],
"additionalProperties": false
},
"description": "Required for `collect`: field placements per page."
},
"expires_at": {
"type": "string",
"description": "ISO 8601; default is no expiration.",
"format": "date-time"
},
"message": {
"type": "string",
"description": "Text included in the invitation email."
},
"method": {
"type": "string",
"default": "virtual",
"enum": [
"virtual",
"collect"
]
},
"signers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"notification_methods": {
"type": "array",
"items": {
"type": "string",
"enum": [
"Email",
"Whatsapp"
]
},
"description": "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\"}`."
},
"step": {
"type": "integer"
},
"verification_method": {
"type": "string",
"description": "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`.",
"enum": [
"Email",
"Whatsapp",
"DigitalCertificate"
]
}
},
"required": [
"id"
],
"additionalProperties": false
},
"minItems": 1
}
},
"description": "Request signatures on a document. Use `method: virtual` to sign without input fields, or `method: collect` to place input fields on specific pages.\n\nFor **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).\n\n`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 find_signers/save_signer and page IDs from find_documents action get. This sends signing invitations.",
"required": [
"method",
"signers",
"document_id",
"action"
],
"additionalProperties": false,
"allOf": [
{
"if": {
"properties": {
"method": {
"const": "collect"
}
},
"required": [
"method"
]
},
"then": {
"properties": {
"entries": {
"minItems": 1
}
},
"required": [
"entries"
]
}
}
]
},
{
"type": "object",
"properties": {
"template_id": {
"type": "string",
"description": "template ID"
},
"signers": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"properties": {
"role_id": {
"type": "string",
"description": "template role ID"
},
"id": {
"type": "string",
"description": "existing signer ID; use instead of full_name and email"
},
"full_name": {
"type": "string",
"description": "signer's full name; required when id is omitted"
},
"email": {
"type": "string",
"description": "signer's email address, required when id is omitted; existing exact matches are reused"
},
"verification_method": {
"type": "string",
"description": "Email (default), Whatsapp, or DigitalCertificate"
},
"notification_methods": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
},
"description": "at most one channel: Email or Whatsapp; inferred from verification_method when omitted"
},
"step": {
"type": [
"null",
"integer"
],
"description": "signing order, contiguous from 1; all signers must set it if any does"
}
},
"required": [
"role_id"
],
"additionalProperties": false
},
"description": "one signer per template role, each by ID or by name and email"
},
"name": {
"type": "string",
"description": "custom document name"
},
"message": {
"type": "string",
"description": "signing invitation message"
},
"expires_at": {
"type": "string",
"description": "assignment expiry in RFC 3339 format"
},
"editor_fields": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"properties": {
"field_id": {
"type": "string",
"description": "template editor field ID"
},
"value": {
"type": "string",
"description": "value to bake into the generated document"
}
},
"required": [
"field_id",
"value"
],
"additionalProperties": false
},
"description": "template editor field values"
},
"tags": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
},
"description": "tag names, merged with the template's defaults"
},
"account_id": {
"type": "string",
"description": "account ID; uses request routing if omitted"
},
"action": {
"type": "string",
"enum": [
"from_template"
]
}
},
"description": "Saved template: provide template_id and one signer per role, by id or full_name/email. Use field_id/string-value pairs in editor_fields, after check_fields validation.",
"required": [
"template_id",
"signers",
"action"
],
"additionalProperties": false
}
]
}🔴assinafy_save_signer(action)
create adds a workspace contact without sending invitations; find_signers first to avoid duplicates. update corrects a shared contact subject to Assinafy's verification restrictions. Changing an unverified channel invalidates old links; follow up only after the correction succeeds and the user has authorized a reminder.
Input Schema
{
"type": "object",
"properties": {
"action": {
"type": "string",
"description": "Choose exactly one action; supply only its arguments.",
"enum": [
"create",
"update"
]
}
},
"required": [
"action"
],
"oneOf": [
{
"type": "object",
"properties": {
"account_id": {
"type": "string",
"description": "Authorized workspace; discovered from OAuth when omitted.",
"minLength": 1
},
"action": {
"type": "string",
"enum": [
"create"
]
},
"email": {
"type": "string",
"format": "email"
},
"full_name": {
"type": "string",
"minLength": 1
},
"whatsapp_phone_number": {
"type": "string",
"description": "E.164; normalized on save."
}
},
"description": "Create a signer in the workspace.",
"required": [
"full_name",
"action"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"account_id": {
"type": "string",
"description": "Authorized workspace; discovered from OAuth when omitted.",
"minLength": 1
},
"action": {
"type": "string",
"enum": [
"update"
]
},
"email": {
"type": "string",
"format": "email"
},
"full_name": {
"type": "string",
"minLength": 1
},
"government_id": {
"type": "string",
"description": "Signer's CPF/CNPJ; digits only on save."
},
"signer_id": {
"type": "string",
"description": "The signer ID.",
"minLength": 1
},
"whatsapp_phone_number": {
"type": "string",
"description": "E.164; normalized on save."
}
},
"description": "Update a signer's information.\n\n**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.",
"required": [
"signer_id",
"action"
],
"additionalProperties": false,
"anyOf": [
{
"required": [
"full_name"
]
},
{
"required": [
"email"
]
},
{
"required": [
"whatsapp_phone_number"
]
},
{
"required": [
"government_id"
]
}
]
}
]
}🟢assinafy_verify_document(hash)
Verify a signed document using its actual Assinafy SHA-1 signature hash. Public lookup; requires no workspace connection and sends no credential upstream.
Input Schema
{
"type": "object",
"properties": {
"hash": {
"type": "string",
"description": "SHA-1 signature hash of the signed document"
}
},
"required": [
"hash"
],
"additionalProperties": false
}Community
Evidence