PenlyDoc

io.github.OrestKlymko由 GitHub 账号 OrestKlymko 发布v0.1.1更新于 Nov 1, 2026

Send documents for e-signature, track who signed and save sealed PDFs with PenlyDoc.

概览

AI 生成的概览

PenlyDoc MCP 服务器让助手发送待电子签署的文档、跟踪签署进度,并保存已密封的签署 PDF。

可以做什么
  • 用模板创建文档,或上传本地 PDF 与页面照片,签名框来自标签或坐标
  • 列出并查看文档:状态、谁打开、签署或拒签,以及带时间和 IP 的哈希链历史
  • 发送草稿、提醒当前轮到的人签署,以及作废仍在签署中的文档
  • 创建一小时有效的内嵌签署链接,并把已密封的签署 PDF 下载到本地文件
  • 无需 API 密钥即可校验任意本地签署 PDF 的密封完整性与签署人
适用场景
适合让助手准备并发出合同、租约或订单供人签署,随后跟踪进度,或在对话中校验并归档已完成的签署 PDF。
运行要求
通过 npx 以 stdio 在本地运行,需要 Node.js 18.17 或更高版本。需要 PenlyDoc 组织账号和控制台中的 API 密钥,通过 PENLY_API_KEY 提供;PENLY_URL 可选,用于指向其他实例。需要访问 PenlyDoc API 的网络连接。
安装前请注意
API 密钥能以组织名义发送文档,应视同密码,并为其单独创建可随时吊销的密钥。多个工具会向真实的人发邮件(发送、提醒、作废),且作废无法撤销;调用前先与用户确认收件人和内容,并保留客户端的确认提示。签署链接的持有者即可代表该人签署。文档历史包含签署人的 IP 地址。

安装

在 SourceWeft 中

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

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

PenlyDoc MCP server

Let an AI assistant send documents for e-signature with PenlyDoc and follow them: "Send the lease to Mia Novak from the Residential lease template, rent 950 EUR", "Who still has to sign order 42?", "Save the signed contract to ./signed".

It is a Model Context Protocol server that runs on your computer (stdio) and talks to the PenlyDoc REST API with your organisation's API key. Works with any MCP client.

Setup

  1. Create an organisation at penlydoc.com (free) and copy an API key from Console → Developers.
  2. Add the server to your MCP client's configuration:
json
{  "mcpServers": {    "penlydoc": {      "command": "npx",      "args": ["-y", "penlydoc-mcp"],      "env": { "PENLY_API_KEY": "sk_…" }    }  }}

Node.js 18.17 or newer is needed. PENLY_URL points the server at another PenlyDoc instance (default https://penlydoc.com).

Treat the API key like a password: it can send documents in your organisation's name. Give the assistant a key of its own, so you can revoke it in the console without touching your other integrations.

Tools

ToolWhat it doesSide effects
get_organisationWhich organisation the key belongs to, sending limitnone
list_templatesTemplates with their roles and data keysnone
send_from_templateCreate a document from a template; send: true e-mails the peoplee-mails real people
send_documentUpload local PDFs or photos and create a document; boxes from {{sig:1}} tags or coordinatese-mails real people when send: true
list_documentsDocuments with status and who has signed; filter by status or your referencenone
get_documentOne document: each person, opened, signed or declined, and whennone
get_historyHash-chained history with times and IP addressesnone
send_draftSend a drafte-mails real people
send_reminderRemind everyone whose turn it ise-mails real people
cancel_documentVoid a document that is still being signedcannot be undone
create_signing_linkOne-hour link for an embedded signerthe link signs as that person
download_signed_pdfSave the sealed PDF of a completed document to a filewrites a local file (never overwrites)
verify_pdfCheck a signed PDF: seal intact, who signednone, no key needed

The server tells the assistant to confirm people, e-mail addresses and documents with you before anything is sent. Most MCP clients also ask you before each tool call; keep that on for the tools that e-mail people.

Learn more

MIT licensed.

来源:README.md,提交 5da7c35

工具

13

get_organisation

Organisation

Shows which PenlyDoc organisation the API key belongs to, its default language and its sending limit.

无需输入参数。

list_templates

List templates

Lists the organisation's templates: id, name, the roles to fill (e.g. "tenant", "landlord"), the data keys to fill, and whether the template is ready to send.

无需输入参数。

send_from_template

Send from a template

Creates a document from a template: one person per role, values for its data keys. With send=true PenlyDoc immediately e-mails the people with delivery EMAIL; confirm the people and values with the user first. With send=false it creates a draft the user can review in the console. Use the same externalRef/idempotencyKey to safely retry.

输入参数datasend必填roles必填titlemessagetemplateId必填externalRefidempotencyKey

send_document

Send a document

Uploads local files (PDF, or PNG/JPEG photos of pages, joined in order) and creates a document for signature. Signature boxes come from {{sig:1}}-style tags in the PDF or from the fields argument (points, top-left origin). With send=true PenlyDoc e-mails the people right away; confirm with the user first. Without tags or fields, use send=false and let the user place the boxes in the console (the result has a link).

输入参数datasend必填files必填title必填fieldsmessagerecipients必填externalRefsigningOrderexpiresInDays

list_documents

List documents

Lists documents sent for signature, newest first, with who has signed. Filter by status or by your externalRef.

输入参数limitstatusexternalRef

get_document

Document status

Full status of one document: each person, whether they opened, signed or declined (with the reason), and when.

输入参数id必填

get_history

Document history

The hash-chained history of a document: every step with time, who and IP address, and whether the chain is intact.

输入参数id必填

send_draft

Send a draft

Sends a DRAFT document: PenlyDoc e-mails the first people to sign. Confirm with the user first.

输入参数id必填

send_reminder

Remind

E-mails a reminder now to everyone whose turn it is on this document. Confirm with the user first.

输入参数id必填

cancel_document

Cancel a document

Cancels (voids) a document that is still being signed. Signing links stop working and the people still to act are told by e-mail. This cannot be undone; confirm with the user first.

输入参数id必填reason必填

download_signed_pdf

Download the signed PDF

Saves the sealed, signed PDF (with the certificate of completion as last page) of a COMPLETED document to a local file.

输入参数id必填saveTo必填

verify_pdf

Check a signed PDF

Checks a local signed PDF: is the seal intact, when was it sealed, who signed. Works for any PDF; nothing is stored. No API key needed.

输入参数file必填

版本历史

1
  1. v0.1.1最新Oct 25, 2026

评分

已满足适用检查项的 90%

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

  • 近 30 天内可连通25 分
  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分