Free e-signature for humans and AI agents — zero-document PDF signing from hashes only.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Create a FreeSign envelope from a PDF SHA-256 hash. Do not send PDF bytes. The created envelope is NOT yet session-bound — the browser that opens the returned signing_url generates an ECDSA P-256 keypair locally and POSTs the public JWK to /api/envelopes/{id}/session-bind before any protected request will succeed. AI agents calling this tool just hand the signing_url to a human, who continues in a browser.
SHA-256 of the original PDF bytes, computed locally by the user or agent.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Create a FreeSign envelope from a PDF SHA-256 hash. Do not send PDF bytes. The created envelope is NOT yet session-bound — the browser that opens the returned signing_url generates an ECDSA P-256 keypair locally and POSTs the public JWK to /api/envelopes/{id}/session-bind before any protected request will succeed. AI agents calling this tool just hand the signing_url to a human, who continues in a browser.
| Argument | Type | Description |
|---|---|---|
| document_sha256* | string | SHA-256 of the original PDF bytes, computed locally by the user or agent. |
{
"type": "object",
"required": [
"document_sha256"
],
"properties": {
"document_sha256": {
"type": "string",
"pattern": "^[a-f0-9]{64}$",
"description": "SHA-256 of the original PDF bytes, computed locally by the user or agent."
}
}
}Return the .ots proof (base64) for a given OpenTimestamps anchor on an envelope. Use the official `ots-cli` to verify offline against Bitcoin block headers. Each seal has two anchors: `kind: "byterange"` commits to the signed document, `kind: "signed_attrs"` commits to SHA-256 of the CMS SignedAttributes (which carry the post-quantum key commitment).
| Argument | Type | Description |
|---|---|---|
| anchor_id* | string | |
| envelope_id* | string |
{
"type": "object",
"required": [
"envelope_id",
"anchor_id"
],
"properties": {
"anchor_id": {
"type": "string",
"pattern": "^ots_[a-f0-9]{32}$"
},
"envelope_id": {
"type": "string",
"pattern": "^env_[a-f0-9]{32}$"
}
}
}Return the envelope record (including final_pdf_sha256, final_signature_base64url, final_payload_json), per-signer signing receipts, and OpenTimestamps anchor metadata. Evidence only, never PDF bytes.
| Argument | Type | Description |
|---|---|---|
| envelope_id* | string |
{
"type": "object",
"required": [
"envelope_id"
],
"properties": {
"envelope_id": {
"type": "string"
}
}
}Return an envelope's append-only audit-event hash chain together with a server-computed integrity verdict: every event_hash is recomputed from its canonical material, and the prev_event_hash linkage and per-envelope seq contiguity are checked. Evidence only, never PDF bytes. The raw events are included verbatim so the caller can independently re-derive the verdict instead of trusting `chain.valid`.
| Argument | Type | Description |
|---|---|---|
| envelope_id* | string |
{
"type": "object",
"required": [
"envelope_id"
],
"properties": {
"envelope_id": {
"type": "string",
"pattern": "^env_[a-f0-9]{32}$"
}
}
}Find FreeSign receipts matching a local document SHA-256 hash.
| Argument | Type | Description |
|---|---|---|
| document_sha256* | string |
{
"type": "object",
"required": [
"document_sha256"
],
"properties": {
"document_sha256": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
}
}
}