Pressmark
Server Details
Vector PDF document engine for invoices, estimates, receipts, contracts & real estate agreements.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- mooshee/pressmark
- GitHub Stars
- 0
- Server Listing
- Pressmark MCP Server
TDQS
Scored across 6 tools
Each tool has a clearly distinct role: calculation, conversion, generation, pricing lookup, preview rendering, and payment recording. There is no meaningful overlap between creating a PDF, previewing it, converting its type, or calculating its totals.
All six tools follow a consistent snake_case verb_noun pattern (calculate_totals, convert_document, generate_document, get_pricing, preview_document, record_payment). The convention is predictable and easy for an agent to learn.
Six tools is well-scoped for a document generation and payment workflow, with each tool covering a distinct step. No tool feels redundant or unnecessary.
The surface covers creation, preview, conversion, calculation, and payment recording, but lacks retrieval/list/update/void operations for existing documents. Since record_payment implies stored invoices, the absence of get/list document tools is a notable gap.
Available Tools
6 toolscalculate_totalsCalculate Document TotalsARead-onlyIdempotentInspect
Calculate subtotal, tax amounts, discounts, grand total, and balance due for a document without full PDF synthesis.
| Name | Required | Description | Default |
|---|---|---|---|
| document | Yes | The document payload containing items, tax_rate, discount_amount, and optional amount_paid. |
Output Schema
| Name | Required | Description |
|---|---|---|
| is_paid | Yes | True when balance_due is zero. |
| subtotal | Yes | Sum of line item amounts before tax and document discount. |
| tax_total | Yes | Calculated tax amount. |
| amount_paid | Yes | Amount already paid toward the document. |
| balance_due | Yes | Remaining unpaid balance due. |
| grand_total | Yes | Total amount payable after tax and discount. |
| discount_amount | Yes | Document-level discount applied. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description usefully scopes the tool as a computation-only path that skips document synthesis. It does not mention rounding/precision behavior, how missing tax_rate or discount_amount are treated, or whether the calculation is a pure function of the payload — real gaps for a calculator, but partly offset by annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that leads with the verb and enumerates outputs, closing with the differentiator. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the input schema is fully described. For a read-only, single-parameter calculation tool the description is largely sufficient; only calculation edge-case behavior (rounding, missing fields) is left unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the nested document property already documents items, tax_rate, discount_amount, and amount_paid. The description restates the outputs rather than adding meaning to the input, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (calculate) and resource (document totals) and enumerates exactly what is computed: subtotal, tax, discounts, grand total, balance due. The clause 'without full PDF synthesis' separates it from generate_document and convert_document in the sibling set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'without full PDF synthesis' implies when to prefer this over generate_document/preview_document, but the guidance is inferential rather than an explicit when-to-use statement. No prerequisites, no named alternative, no exclusions are stated outright.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_documentConvert Document Lifecycle StateARead-onlyIdempotentInspect
Convert an existing document (e.g. Estimate or Quote) to a Tax Invoice, Receipt, or Credit Note, preserving all line items, parties, and calculations.
| Name | Required | Description | Default |
|---|---|---|---|
| document | Yes | The current document payload to convert. | |
| due_days | No | Number of days until payment is due (for invoice conversion). | |
| target_type | Yes | Target lifecycle document type (invoice, receipt, estimate, credit_note). | |
| payment_link | No | Optional customer checkout/payment URL to embed as vector QR code and clickable link. | |
| credit_reason | No | Reason for issuing credit note / refund (e.g. Overbilling, Customer cancellation). | |
| payment_qr_code | No | Whether to render an SVG vector QR code for 1-scan mobile payment. |
Output Schema
| Name | Required | Description |
|---|---|---|
| document | Yes | Converted document state. |
| pdf_base64 | Yes | Base64-encoded vector PDF of the converted document. |
| compile_time_ms | Yes | Vector compilation latency in milliseconds. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful context that line items, parties, and calculations are preserved during conversion, but it does not clarify persistence behavior or how the source document is treated beyond what the annotations imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is a single, front-loaded sentence with no wasted text. The verb and conversion outcome appear immediately, and the preservation clause adds useful detail without bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema and full annotation coverage, the description does not need to explain return values or safety flags. It covers the core conversion behavior, though it could note that the original payload is not modified and should align its target list with the enum that includes 'estimate'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all six parameters. The description restates some target types but omits 'estimate' from the enum and adds no meaning for due_days, payment_link, credit_reason, or payment_qr_code. Baseline 3 is appropriate when the schema carries parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: converting an existing document such as an Estimate or Quote into a Tax Invoice, Receipt, or Credit Note. It is clear what the tool does, but it does not distinguish itself from siblings like generate_document or preview_document.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'Convert an existing document', suggesting it applies after a document already exists. There is no explicit guidance on when to choose this over generate_document, preview_document, or calculate_totals, and no stated prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_documentGenerate Vector PDF DocumentBRead-onlyIdempotentInspect
Generate a publication-ready vector PDF document (invoice, estimate, receipt, credit note, contract, NDA, purchase order, certificate, or real estate agreement) in under 25ms.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient, buyer, client, or tenant counterparty details. | |
| from | Yes | Issuer, seller, landlord, or service provider party details. | |
| items | No | Billable line items, milestones, rent schedules, or fee breakdowns. | |
| notes | No | Customer-facing notes, remittance instructions, or project context. | |
| terms | No | Payment terms, late fee policy, or governing legal clauses. | |
| theme | No | Preset visual typography and color theme. | |
| title | No | Optional custom document heading override (e.g., 'TAX INVOICE' or 'RESIDENTIAL LEASE AGREEMENT'). | |
| is_paid | No | Whether the document is marked PAID IN FULL. | |
| currency | No | Currency symbol or ISO code (default '$', supports 'USD', 'EUR', 'GBP', 'CAD', 'AUD', 'JPY'). | |
| doc_type | Yes | The archetype or category of document to synthesize (e.g., invoice, invoice_freelance, estimate, receipt, credit_note, agreement, nda, residential_lease, commercial_nnn_lease). | |
| due_date | No | Payment due date or expiration date in YYYY-MM-DD format. | |
| tax_rate | No | Percentage tax rate applied to subtotal (e.g., 8.25 for 8.25%). | |
| doc_number | No | Unique document or invoice identifier (e.g., 'INV-2026-0042'). Auto-generated with archetype prefix when omitted. | |
| issue_date | No | Document issue date in YYYY-MM-DD format. | |
| payment_link | No | Optional HTTPS checkout URL (e.g., Stripe Payment Link) embedded as a clickable link and vector QR code. | |
| primary_color | No | Custom primary brand hex color (e.g., '#4f46e5'). | |
| discount_amount | No | Document-level flat discount subtracted before grand total. | |
| payment_qr_code | No | When true and payment_link is provided, embeds a vector SVG QR code for 1-scan mobile checkout. |
Output Schema
| Name | Required | Description |
|---|---|---|
| doc_number | Yes | Assigned or effective document number. |
| pdf_base64 | Yes | Base64-encoded vector PDF bytes. |
| grand_total | Yes | Computed grand total. |
| compile_time_ms | Yes | Vector compilation latency in milliseconds. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety and side-effect profile is covered structurally. The description adds useful behavioral context by stating the output is a vector PDF and that generation is fast (<25ms), but it does not describe return behavior, permissions, or limits beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence that communicates the action, output format, representative document types, and a performance characteristic without any wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema is rich and includes an output schema, so much of the calling contract is covered elsewhere. However, for a complex 18-parameter generation tool with multiple related siblings, the one-line description does not fully address when to use it versus preview_document or convert_document, nor does it explain the generated artifact lifecycle beyond 'vector PDF'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 18 parameters are already well documented in the schema. The description's list of document categories overlaps with the doc_type enum but does not add new meaning about parameter usage, defaults, or relationships beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Generate'), a precise output ('publication-ready vector PDF document'), and enumerates supported document types, making the core purpose unmistakable. It does not explicitly distinguish the tool from adjacent siblings such as preview_document or convert_document, which keeps it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like preview_document, convert_document, or calculate_totals. The only implied usage is that it is for creating documents, which an agent can infer from the name but not from explicit conditions or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pricingGet Pressmark Pricing CatalogARead-onlyIdempotentInspect
Get current subscription tiers, single-pass microtransactions, and checkout links.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| plans | Yes | Available Pressmark subscription tiers and features. |
| currency | Yes | Pricing catalog currency (USD). |
| microtransactions | Yes | Single-pass document unlock options. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds one genuinely useful behavioral detail — that it returns 'current' pricing plus ready-made checkout links — but says nothing about caching, currency, or freshness guarantees. Modest value on top of annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the verb and the three payload categories, with zero filler. Nothing could be cut without losing content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the description need not explain return shapes, and the zero-parameter, closed-world setup means little else is required. The only shortfall is the absence of any guidance on when this catalog lookup should precede payment or total-calculation calls.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. No misleading claims are made about inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
A specific verb ('Get') plus a specific resource ('pricing') whose contents are enumerated: subscription tiers, single-pass microtransactions, and checkout links. That enumeration distinguishes it from data-shaping siblings like calculate_totals and the write-oriented record_payment, though it never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is the lookup to perform before record_payment or calculate_totals, but the description states no conditions, prerequisites, or exclusions. No sibling is named as an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_documentPreview Document as PNGARead-onlyIdempotentInspect
Render a high-resolution 144-PPI PNG preview of the document as a Base64 Data URI for immediate visual inspection in chat.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient, buyer, client, or tenant counterparty details. | |
| from | Yes | Issuer, seller, landlord, or service provider party details. | |
| items | No | Billable line items, milestones, rent schedules, or fee breakdowns. | |
| notes | No | Customer-facing notes, remittance instructions, or project context. | |
| terms | No | Payment terms, late fee policy, or governing legal clauses. | |
| theme | No | Preset visual typography and color theme. | |
| title | No | Optional custom document heading override (e.g., 'TAX INVOICE' or 'RESIDENTIAL LEASE AGREEMENT'). | |
| is_paid | No | Whether the document is marked PAID IN FULL. | |
| currency | No | Currency symbol or ISO code (default '$', supports 'USD', 'EUR', 'GBP', 'CAD', 'AUD', 'JPY'). | |
| doc_type | Yes | The archetype or category of document to synthesize (e.g., invoice, invoice_freelance, estimate, receipt, credit_note, agreement, nda, residential_lease, commercial_nnn_lease). | |
| due_date | No | Payment due date or expiration date in YYYY-MM-DD format. | |
| tax_rate | No | Percentage tax rate applied to subtotal (e.g., 8.25 for 8.25%). | |
| doc_number | No | Unique document or invoice identifier (e.g., 'INV-2026-0042'). Auto-generated with archetype prefix when omitted. | |
| issue_date | No | Document issue date in YYYY-MM-DD format. | |
| payment_link | No | Optional HTTPS checkout URL (e.g., Stripe Payment Link) embedded as a clickable link and vector QR code. | |
| primary_color | No | Custom primary brand hex color (e.g., '#4f46e5'). | |
| discount_amount | No | Document-level flat discount subtracted before grand total. | |
| payment_qr_code | No | When true and payment_link is provided, embeds a vector SVG QR code for 1-scan mobile checkout. |
Output Schema
| Name | Required | Description |
|---|---|---|
| image_data_uri | Yes | Base64 PNG data URI (data:image/png;base64,...). |
| compile_time_ms | Yes | Raster preview latency in milliseconds. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered. The description adds genuine behavioral context beyond that: 144-PPI resolution, PNG encoding, and Base64 Data URI return format, which tells the agent exactly what comes back and that it is display-ready.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-formed sentence with the format and purpose front-loaded; nothing is wasted and it reads immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema, full annotation coverage, and complete parameter descriptions, the description only needs to convey the render target and format, which it does. The one missing element is explicit routing against generate_document, which keeps it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 18 parameters are already documented in the schema, including nested party objects and enums. The description adds no parameter-specific meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Render) and resource (document as PNG preview) with the output format (Base64 Data URI) and intended use (visual inspection in chat). Distinguishes itself from generate_document by its preview purpose, though it never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for immediate visual inspection in chat' implies a preview-time use case, but there is no explicit when-to-use versus generate_document or convert_document, and no exclusions or prerequisites. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_paymentRecord Invoice Payment & Issue ReceiptBRead-onlyIdempotentInspect
Record a full or partial payment against an invoice and instantly generate an official Receipt or updated partial-payment Invoice with remaining balance tracking.
| Name | Required | Description | Default |
|---|---|---|---|
| document | Yes | The current invoice payload. | |
| paid_date | No | Date payment was received (YYYY-MM-DD). | |
| amount_paid | No | Amount received. Defaults to grand total (marks PAID IN FULL). If less, records partial payment. | |
| payment_method | No | Method of payment, e.g. Stripe, Apple Pay, Bank Wire. | |
| transaction_reference | No | Transaction or checkout reference ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
| document | Yes | Updated receipt or partial-payment invoice state. |
| pdf_base64 | Yes | Base64-encoded vector PDF. |
| compile_time_ms | Yes | Vector compilation latency in milliseconds. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description clearly describes a write operation ('Record a payment', 'generate an official Receipt'), yet annotations declare readOnlyHint=true. That is a direct contradiction about whether the tool mutates state, and it is the single most important behavioral fact for the caller.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One well-formed sentence with the action front-loaded and no redundant restatement of the name. Mild promotional padding ('instantly', 'official') costs it a point but does not obscure meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. However, for a mutation with a nested 'document' payload, the description omits prerequisites (invoice must already exist), overpayment handling, and whether the source document is modified in place — and the readOnly annotation actively misleads.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each parameter already explains itself, including the amount_paid default behavior. The description adds only 'remaining balance tracking' and does not supplement anything the schema lacks, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Record a full or partial payment against an invoice') plus the outcome (receipt or updated invoice). It is distinguishable from siblings like preview_document and generate_document, though it never names them explicitly to sharpen the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The full-vs-partial distinction is described, which implies when to use it, but there is no explicit when-not guidance and no reference to alternatives such as preview_document or calculate_totals. An agent must infer the routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
get_pricing5 fields changed- changed
Output schema / properties / currency / descriptionPrevious value: -"Pricing catalog currency."New value: +"Pricing catalog currency (USD)." - added
Output schema / properties / microtransactionsAdded value: +{ + "description": "Single-pass document unlock options.", + "type": "array" +} - added
Output schema / properties / plansAdded value: +{ + "description": "Available Pressmark subscription tiers and features.", + "type": "array" +} - removed
Output schema / properties / tiersRemoved value: -{ - "description": "Available Pressmark plans and features.", - "type": "array" -} - added
Output schema / requiredAdded value: +[ + "currency", + "plans", + "microtransactions" +]
6 tool updates
- First observed
calculate_totals - First observed
convert_document - First observed
generate_document - First observed
get_pricing - First observed
preview_document - First observed
record_payment
Related MCP Connectors
Turn HTML or templates into branded invoice & document PDFs from your agent. One call, no install.
Generate invoice and receipt PDFs from JSON. Agent-callable document API with a free demo quota.
Turn a description into a shareable, editable PDF — invoices, certificates, reports, resumes.
- okdocOAuthcom.okdocai
E-signature & document automation: create, send, track and sign documents with payments. 38 tools.
Related MCP Servers
- AlicenseAqualityCmaintenanceGenerate professional PDFs from Claude, Cursor, and other AI tools. Create invoices, contracts, reports, and certificates from templates or inline HTML markup.719 npm1MIT

DocuQueue MCP Serverofficial
AlicenseNot gradedqualityBmaintenanceEnables creating professional documents (invoices, contracts, certificates, proposals, reports) via the DocuQueue API, with tools for template management, filling, previewing, and PDF generation.28 npm1MIT
Dokmatiq DocGenofficial
AlicenseAqualityCmaintenancePDF/DOCX/Excel generation from HTML/Markdown with stationery overlay, ZUGFeRD/XRechnung e-invoicing, digital signing, form filling, and AI receipt OCR with DATEV/SKR03 export.40MIT
@sheetrender/mcpofficial
AlicenseAqualityBmaintenanceRenders PDFs from HTML templates or saved templates and spreadsheet data, with batch job support and document retrieval.1178 npm1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.