Assinafy

io.github.assinafy由 GitHub 账号 assinafy 发布v3.2.0更新于 Oct 24, 2026

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

已验证Streamable HTTP可网页运行效率与工作流商业与电商

概览

AI 生成的概览

让助手准备、发送并跟踪巴西的合法电子签名文件,管理签署人并下载已签署副本。

可以做什么
这是 Assinafy 电子签名服务的远程 MCP 服务器,提供 27 个工具,每个工具对应一项操作。它可以列出和查看文件、上传 PDF 或基于已保存模板生成文件、创建带签署人和签署顺序的签署任务、重发提醒、修改到期时间、更新联系人、校验字段值,并下载已签署或已认证的成品。它还能读取文件活动时间线和 WhatsApp 送达记录,并可在未登录时通过公开记录核验签名。
适用场景
适合让助手端到端处理巴西电子签名事务:查询哪些合同仍待签署、把 PDF 或模板文件发送去签署、催办签署人,或取回已认证副本。它不用于创建或编辑模板,也不会代替他人签署。
运行要求
使用 Assinafy 的远程 streamable HTTP 端点,无需安装软件包。需在浏览器中完成 OAuth 登录,每个连接对应一个工作区;不需要 API 密钥、客户端密钥或工作区请求头。会申请 account:read、documents:read、documents:write、templates:read、templates:write 等权限范围,后台刷新需 offline_access。需要能访问该端点的网络。
安装前请注意
发送文件或 WhatsApp 通知会消耗工作区的文件配额和通知额度,工具响应不会显示费用或余额。提醒、修改到期时间、编辑联系人和删除都会写入工作区,且联系人在整个工作区共享。处于 certificated 状态的文件无法删除。切勿在提示、工具参数或 _meta 中放入 API 密钥、OAuth 令牌或其他凭据,此类请求会被拒绝。返回的签署链接和访问码应视为敏感信息。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Assinafy,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.github.assinafy%2Fmcp-server/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "assinafy": {
      "type": "http",
      "url": "https://mcp.assinafy.com.br/mcp"
    }
  }
}

README

Servidor MCP da Assinafy

Português · Read in English

Servidor MCP em Go para assinaturas e gestão do ciclo de vida de contratos na Assinafy. Expõe 29 ferramentas por Streamable HTTP sem estado: 27 ferramentas de assinatura e duas de CLM com ações fixas. O contrato REST público está na documentação da API.

Conectar

O servidor é um resource server OAuth 2.1. O cliente descobre os metadados, registra por CIMD, abre o consentimento no navegador com PKCE S256 e guarda/renova o próprio token. Cada conexão escolhe uma workspace. O MCP valida issuer, audience, validade, workspace e escopos, depois troca o token por outro token curto e exclusivo da API. As credenciais OAuth do operador ficam somente no servidor.

bash
codex mcp add assinafy --url https://mcp.assinafy.com.br/mcpcodex mcp login assinafy
claude mcp add --transport http assinafy https://mcp.assinafy.com.br/mcp

Em conectores remotos do Claude, use a mesma URL e conclua a autorização. Os escopos são account:read, documents:read, documents:write, templates:read e templates:write; o cliente pode aprovar um subconjunto. Veja autenticação e configuração do cliente.

Fluxo completo de assinatura

  1. Localize documentos, templates, campos, papéis e contatos com as ferramentas de listagem/leitura. Resolva nomes ambíguos e preserve os IDs retornados.
  2. Para um PDF novo por email, use assinafy_send_pdf_for_signature. A ferramenta valida, envia uma vez, aguarda metadados, reutiliza/cria contatos e cria um assignment virtual por Email. Para preparar sem enviar, use assinafy_upload_document e depois assinafy_create_assignment.
  3. Para template, leia todos os papéis e campos, valide os valores de editor e use assinafy_create_document_from_template com um signatário por papel.
  4. Escolha Email, Whatsapp, DigitalCertificate ou IdDocumentFaceMatchBasic. Só um canal de notificação é permitido. Email e Whatsapp exigem o canal correspondente; certificado e biometria aceitam ambos. A1/A3, documento de identidade e liveness são concluídos pela pessoa na Assinafy.
  5. Use virtual sem campos ou collect com campos posicionados nas páginas. Certificado exige virtual e signatário sozinho na etapa. Quando houver ordem, todos informam etapas contíguas iniciando em 1.
  6. Antecipe custos de assignment, template ou lembrete com estimate_only. Plano, saldo, elegibilidade de identidade e assinatura continuam sob controle da API.
  7. Acompanhe documento, assignment, páginas de atividades e notificações. Em pending_identity_review, uma pessoa autorizada da conta revisa as evidências.
  8. Aguarde certificated, baixe o artefato base64 e, se necessário, valide o hash real da assinatura com assinafy_verify_document.

