Skip to main content
Glama

Pressmark

Server Details

Vector PDF document engine for invoices, estimates, receipts, contracts & real estate agreements.

Ownership verified
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
Repository
mooshee/pressmark
GitHub Stars
0
Server Listing
Pressmark MCP Server

TDQS

A3.7/5.0

Scored across 6 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness3/5

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 tools
calculate_totalsCalculate Document TotalsA
Read-onlyIdempotent
Inspect

Calculate subtotal, tax amounts, discounts, grand total, and balance due for a document without full PDF synthesis.

NameRequiredDescriptionDefault
documentYesThe document payload containing items, tax_rate, discount_amount, and optional amount_paid.

Output Schema

NameRequiredDescription
is_paidYesTrue when balance_due is zero.
subtotalYesSum of line item amounts before tax and document discount.
tax_totalYesCalculated tax amount.
amount_paidYesAmount already paid toward the document.
balance_dueYesRemaining unpaid balance due.
grand_totalYesTotal amount payable after tax and discount.
discount_amountYesDocument-level discount applied.

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 StateA
Read-onlyIdempotent
Inspect

Convert an existing document (e.g. Estimate or Quote) to a Tax Invoice, Receipt, or Credit Note, preserving all line items, parties, and calculations.

NameRequiredDescriptionDefault
documentYesThe current document payload to convert.
due_daysNoNumber of days until payment is due (for invoice conversion).
target_typeYesTarget lifecycle document type (invoice, receipt, estimate, credit_note).
payment_linkNoOptional customer checkout/payment URL to embed as vector QR code and clickable link.
credit_reasonNoReason for issuing credit note / refund (e.g. Overbilling, Customer cancellation).
payment_qr_codeNoWhether to render an SVG vector QR code for 1-scan mobile payment.

Output Schema

NameRequiredDescription
documentYesConverted document state.
pdf_base64YesBase64-encoded vector PDF of the converted document.
compile_time_msYesVector compilation latency in milliseconds.

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 DocumentB
Read-onlyIdempotent
Inspect

Generate a publication-ready vector PDF document (invoice, estimate, receipt, credit note, contract, NDA, purchase order, certificate, or real estate agreement) in under 25ms.

NameRequiredDescriptionDefault
toYesRecipient, buyer, client, or tenant counterparty details.
fromYesIssuer, seller, landlord, or service provider party details.
itemsNoBillable line items, milestones, rent schedules, or fee breakdowns.
notesNoCustomer-facing notes, remittance instructions, or project context.
termsNoPayment terms, late fee policy, or governing legal clauses.
themeNoPreset visual typography and color theme.
titleNoOptional custom document heading override (e.g., 'TAX INVOICE' or 'RESIDENTIAL LEASE AGREEMENT').
is_paidNoWhether the document is marked PAID IN FULL.
currencyNoCurrency symbol or ISO code (default '$', supports 'USD', 'EUR', 'GBP', 'CAD', 'AUD', 'JPY').
doc_typeYesThe archetype or category of document to synthesize (e.g., invoice, invoice_freelance, estimate, receipt, credit_note, agreement, nda, residential_lease, commercial_nnn_lease).
due_dateNoPayment due date or expiration date in YYYY-MM-DD format.
tax_rateNoPercentage tax rate applied to subtotal (e.g., 8.25 for 8.25%).
doc_numberNoUnique document or invoice identifier (e.g., 'INV-2026-0042'). Auto-generated with archetype prefix when omitted.
issue_dateNoDocument issue date in YYYY-MM-DD format.
payment_linkNoOptional HTTPS checkout URL (e.g., Stripe Payment Link) embedded as a clickable link and vector QR code.
primary_colorNoCustom primary brand hex color (e.g., '#4f46e5').
discount_amountNoDocument-level flat discount subtracted before grand total.
payment_qr_codeNoWhen true and payment_link is provided, embeds a vector SVG QR code for 1-scan mobile checkout.

Output Schema

NameRequiredDescription
doc_numberYesAssigned or effective document number.
pdf_base64YesBase64-encoded vector PDF bytes.
grand_totalYesComputed grand total.
compile_time_msYesVector compilation latency in milliseconds.

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 CatalogA
Read-onlyIdempotent
Inspect

