Ebook File Check
Server Details
Run EPUBCheck for EPUB specification errors and compare two exports.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
TDQS
Scored across 2 tools
The two tools have clearly distinct purposes: one validates a single EPUB, the other compares exactly two builds. There is no overlap or ambiguity in their intended use cases.
Both tools follow the same 'ebook_' prefix followed by a concise action verb (check, compare), creating a predictable and consistent naming pattern.
With only two tools, the surface is minimal, which is borderline per the rubric. However, the server's scope is narrowly defined around EPUB validation, so the small count is reasonable but still feels thin.
The two tools cover the essential operations for the domain: validating a single file and comparing revisions for regressions. No obvious gaps exist for the stated purpose of automated conformance checking.
Available Tools
2 toolsebook_checkARead-onlyInspect
Validates one EPUB (a directly hosted public URL or a file attached in chat) against the EPUB 2/3 specification using a pinned local EPUBCheck 5.3.0 engine run in a no-network sandbox. Each call takes exactly one source: the url parameter or the file attachment, never both. Returns the automated verdict: pass boolean, EPUB version, message counts by severity (fatal/error/warning/usage), findings grouped most-severe-first with EPUBCheck rule id (RSC-005, OPF-014, …), file path and line/column, plus a structural inventory (spine items, media types, remote-resource state), SHA-256 of the exact bytes, and truncation metadata. Use for one-file readiness and diagnosis: 'is this ebook valid', 'does this EPUB have specification problems before upload', 'what is wrong with it'. A pass means only that the bytes satisfied the automated profile; it never renders the book, judges accessibility, or guarantees any store will accept it, and human review of how the book reads and looks is always required. Downloads and validates a live EPUB in about five to seven seconds, hard-bounded at the 110-second call deadline.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Direct public HTTP(S) URL to the EPUB file bytes, including the protocol, not a ChatGPT file id, local path, cloud-drive share, archive/viewer page, or authenticated URL needing a login. Each call takes either URL sources or attached-file sources, never both STRICT RULE: Ebook check failed: provide either an EPUB URL or an attached EPUB file, not both STRICT RULE: Ebook check failed: provide a public EPUB URL or attach the EPUB file | |
| file | No | An EPUB file attached in chat, up to 25 MB, validated from its exact bytes. Provide either this attachment or url, never both. | |
| maxMessages | No | Maximum spec findings to return, most severe first (default 200); raise it to see more of a very noisy book, lower it to keep the answer short |
Output Schema
| Name | Required | Description |
|---|---|---|
| pass | Yes | True when the EPUB has no fatal or error messages against the automated profile |
| bytes | Yes | Downloaded EPUB size in bytes |
| counts | Yes | Counts of EPUBCheck findings grouped by severity |
| sha256 | Yes | SHA-256 hash of the exact validated bytes |
| finalUrl | Yes | URL after redirects, with query string and fragment stripped |
| findings | Yes | Bounded spec findings, most severe first, capped by maxMessages |
| fetchedAt | Yes | ISO timestamp the EPUB was fetched and validated |
| inventory | Yes | Structural inventory reported for the EPUB container |
| nonclaims | Yes | What this automated result does not establish |
| redirects | Yes | Redirect hops followed |
| truncation | Yes | Finding totals and the applied limit on returned findings |
| contentType | No | Content-Type the server returned |
| epubVersion | No | Detected EPUB version, e.g. 2.0.1 or 3.0; omitted when the engine could not detect it |
| processingMs | Yes | Total processing time in milliseconds |
| requestedUrl | Yes | The checked EPUB source: the submitted URL with query and fragment stripped, or the attached file's name |
| engineVersion | Yes | EPUBCheck engine version that produced the verdict |
| ruleProfileDate | Yes | Release date of the pinned EPUBCheck rule profile |
| humanReviewItems | Yes | Checks only a qualified human can perform |
| epubVersionDetected | Yes | Distinguished state: false means the version could not be detected, distinct from a detected-but-invalid version |
| humanReviewRequired | Yes | Always true: automated conformance never covers how the book reads or renders |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true, openWorldHint=true, and destructiveHint=false already covering the safety profile, the description adds important operational behavior: the engine is pinned to 5.3.0, runs with no network access, validates from exact bytes, and is bounded at 110 seconds. It also clearly states the pass verdict is only an automated profile, not a store guarantee — a meaningful limitation beyond 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the tool's core functionamp;engine, then the input constraint, then output summary, then usage guidance and caveats. It is fairly long but every sentence adds distinct information: validation target, single-source rule, result contents, use cases, pass limitations, and performance expectation. Minor redundancy between the input constraint and schema wording keeps it from 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?
The description tells the agent what the tool does, what counts as input, what the output contains (pass boolean, messages, RSC IDs, locations, truncation), how long it may take (110s deadline), and what a pass does not mean. Combined with a rich schema and safety annotations, nothing necessary for correct invocation or result interpretation 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 coverage is 100%: url, file, and maxMessages each have type, constraints, and semantic descriptions. The description does not add parameter-level meaning beyond the schema, and the main added constraint (only one of url/file, never both) is already stated in the schema itself. Baseline 3 is appropriate.
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 opens with a specific verb and resource: 'Validates one EPUB ... against the EPUB 2/3 specification' using 'a pinned local EPUBCheck run in a no-network sandbox.' It unambiguously identifies the action, input type, and validation standard, while the one-file/one-source constraint differentiates it from any bulk or multi-file checker.
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 description gives concrete example use cases ('is this ebook valid', 'what is wrong with it') and states the single-source constraint (URL or attached file, never both). It also clarifies that a pass does not guarantee store acceptance—an implicit exclusion of over-reliance. It does not explicitly contrast with the sibling ebook_compare tool, but the one-file framing effectively scopes it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ebook_compareARead-onlyInspect
Runs the identical pinned EPUBCheck 5.3.0 validation over exactly two EPUB builds (directly hosted public URLs or files attached in chat, baseline first, revised second) sequentially under one shared 110-second deadline, then reports which spec findings regressed or were fixed between them. Returns per-build hashes, EPUB versions, pass verdicts and severity counts, a regressions list (rules that appear or worsen in the revised build) and a fixed list (rules removed or reduced), and a ranking by pass state then fewer blocking findings. Use for 'did my re-export get worse', 'which build has fewer problems', and revision-over-revision questions. The ranking orders automated conformance only (it never means one build renders, reads, or sells better), and when both builds tie on pass state and blocking count it names no winner rather than crowning the first submission. It also flags when the two files declare different titles, since that usually means they are not two builds of one book. Human review remains required for both builds. A comparison measures about ten to fifteen seconds, hard-bounded at the shared 110-second deadline.
| Name | Required | Description | Default |
|---|---|---|---|
| urls | No | Exactly two distinct direct public HTTP(S) EPUB URLs: the baseline build first, the revised build second. Provide either these URLs or files, never both. STRICT RULE: Ebook compare failed: provide either two EPUB URLs or two attached EPUB files, not both STRICT RULE: Ebook compare failed: provide two public EPUB URLs or attach two EPUB build files | |
| files | No | Exactly two distinct EPUB builds attached in chat: the baseline build first, the revised build second. Provide either these attachments or urls, never both. | |
| maxMessages | No | Maximum findings to collect per build for the comparison (default 150) |
Output Schema
| Name | Required | Description |
|---|---|---|
| fixed | Yes | Rules removed or reduced in the revised build versus the baseline |
| limits | Yes | Conclusions this automated comparison cannot support |
| ranking | Yes | Builds ranked by pass state then fewer blocking findings; unvalidatable builds last |
| documents | Yes | Per-build hashes, versions, and verdicts in submitted order (baseline first, revised second) |
| nonclaims | Yes | What these automated results do not establish |
| truncated | Yes | True when either build's findings were truncated, which can make the difference table incomplete |
| comparedAt | Yes | ISO timestamp of the comparison |
| regressions | Yes | Rules that appear or worsen in the revised build versus the baseline |
| processingMs | Yes | Total processing time in milliseconds |
| engineVersion | Yes | EPUBCheck engine version that produced the verdicts |
| ruleProfileDate | Yes | Release date of the pinned EPUBCheck rule profile |
| humanReviewItems | Yes | Checks only a qualified human can perform |
| humanReviewRequired | Yes | Always true: automated conformance never covers how either build reads or renders |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already say read-only/non-destructive; the description goes beyond them by disclosing sequential execution, the shared 110-second hard deadline, the automated-only ranking caveat, the no-winner tie policy, and the different-title warning. This is substantial behavior-context benefit over structured fields.
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 core function, then adds use cases, caveats, and timing in a logical order. It is fairly long, but the behavioral caveats are consequential enough that most sentences earn their place; a bit of redundancy with the schema could be trimmed.
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 comparison tool with 100% schema coverage and an output schema, the description adds the essential behavioral context: deadline, ordering convention, tie/ranking policy, title-mismatch warning, and human-review need. Nothing critical needed by an agent to invoke correctly appears 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 coverage is 100%, so the schema already documents urls, files, and maxMessages. The description reinforces the baseline-first/revised-second ordering and the 'never both' constraint that are largely already in the schema descriptions, adding no major new parameter meaning.
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 highly specific verb and resource: runs a pinned EPUBCheck 5.3.0 comparison over exactly two EPUB builds and reports regressed/fixed findings. The purpose is distinct from the likely single-build sibling ebook_check by emphasizing two-build comparison and revision-over-revision questions.
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?
Gives concrete use cases ('did my re-export get worse', 'which build has fewer problems', revision-over-revision questions) and clear ordering rules (baseline first, revised second). Does not explicitly contrast with ebook_check or state when not to use it, but the two-build framing makes the intended context reasonably clear.
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
ebook_check - First observed
ebook_compare
Related MCP Connectors
EPUB/PDF tools: merge, split, compress, convert, edit metadata, validate ebooks.
Validate HTML/CSS, audit SEO and JSON-LD, check links, and capture responsive screenshots.
Parse WebVTT, SRT, or TTML for conformance, timing, overlaps, line length, and reading speed.
PDF accessibility checks (veraPDF PDF/UA-1), auto-fix and Markdown conversion. EU-hosted.
Related MCP Servers
- AlicenseAqualityBmaintenanceCompare design and implementation screenshots using pixel-by-pixel analysis, generating visual diff images and metrics.113MIT
- AlicenseNot gradedqualityAmaintenanceValidates Excel (.xlsx) workbooks against reviewed, lockable acceptance contracts, catching errors and outputting structured issues that agents can repair.1MIT
- FlicenseNot gradedqualityBmaintenanceValidates OpenAPI documents, JSON Schemas, and JSON payloads. Also compares OpenAPI specs and displays breaking changes.-
- AlicenseAqualityCmaintenanceValidates electronic invoices (XRechnung, ZUGFeRD, Factur-X, Peppol BIS, etc.) against authority-pinned rules and explains failures.2172MIT