Exemplo com email sintético:

json
{"file_name":"contrato.pdf","file_base64":"<PDF_BASE64>","signers":[{"full_name":"Signatário Exemplo","email":"[email protected]"}]}

assinafy_update_signer aceita null ou string vazia para limpar email, WhatsApp ou documento fiscal. assinafy_set_assignment_expiration aceita data/data-hora ISO 8601 ou null para remover o prazo. Atividades aceitam sort, page e per_page. Entradas, respostas, exemplos, estados e recuperação estão em ferramentas, schemas completos e erros.

Escritas nunca são repetidas automaticamente. Uma falha composta pode deixar um contato ou documento enviado; preserve o ID, confira o assignment e continue sem reenviar o PDF. O assistente nunca assina por uma pessoa.

Extensões MCP Apps e Events

Hosts compatíveis renderizam o recurso ui:// anunciado com text/html;profile=mcp-app. Ele atende status/lembretes, revisão antes do envio, posicionamento visual de campos e navegação de contratos. Outros hosts recebem o mesmo resultado em texto e conteúdo estruturado.

MCP Events é uma extensão opcional anunciada com events/list, events/subscribe e events/unsubscribe. Monitora document.status_changed, document.certificated e contract.activity, valida o challenge, assina entregas, limita inscrições e usa arquivo privado persistente. Exige uma réplica e é separado das subscriptions do núcleo MCP e dos webhooks da conta. Veja Events.

Webhooks de conta são geridos na Assinafy. Guarde o segredo único ao criar um endpoint assinado; OAuth não o lê nem o rotaciona. O receptor verifica Standard Webhooks sobre o corpo bruto, rejeita timestamps antigos e deduplica delivery IDs.

Gestão de contratos

Use assinafy_browse_contracts para listar, ler ou seguir uma família. Use assinafy_update_contract para definir termos, renovar ou encerrar somente após ler o updated_at; renovação também preserva o termo atual. Em conflito, releia e nunca sobrescreva silenciosamente. Aditivos são documentos assinados separados, ligados por parent_document_id e relation_type. Events informa; não autoriza escrita.

Executar e operar

Requer Go 1.27.3+, MCP Go SDK v1.8.0 e HTTPS em produção. O binário não carrega .env; injete segredos em runtime.

bash
make build./bin/assinafy-mcp-server -addr :8080
VariávelFunção
MCP_RESOURCE_URLURL pública obrigatória terminando em /mcp
ASSINAFY_OAUTH_ISSUERPadrão https://auth.assinafy.com.br
ASSINAFY_BASE_URLPadrão https://api.assinafy.com.br/v1
ASSINAFY_OAUTH_CLIENT_ID / ASSINAFY_OAUTH_CLIENT_SECRETCliente de introspecção/troca obrigatório
ASSINAFY_TIMEOUTTimeout da API; padrão 30s
MCP_EVENTS_STOREArquivo privado opcional de Events; uma réplica
MCP_ADDRPadrão :8080
MCP_TLS_CERT_FILE / MCP_TLS_KEY_FILETLS direto opcional
MCP_ALLOWED_ORIGINSOrigens exatas de navegador, separadas por vírgula
OPENAI_APPS_CHALLENGEToken opcional de verificação de domínio OpenAI
LOG_LEVEL / LOG_FORMATPadrão info / json

POST /mcp atende MCP; GET /mcp entrega identidade, manifesto e metadados OAuth. A descoberta também fica em /.well-known/oauth-protected-resource/mcp; saúde em /healthz. O proxy preserva host público e headers OAuth/MCP, encerra TLS e aplica limites por origem e tenant. Requisições: 40 MiB; PDF decodificado: 25 MiB; JSON: 16 MiB; artefato binário: 64 MiB. Veja segurança e deploy.

