veraPDF by pagespool
Server Details
Hosted veraPDF: check a PDF against PDF/A or PDF/UA and get the full validation report.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 2 tools
The two tools target clearly distinct standards: PDF/UA accessibility checking versus PDF/A archival validation. Descriptions and profile parameters make the boundary unambiguous.
Both names are snake_case verb+object, but the verbs differ (check vs validate) and the objects use different conventions (pdf_accessibility vs pdfa). A more predictable pattern would be validate_pdf_ua and validate_pdf_a.
Only two tools, but each maps to a genuine validation standard and neither is redundant. The surface is narrow yet well matched to the server's focused purpose.
Core PDF/UA and PDF/A validation are covered with profile selection in each tool. Full reports are intentionally delegated to the REST API, which is a minor gap rather than a blocking omission.
Available Tools
2 toolscheck_pdf_accessibilityCheck a PDF's accessibility against PDF/UAARead-onlyInspect
Check whether a PDF is accessible by PDF/UA, the ISO standard for accessible PDF.
veraPDF checks the machine-checkable rules of PDF/UA: tags, structure, alt text present, fonts, metadata. Whether alt text or reading order make sense still needs a person.
Input: pdf_base64 is the PDF as base64, at most 4 MB decoded; or pass the
file as a download link in file. profile is "ua1" or "ua2".
Returns compliant (true or false), profile_name, statement,
passed_rules, failed_rules and top_failed_rules: up to 10 failed rules
with their id (clause and test number), specification, description and
failed_checks. A file that is not a PDF fails with not_a_pdf; an
unavailable veraPDF with engine_unavailable. For the full report, use the
REST API (POST /v1/verapdf/api/validate/ua1).
Credits: 10 per call.
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | The file as a download link, instead of `pdf_base64`. In ChatGPT, pass the user's uploaded file here. Other clients can set `download_url` to a public https URL. | |
| profile | No | "ua1" (the default) checks against PDF/UA-1 (ISO 14289-1), "ua2" against PDF/UA-2 (ISO 14289-2). | ua1 |
| pdf_base64 | No | The PDF, base64-encoded. At most 4 MB decoded. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readOnlyHint and openWorldHint, the description discloses important behavioral limits: only machine-checkable PDF/UA rules are covered, human review remains necessary, inputs are capped at 4 MB decoded, specific failure codes exist (not_a_pdf, engine_unavailable), and each call costs 10 credits.
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 front-loaded with purpose, then scope caveat, inputs, outputs/errors, and cost. Most sentences earn their place, though the detailed return-field enumeration overlaps with the output schema and makes it denser than strictly necessary.
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?
For a read-only validator with an output schema, the definition is complete: it explains the standard, the scope of automated checking, input alternatives and size limit, profile choice, key return fields, error cases, and credit cost.
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 explains pdf_base64, file, and profile. The description restates the two input paths and the ua1/ua2 choice but adds little format or selection meaning beyond what the schema already 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 states a specific verb and resource: check whether a PDF is accessible under PDF/UA, the ISO standard for accessible PDF. This clearly distinguishes it from the sibling validate_pdfa, which concerns PDF/A rather than accessibility, without needing to name it.
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?
It clearly frames the tool as a PDF/UA accessibility check and notes that human review is still needed for semantic issues like alt text quality and reading order. It does not explicitly route between this and validate_pdfa, but the standards differ enough that the intended use is evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_pdfaValidate a PDF against PDF/AARead-onlyInspect
Check whether a PDF conforms to PDF/A, the ISO archiving standard, with veraPDF.
Input: pdf_base64 is the PDF as base64, at most 4 MB decoded; or pass the
file as a download link in file. profile picks the PDF/A part and level.
Returns compliant (true or false), profile_name (the profile veraPDF
used), statement, passed_rules, failed_rules and top_failed_rules:
up to 10 failed rules with their id (clause and test number),
specification, description and failed_checks. A file that is not a PDF
fails with not_a_pdf; an unavailable veraPDF with engine_unavailable.
For the full report in JSON, XML or HTML, use the REST API
(POST /v1/verapdf/api/validate/{profile}).
Credits: 2 per call.
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | The file as a download link, instead of `pdf_base64`. In ChatGPT, pass the user's uploaded file here. Other clients can set `download_url` to a public https URL. | |
| profile | No | The PDF/A part and level, such as "2b" or "3a". "auto" (the default) checks against the part the file declares, and against PDF/A-1b when it declares none. | auto |
| pdf_base64 | No | The PDF, base64-encoded. At most 4 MB decoded. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare read-only and open-world behavior; the description goes well beyond by disclosing the 2-credit cost, the 4 MB decoded size ceiling, and the specific failure modes (`not_a_pdf`, `engine_unavailable`). That tells an agent the real operational constraints of an external-engine call.
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?
Front-loads the purpose in one sentence, then organizes inputs, outputs, errors, and cost into short blocks with no filler. The enumerated return fields are somewhat verbose given an output schema exists, keeping it just short of a 5.
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?
For a read-only validation call with a nested file object and an output schema, the description covers input alternatives, limits, cost, error codes, and where to go for a fuller report. 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the description mostly restates it — the 4 MB limit on `pdf_base64` and the meaning of `profile` are already in the schema, including the `auto` fallback behavior. It confirms the intended one-of input pairing but adds no new semantics, 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 (check conformance), resource (a PDF), and the exact standard and engine (PDF/A ISO archiving standard, veraPDF). This is far more precise than the sibling check_pdf_accessibility, which targets a different property of the same file type.
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?
Explains the two mutually exclusive input routes (inline base64 vs. a download link) and redirects to the REST API when a full JSON/XML/HTML report is needed. It never explicitly says when to prefer this over check_pdf_accessibility, so sibling 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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- First observed
check_pdf_accessibility - First observed
validate_pdfa
Related MCP Connectors
Hosted EPUBCheck: check an EPUB file against the EPUB specification and list every error.
11PDF accessibility checks (veraPDF PDF/UA-1), auto-fix and Markdown conversion. EU-hosted.
Hosted OCRmyPDF: add a searchable text layer to scanned PDFs and images, returned as PDF/A.
21Check PDFs against PDF/UA-1 with veraPDF; see which failures an automatic fix removes; explain rules
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables auditing a local PDF against machine-checkable PDF/UA accessibility basics and returns an actionable JSON report with checks, failures, route, and verdict, entirely offline without uploading the document.MIT

invowerkofficial
AlicenseNot gradedqualityBmaintenanceEnables creating ZUGFeRD PDFs and XRechnung invoices and validating ZUGFeRD/Factur-X, XRechnung (KoSIT), and Peppol BIS e-invoices through an MCP endpoint, returning validation reports.MIT- AlicenseAqualityCmaintenanceValidates electronic invoices (XRechnung, ZUGFeRD, Factur-X, Peppol BIS, etc.) against authority-pinned rules and explains failures.2156 npmMIT
- AlicenseAqualityBmaintenanceEnables cryptographic PDF signature verification, tamper detection, PAdES baseline level determination, and PDF/A/PDF/UA conformance validation, along with policy-based trust verdicts.7101 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.