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 分