Skip to main content
Glama

pdfops-mcp

Server Details

Deterministic PDF tools for AI agents: inspect fields, fill forms, merge PDFs, invoices.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
pdfops/pdfops-mcp
GitHub Stars
0
Server Listing
pdfops-mcp

TDQS

A4.5/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: pdf_inspect reads form metadata, pdf_fill populates it, pdf_invoice generates from data, pdf_merge concatenates, pdfops_usage reports quota. Descriptions explicitly cross-reference each other (e.g. 'use pdf_fill instead'), eliminating the fill-vs-invoice overlap risk.

Naming Consistency4/5

Four tools share a clean pdf_ prefix with noun/verb objects (pdf_fill, pdf_inspect, pdf_invoice, pdf_merge), giving a predictable pattern. pdfops_usage breaks the prefix, though it is defensibly a service-account tool rather than a document operation.

Tool Count5/5

Five tools is well-scoped for a focused PDF operations service; each one covers a distinct workflow (inspect, fill, generate, merge, quota) with no redundancy or filler.

Completeness3/5

Core fill/inspect/merge/generate workflows are covered, but page-level manipulation (split, reorder, rotate, delete pages) and text extraction are absent — pdf_merge explicitly disclaims page reordering, so an agent needing to reorganize a PDF hits a dead end.

Available Tools

5 tools
pdf_fillFill PDF formA
Idempotent
Inspect

Fill AcroForm form fields in a PDF and return the result. Field names must exist in the PDF (use pdf_inspect first). All values are strings; checkboxes take "true"/"false"; dropdown/radio/optionlist values must be one of the field's options; text values must respect the field's maxLength from pdf_inspect. The source PDF is never modified. Returns the filled PDF inline as an application/pdf resource. Encrypted PDFs are rejected with decrypt advice (common for government blanks with an empty user password).

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsYesField name → string value (from pdf_inspect's fillTemplate)
flattenNoBake values into page content and drop the AcroForm so fields are no longer editable
pdf_pathYesTemplate PDF source: an https:// URL or a data:application/pdf;base64,… URI (this hosted server cannot read local file paths).

Output Schema

ParametersJSON Schema
NameRequiredDescription
bytesYesSize of the produced PDF in bytes
resource_uriNopdfops:// uri of the inline application/pdf resource

TDQS

A4.7/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing that the source PDF is never modified, that the filled PDF is returned inline as an application/pdf resource, and that encrypted PDFs are rejected with decrypt advice. This adds concrete behavioral context (idempotent rewrite into a new artifact, encryption failure mode) that readOnlyHint/destructiveHint alone do not convey.

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?

Every sentence carries a distinct, decision-relevant rule (purpose, prerequisite, value typing, immutability, return format, encryption failure) with the core action front-loaded in the first clause. No filler or restatement of the name or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the prerequisite tool, input value constraints, immutability guarantee, encryption error path, and output delivery method for a tool with nested object params and an output schema. Nothing an agent needs to invoke it correctly is missing.

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?

Schema coverage is 100%, so the baseline is 3, but the description adds real semantics the schema lacks: all values are strings, checkboxes take "true"/"false", dropdown/radio/optionlist values must be one of the field's options, and text values must respect maxLength from pdf_inspect. It is not a 5 because 'flatten' is only explained by the schema, not the description.

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 and resource ('Fill AcroForm form fields in a PDF') plus the return behavior ('return the result'). Names the sibling pdf_inspect as a prerequisite, so an agent can distinguish it from pdf_merge/pdf_invoice without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit sequencing instruction ('Field names must exist in the PDF (use pdf_inspect first)'), which tells the agent when to reach for this tool and what must precede it. It stops short of stating when NOT to use it or comparing it against pdf_merge/pdf_invoice, so it is clear context without full alternative routing.

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

pdf_inspectInspect PDF form fieldsA
Read-onlyIdempotent
Inspect

List a PDF's AcroForm form fields — names, types, options, current values, per-field maxLength where declared — plus a paste-ready fillTemplate object for pdf_fill and a hasXFA flag (hybrid AcroForm/XFA inputs lose their XFA layer when filled). A PDF with no fillable form returns count 0. Read-only: the PDF is fetched but never modified. Call this FIRST when filling an unfamiliar PDF, since pdf_fill rejects unknown field names and over-length values.

ParametersJSON Schema
NameRequiredDescriptionDefault
pdf_pathYesPDF source: an https:// URL or a data:application/pdf;base64,… URI (this hosted server cannot read local file paths).

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYesNumber of form fields found; 0 when the PDF has no fillable form
fieldsYesOne entry per form field, in document order
hasXFAYesTrue for hybrid AcroForm/XFA documents, whose XFA layer is dropped when filled
truncatedYesTrue when the form exceeded an API enumeration cap; fields is then a prefix, not the full list
fillTemplateYesField name to empty-or-current value, ready to edit and pass to pdf_fill

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), but the description adds real behavioral context beyond them: XFA data loss on hybrid inputs when filled, and the fill-time rejection semantics of unknown/over-length fields. The 'read-only, never modified' sentence partially duplicates readOnlyHint, which keeps this from a 5.

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?