Get current subscription tiers, single-pass microtransactions, and checkout links.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
plansYesAvailable Pressmark subscription tiers and features.
currencyYesPricing catalog currency (USD).
microtransactionsYesSingle-pass document unlock options.

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 PNGA
Read-onlyIdempotent
Inspect

Render a high-resolution 144-PPI PNG preview of the document as a Base64 Data URI for immediate visual inspection in chat.

NameRequiredDescriptionDefault
toYesRecipient, buyer, client, or tenant counterparty details.
fromYesIssuer, seller, landlord, or service provider party details.
itemsNoBillable line items, milestones, rent schedules, or fee breakdowns.
notesNoCustomer-facing notes, remittance instructions, or project context.
termsNoPayment terms, late fee policy, or governing legal clauses.
themeNoPreset visual typography and color theme.
titleNoOptional custom document heading override (e.g., 'TAX INVOICE' or 'RESIDENTIAL LEASE AGREEMENT').
is_paidNoWhether the document is marked PAID IN FULL.
currencyNoCurrency symbol or ISO code (default '$', supports 'USD', 'EUR', 'GBP', 'CAD', 'AUD', 'JPY').
doc_typeYesThe archetype or category of document to synthesize (e.g., invoice, invoice_freelance, estimate, receipt, credit_note, agreement, nda, residential_lease, commercial_nnn_lease).
due_dateNoPayment due date or expiration date in YYYY-MM-DD format.
tax_rateNoPercentage tax rate applied to subtotal (e.g., 8.25 for 8.25%).
doc_numberNoUnique document or invoice identifier (e.g., 'INV-2026-0042'). Auto-generated with archetype prefix when omitted.
issue_dateNoDocument issue date in YYYY-MM-DD format.
payment_linkNoOptional HTTPS checkout URL (e.g., Stripe Payment Link) embedded as a clickable link and vector QR code.
primary_colorNoCustom primary brand hex color (e.g., '#4f46e5').
discount_amountNoDocument-level flat discount subtracted before grand total.
payment_qr_codeNoWhen true and payment_link is provided, embeds a vector SVG QR code for 1-scan mobile checkout.

Output Schema

NameRequiredDescription
image_data_uriYesBase64 PNG data URI (data:image/png;base64,...).
compile_time_msYesRaster preview latency in milliseconds.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 ReceiptB
Read-onlyIdempotent
Inspect

Record a full or partial payment against an invoice and instantly generate an official Receipt or updated partial-payment Invoice with remaining balance tracking.

NameRequiredDescriptionDefault
documentYesThe current invoice payload.
paid_dateNoDate payment was received (YYYY-MM-DD).
amount_paidNoAmount received. Defaults to grand total (marks PAID IN FULL). If less, records partial payment.
payment_methodNoMethod of payment, e.g. Stripe, Apple Pay, Bank Wire.
transaction_referenceNoTransaction or checkout reference ID.

Output Schema

NameRequiredDescription
documentYesUpdated receipt or partial-payment invoice state.
pdf_base64YesBase64-encoded vector PDF.
compile_time_msYesVector compilation latency in milliseconds.

TDQS

B3/5.0
Behavior1/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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. 1 tool update
    • Changedget_pricing5 fields changed
      • changedOutput schema / properties / currency / description
        Previous value: -"Pricing catalog currency."New value: +"Pricing catalog currency (USD)."
      • addedOutput schema / properties / microtransactions
        Added value: +{
        +  "description": "Single-pass document unlock options.",
        +  "type": "array"
        +}
      • addedOutput schema / properties / plans
        Added value: +{
        +  "description": "Available Pressmark subscription tiers and features.",
        +  "type": "array"
        +}
      • removedOutput schema / properties / tiers
        Removed value: -{
        -  "description": "Available Pressmark plans and features.",
        -  "type": "array"
        -}
      • addedOutput schema / required
        Added value: +[
        +  "currency",
        +  "plans",
        +  "microtransactions"
        +]
  2. 6 tool updates
    • First observedcalculate_totals
    • First observedconvert_document
    • First observedgenerate_document
    • First observedget_pricing
    • First observedpreview_document
    • First observedrecord_payment

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.