MCP App Store
by KeenEthics
PaperClerk icon

PaperClerk

By Nikola Mastilovic

Get New App Alerts

Overview

PaperClerk helps you find saved templates in your connected workspace, inspect their fields, and generate filled documents without changing the original template. Supply values for individual fields or repeating sections, then preview the result and download its PDF. You can also find and reopen previously generated documents. Requires a connected PaperClerk account. PDF download links work without sign-in for about one hour, so share them only with intended recipients.

Tools

generate_document

ChatGPT
Create an immutable generated document from a template: the saved version with values applied. Each KEY of values must be a placeholder KEY exactly as get_template returns it in placeholders[].key, never the value currently filled in, and never a name read out of the document text. So for a placeholder keyed "client_name" (labelled "Client name") holding "Acme Ltd", to change it to "Globex" you send {"client_name": "Globex"}. A placeholder used more than once in the document is filled everywhere. Keys you omit keep the template’s default values. A placeholder’s description (from get_template) is the template author’s help text about the expected value. Omit placeholders marked auto: true (today’s date, auto-numbers): PaperClerk fills them and ignores anything sent. Typed placeholders constrain their values: a "select" placeholder accepts exactly one of its options, and a "number" placeholder accepts a numeric string like "1234.56" (rewritten server-side into the template’s declared format). A "date" placeholder is NOT rewritten: send the date already written in its format (e.g. "01/05/2027" for format "08/27/2026"). Any placeholder accepts "" to clear it. A REPEATING GROUP (get_template → groups) takes an ARRAY of instance objects keyed by the group’s field keys: its template row is cloned once per array entry, so {"line_items": [{"item": "Widget", "quantity": "2"}, {"item": "Gadget"}]} produces two rows. An omitted group keeps the template’s single authored row; an empty array [] removes the section entirely; field types validate exactly like top-level placeholders. Returns the new document with url (its page in PaperClerk) and pdf_download_url (downloads the PDF with no sign-in, valid until pdf_download_expires_at, about an hour; the PDF is rendered on first use if it is not ready yet). Both links are meant for the user. An identical request (same template, values and title) within ten minutes answers the same document again with replayed: true instead of generating a second copy; to make another copy on purpose, change the title.

get_generation

ChatGPT
One generated document, rendered as markdown, with url (its page in PaperClerk) and pdf_download_url (downloads the PDF with no sign-in, valid until pdf_download_expires_at, about an hour; rendered on first use if it is not ready yet). Call this again for a fresh link once it has expired.

get_template

ChatGPT
One PaperClerk template, read before generate_document: its saved text as markdown (blank placeholders appear as {{label}} tokens) and the placeholder inventory: each placeholder’s key (the name to send in generate_document’s values, e.g. "client_name"), its label (the human name shown in the document), how many places it fills, the default value the template author set, and its type: "text" (free text), "select" (fill with exactly one of options), "number" (fill with a numeric value; format is a literal example of how the document writes it, e.g. "1,234.56"), or "date" (fill with a calendar date WRITTEN IN the format, a literal example of the reference date 2026-08-27, e.g. "08/27/2026" or "August 27, 2026"; no format means ISO "2026-08-27"). A placeholder may also carry description: help text from the template author about the expected value (the format or content wanted). It is not printed in the document. Placeholders with auto: true ("today": the generation day in the template’s format; "counter": an auto-number that increments per generated document) are filled by PaperClerk itself: never send values for them. groups lists the REPEATING sections (e.g. invoice line items), each with its own key and its fields’ keys: the markdown shows each group’s row once, but at generate time it clones per instance, so fill a group by passing an array under its key (see generate_document).

list_generations

ChatGPT
Documents generated in the connected PaperClerk workspace, newest first, across every template unless template_id narrows it; created_by (a user id from an earlier row), source ("app" or "api"), from/to (a half-open time window) and search (by name) narrow further. Each row carries the template it came from, who generated it and its pdf_status; call get_generation for the text and the download link. Page with cursor (send next_cursor back) while has_more; total counts the whole filtered set.

list_templates

ChatGPT
Saved PaperClerk document templates you can generate from in the connected workspace (workspace names it). Use it to find the template the user means. When truncated is true, refine with search rather than paging.

Capabilities

WritesInteractive

Example Prompts

Click any prompt to copy it.

Similar Apps