Verificar

bash
make verifymake docker-buildmake docker-testmake docker-lint

make verify executa formatação, consistência de módulos, vet, testes com race, build e vulnerabilidades alcançáveis. Testes de transporte cobrem as 29 ferramentas e versões MCP suportadas; testes de payload validam todos os schemas e exemplos. Integrações com tag exigem credenciais em runtime e destinatário expressamente autorizado; credenciais sozinhas não autorizam envios, cobranças ou mutações remotas.

No release, renderize o Helm privado, injete credenciais pelo gerenciador de segredos e mantenha tokens, documentos, certificados e dados reais fora do código, logs e docs.

来源:README.md,提交 631a259

工具

27

assinafy_create_assignment

Create assignment (request signatures)

Request signatures on a document. Use `method: virtual` to sign without input fields, or `method: collect` to place input fields on specific pages. DigitalCertificate signers require `method: virtual`; other methods fail with code `digital_certificate_requires_virtual`. 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.

输入参数method必填entriesmessagesigners必填expires_atdocument_id必填estimate_onlycopy_receivers

assinafy_create_document_from_template

Send a template for signature

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. DigitalCertificate signers require a virtual template without placed fields. This sends invitations and can consume credits.

输入参数nametagsmessagesigners必填account_idexpires_attemplate_id必填editor_fieldsestimate_only

assinafy_create_signer

Create signer

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

输入参数emailfull_name必填account_idgovernment_idwhatsapp_phone_number

assinafy_delete_document

Delete a document

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

输入参数document_id必填

assinafy_download_document

Download a document

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.

输入参数artifactdocument_id必填

assinafy_download_document_page

Download document page

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

输入参数page_id必填document_id必填

assinafy_get_document

Get a document

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.

输入参数document_id必填

assinafy_get_field

Get field

Retrieve a single field definition.

输入参数field_id必填account_id

assinafy_get_signer

Get signer

Retrieve a signer's information.

输入参数signer_id必填account_id

assinafy_get_template

Get a template

Get one saved template with its roles and field placements.

输入参数account_idtemplate_id必填

assinafy_list_document_activities

List document activities

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.

输入参数document_id必填

assinafy_list_documents

List documents

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.

输入参数pagesorttagsmethodsearchstatusper_pageaccount_id

assinafy_list_fields

List fields

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.

输入参数account_idinclude_inactiveinclude_standard

assinafy_list_signers

List signers

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

输入参数pagesearchper_pageaccount_id

assinafy_list_templates

List templates

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

输入参数pagesearchper_pageaccount_id

assinafy_list_whatsapp_notifications

List WhatsApp notifications

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.

输入参数document_id必填assignment_id必填

assinafy_place_fields

Place signature fields

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.

输入参数messagesigners必填expires_atdocument_id必填copy_receivers

assinafy_rename_document

Rename document

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.

输入参数name必填document_id必填

assinafy_resend_notification

Remind a signer

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.

输入参数signer_id必填document_id必填assignment_id必填estimate_only

assinafy_review_signature_request

Review a signature request

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.

输入参数method必填entriesmessagesigners必填expires_atdocument_id必填copy_receivers

assinafy_send_pdf_for_signature

Send a PDF for signature

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.

输入参数messagesigners必填file_name必填poll_secsaccount_idexpires_atfile_base64必填estimate_onlymax_wait_secs

assinafy_set_assignment_expiration

Change the deadline

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

输入参数expires_at必填document_id必填assignment_id必填

assinafy_show_document

Show document status

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.

输入参数document_id必填

assinafy_update_signer

Update signer

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.

输入参数emailfull_namesigner_id必填account_idgovernment_idwhatsapp_phone_number

assinafy_upload_document

Upload a document

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.

输入参数file_name必填account_idfile_base64必填

assinafy_validate_fields

Validate multiple field values

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.

输入参数values必填account_id

assinafy_verify_document

Verify a signed document

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

输入参数hash必填

版本历史

2
  1. v3.2.0最新Oct 13, 2026
  2. v3.0.7Sep 26, 2026

评分

已满足适用检查项的 100%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分