Skip to main content
Glama

Pressmark

Stateless Document Lifecycle Conversion

convert_document
Read-onlyIdempotent

Stateless in-memory transformation and PDF synthesis converting an Estimate/Quote JSON into an Invoice, Receipt, or Credit Note without mutating server records. Example: convert_document({"document":{},"target_type":"invoice"})

Input Schema

NameRequiredDescriptionDefault
documentYesStateless input document JSON payload to transform (returns a new synthesized document without mutating server records).
due_daysNoNumber of days until payment is due (for invoice conversion).
target_typeYesTarget lifecycle document type (invoice, receipt, estimate, credit_note, refund).
payment_linkNoOptional checkout URL to embed as a vector QR code and clickable link.
credit_reasonNoReason for issuing credit note or refund (e.g. Overbilling, Cancellation).
payment_qr_codeNoWhether to render an SVG vector QR code for 1-scan mobile payment.

Output Schema

NameRequiredDescriptionDefault
documentYesNewly synthesized converted document JSON.
pdf_base64YesBase64-encoded vector PDF of the converted document.
compile_time_msYesVector compilation latency in milliseconds.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the description's 'stateless ... without mutating server records' largely restates that. It does add that a brand-new synthesized document is returned and that PDF synthesis occurs, but it omits anything on prerequisites, error conditions, or how credit_reason/due_days alter behavior.

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?

Two sentences, front-loaded with the core verb and the stateless constraint, followed by a compact example call. The inline JSON example is slightly noisy but earns its place by showing the required payload shape.

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 present and full schema description coverage, the description does not need to explain return values, and it covers statelessness and the target types adequately. The main gap is the lack of any relation to the five sibling tools, which for a six-parameter tool in a crowded namespace is the missing piece.

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 every parameter is already documented in the schema, including the target_type enum, due_days being invoice-only, and payment_link QR embedding. The description adds only an example call showing document plus target_type; it contributes no semantics beyond the schema, which is the baseline-3 case.

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: it converts an Estimate/Quote JSON into another lifecycle document (invoice, receipt, credit note) statelessly and in memory. The scope is clear enough to distinguish it from mutation-oriented siblings, though the listed targets omit 'estimate' and 'refund' which the target_type enum actually supports, and it never names generate_document or preview_document as the alternatives.

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 mutating server records' implies the selection condition (use this when you want a throwaway synthesized document rather than a persisted one), and a concrete invocation example is given. However, there is no explicit when-to-use / when-not-to-use statement and no named alternative among the five siblings (generate_document, preview_document, calculate_totals, record_payment, get_pricing), so routing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.