Three front-loaded sentences with no filler: what is returned, the XFA/empty-form caveats, then the read-only guarantee and the call-first guidance. Every clause carries actionable information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, yet the description still usefully summarizes the return shape, and it covers the one input constraint, the ordering prerequisite relative to pdf_fill, and the data-loss caveat. Nothing needed to call it correctly is missing.

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?

Only one parameter (pdf_path) and schema description coverage is 100%, so the schema already specifies the accepted URL/data-URI forms and the no-local-paths limitation. The description adds no parameter-level detail, so the baseline of 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 + resource (list AcroForm form fields) and enumerates exactly what is returned: names, types, options, current values, maxLength, plus a fillTemplate object and hasXFA flag. It also implicitly distinguishes itself from pdf_fill by being the read-side counterpart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says to call this FIRST when filling an unfamiliar PDF and names the reason (pdf_fill rejects unknown field names and over-length values), which routes the agent to the correct sibling and ordering. It also states the empty-form case ('returns count 0') so the agent knows how to interpret a null result.

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

pdf_invoiceGenerate invoice PDFA
Idempotent
Inspect

Generate a complete, professionally laid-out invoice PDF from structured data — no template needed. Deterministic: the same input produces byte-identical output (safe to re-run). Note: without a paid PDFops key the output carries a small "Generated with pdfops.dev" footer line. Returns the invoice inline as an application/pdf resource. Use this when you have invoice DATA and no document; if you already have an invoice PDF or a fillable template to populate, use pdf_fill instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
invoiceYesInvoice data

Output Schema

ParametersJSON Schema
NameRequiredDescription
bytesYesSize of the produced PDF in bytes
resource_uriNopdfops:// uri of the inline application/pdf resource

TDQS

A4.5/5.0
Behavior4/5

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

Annotations declare idempotentHint and openWorldHint, and the description reinforces determinism ('byte-identical output, safe to re-run') plus two facts not in annotations: the unlicensed watermark footer and the inline application/pdf return format. It stops short of stating auth/permission requirements beyond the key note, so it adds real value without being exhaustive.

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?

Four sentences, front-loaded with the core capability before the determinism, watermark, and routing notes. Every sentence carries actionable information with no padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter nested-object tool with an output schema and rich annotations, the description covers the value proposition, determinism, licensing caveat, return format, and sibling routing. Nothing an agent needs to call it correctly is missing.

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 the single nested invoice object is fully documented in-schema (date format, currency pattern, item constraints), so the description adds no parameter-level detail. Baseline 3 is appropriate when the schema carries the burden.

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 (Generate) and resource (invoice PDF) with scope ('from structured data — no template needed'). It explicitly names the sibling it is not (pdf_fill) and the condition that distinguishes them, so an agent can route without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use ('when you have invoice DATA and no document') and when-not ('if you already have an invoice PDF or a fillable template... use pdf_fill instead'). The alternative is named with its selecting condition, leaving nothing to inference.

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

pdf_mergeMerge PDFsA
Idempotent
Inspect

Merge two or more PDFs into one, in the order given, and return the result. Sources are read only and never modified. Returns the merged PDF inline as an application/pdf resource. This tool only concatenates whole documents: it does not reorder, rotate or delete pages within them, and it does not fill forms — use pdf_fill for a fillable form and pdf_invoice to build a document from data. An unreadable or rejected input fails with an error, so a partial merge is never returned.

ParametersJSON Schema
NameRequiredDescriptionDefault
pdf_pathsYesIn order, each a PDF source: an https:// URL or a data:application/pdf;base64,… URI (this hosted server cannot read local file paths).

Output Schema

ParametersJSON Schema
NameRequiredDescription
bytesYesSize of the produced PDF in bytes
resource_uriNopdfops:// uri of the inline application/pdf resource

TDQS

A4.9/5.0
Behavior5/5

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

Goes well beyond annotations by disclosing that sources are read-only and never modified, that the output is returned inline as an application/pdf resource, that only whole documents are concatenated, and that failures abort rather than yield a partial merge. Consistent with readOnlyHint=false (it produces a new artifact) with no contradiction.

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?

Front-loads the core action and return type, then scopes limits and alternatives. Every sentence carries distinct information with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/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 details are optional, yet the description still confirms the inline resource form and error behavior. For a one-param merge tool with sibling alternatives, nothing needed to call it correctly is missing.

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?

Schema coverage is 100% and there is a single param, so the schema already defines the accepted URI forms. The description still adds value by emphasizing 'in the order given', clarifying that array ordering is semantically significant.

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 and resource (merge PDFs into one, in order given) plus the return form. It distinguishes itself from siblings by naming pdf_fill and pdf_invoice as the tools for non-concatenation tasks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly scopes when to use this vs alternatives: only whole-document concatenation, no reorder/rotate/delete, and names pdf_fill and pdf_invoice with the conditions that select them. Includes the negative case (unreadable input fails).

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

pdfops_usageCheck PDFops quotaA
Read-onlyIdempotent
Inspect

Check the current PDFops API quota for the configured key: tier, limit, used, remaining, the billing period, and the reset timestamp. Read-only and safe to call before a batch to confirm there is headroom. Uses the API key this connection authenticated with.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
tierYesPlan name, e.g. free
usedYes
limitYesCalls allowed in the current period
periodYesBilling period the counts belong to, YYYY-MM
remainingYes
resets_atYesISO 8601 timestamp when used resets to 0

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds meaningful context beyond that: it discloses the auth dependency ('Uses the API key this connection authenticated with'), which is not derivable from the 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?

Two compact sentences, front-loaded with the core action, then the return payload, then the safe-to-call guidance. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/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 needn't explain return values, and the annotations cover safety. The addition of auth scoping and the pre-batch use case makes this complete for a no-param read tool.

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?

Zero parameters, so the baseline is 4 per the rubric. There is nothing further the description could add on parameter semantics.

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+resource ('Check the current PDFops API quota') and enumerates the exact fields returned. It is unmistakably distinct from the pdf_* operation siblings, which all act on documents rather than account state.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear usage context: 'Read-only and safe to call before a batch to confirm there is headroom,' which tells the agent when to reach for it. It stops short of naming alternatives or explicit when-not-to-use conditions, so it falls just shy of a 5.

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. 5 tool updates
    • First observedpdf_fill
    • First observedpdf_inspect
    • First observedpdf_invoice
    • First observedpdf_merge
    • First observedpdfops_usage

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Gives AI agents tools to read PDFs, list form fields, apply operations, highlight, add notes, fill fields, place signatures, list signatures, and flatten PDFs.
    1
    AGPL 3.0
  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to perform comprehensive PDF operations locally, including compression, text extraction, PII redaction, page organization, splitting, merging, watermarking, creation, and form filling, all without cloud uploads.
    6 npm
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to parse and analyze PDF invoices, including text, field, and table extraction, OCR for scanned documents, ZUGFeRD support, compliance validation, and batch processing via MCP.
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.