Skip to main content
Glama

Fullbleed MCP

First-party, local MCP tools for Fullbleed PDF Engine. The server lets agents discover the installed engine and create, preview, inspect, verify, and compile deterministic print documents through a small structured tool surface.

Install and run

python -m pip install fullbleed-mcp
fullbleed-mcp --root .

Fullbleed MCP 0.1.1 requires Fullbleed 2.5.1 or newer. This includes the tool schema correction needed by strict MCP clients. To update an existing install:

python -m pip install --upgrade fullbleed-mcp

The initial transport is newline-delimited JSON-RPC over stdio. User-supplied document paths are confined to --root. The server does not require credentials, network access, a browser, system fonts, or a system PDF runtime.

The adapter delegates rendering and discovery to the installed fullbleed distribution. It does not maintain a second renderer or capability database. Start with fullbleed_capabilities or fullbleed_agent_contract and trust their runtime-reported values.

Use this server for structured reports, invoices, statements, letters, forms, certificates, accessible/print-ready documents, template overlays, and VDP. Use a browser tool when the requested artifact is a screenshot or interactive state of an arbitrary live website.

Related MCP server: inclusio-mcp

Direct core entrypoint

Fullbleed also exposes the same dependency-free adapter directly. Use version 2.5.1 or newer for compatibility with strict MCP clients:

fullbleed mcp --root .

The separate fullbleed-mcp distribution exists for package and MCP Registry discovery and keeps optional agent-integration installation separate from pip install fullbleed.

Run with Docker

The optional repository-root Dockerfile packages the stdio server for container users and MCP directories. It builds the adapter from this repository and installs the released Fullbleed 2.5.1 engine from hash-checked Linux wheels. It does not add Docker or other dependencies to the Python package.

From the repository root:

docker build -t fullbleed-mcp:local .
docker run --rm -i --network none --mount "type=bind,source=/absolute/path/to/documents,target=/workspace" fullbleed-mcp:local

Replace the source path with an existing directory. The image runs as UID/GID 10001:10001, and document paths are relative to /workspace. On Linux, add --user "$(id -u):$(id -g)" before the image name to write a directory owned by your current user. Keep -i and omit -t when connecting an MCP client over stdio.

The MCP container workflow builds the image and exercises initialization, tool discovery, previews, inspection, verification, and three-record VDP output. Its smoke run disables networking, makes the image read-only, and checks that a tool cannot read outside its document workspace. A second check uses the official TypeScript MCP SDK to validate tool discovery and structured results against the running container. To run these checks locally:

python tools/smoke_mcp_stdio.py --container-image fullbleed-mcp:local --json
npm ci --ignore-scripts --no-audit --no-fund --prefix tools/mcp-client-smoke
node tools/mcp-client-smoke/smoke.mjs --container-image fullbleed-mcp:local

container-requirements.txt pins the released engine used by this distribution. Update its version and wheel hashes when intentionally moving the container to a new engine release. glama.json identifies the maintainer for the Glama directory; it does not imply that a directory has approved or scored the server.

Registry metadata

server.json is generated from this package's [tool.fullbleed-mcp.registry] metadata:

python tools/generate_mcp_server_json.py --check --json

Publish the PyPI distribution before submitting server.json; the official registry verifies the matching mcp-name marker above from the PyPI long description. Registry publication is prepared in .github/workflows/publish-mcp.yml and uses the io.github.fullbleed-engine/fullbleed-mcp namespace.

Available Tools

11 tools
fullbleed_agent_contractFullbleed agent contractA
Read-onlyIdempotent

Read the canonical installed contract: version, commands, schemas, capabilities, profiles, examples, limitations, and recommendation boundary.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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, destructiveHint=false and openWorldHint=false, so the safety and determinism profile is fully covered by structured data. The description adds the notion that the contract is 'canonical installed', i.e., reflects the live installation, which is genuinely useful context, but it says nothing about size, pagination, or freshness beyond that.

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?

A single front-loaded sentence with no preamble or filler. The trailing enumeration of contents is long but each item carries information, so it stays on the right side of the conciseness line.

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, the description need not explain return values, and with full annotation coverage the safety profile is handled. Listing the contract's sections is enough for an agent to decide to call it; the only real gap is disambiguation from fullbleed_capabilities.

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 are no parameter semantics to document and the baseline is 4. Nothing in the description misrepresents the argument surface.

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 (Read) and resource (the canonical installed contract) and enumerates what that contract contains (version, commands, schemas, capabilities, profiles, examples, limitations, recommendation boundary). It is clear what the tool returns, though it does not explicitly differentiate itself from the overlapping sibling fullbleed_capabilities, which appears to cover a subset of the same content.

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 word 'canonical' implies this is the authoritative source to consult, which hints at when to use it. However, no alternative or condition is named — an agent cannot tell from the description whether to call this or the sibling fullbleed_capabilities first. Usage is implied rather than guided.

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

fullbleed_assetsManage Fullbleed assetsA
DestructiveIdempotent

Manage font, CSS, and icon packages with list, info, install, verify, or lock. Returns package details or operation results. Install writes workspace assets and may download supported remote packages. Use fullbleed_inspect for PDFs and fullbleed_verify for document validation.

ParametersJSON Schema
NameRequiredDescriptionDefault
addNoFor lock only: built-in package references to add/update, for example ["@noto-sans", "@bootstrap"]. Omit to preserve existing entries or create an empty lock file; this does not scan arbitrary project files.
actionYeslist shows built-in and cached packages; info describes one package; install vendors it; verify checks package presence/hashes and optional lock constraints; lock creates or updates a lock file using add.
strictNoFor verify only: report a lock mismatch as a tool error. Defaults to false, which returns the verification result with ok=false and violations instead.
packageNoPackage name/reference, such as 'noto-sans' or '@bootstrap'. Required for info, install, and verify; ignored for list and lock. Use list to discover supported names.
availableNoFor list only: include the catalog of supported remote packages in addition to built-in and cached packages. Defaults to false.
lock_pathNoLock file under the MCP workspace root. For verify it must exist; omission skips lock comparison. For lock it is created or updated and defaults to 'assets.lock.json'.
vendor_pathNoFor install only: destination directory under the MCP workspace root, default 'vendor'. Existing matching asset files may be replaced.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations declare openWorldHint, destructiveHint, and idempotentHint, so the safety profile is partly covered; the description adds real context beyond them by disclosing that install writes workspace assets and may download remote packages, and that results are package details or operation results. It stops short of telling the agent which of the five actions is the destructive one.

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 sentences, front-loaded with the verb-resource-actions summary, then the side-effect disclosure, then the routing hint. No sentence is redundant with another.

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?

For a seven-parameter, five-action, open-world tool with a full output schema and rich parameter docs, the description supplies the essentials: scope of actions, write/download behavior, and alternative tools. The remaining gap is which actions are read-only versus destructive, which annotations partly imply but do not attribute to specific actions.

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 parameter descriptions already explain per-action applicability, defaults, and constraints, so the schema carries the load. The description adds only marginal parameter meaning ('lock ... using add', 'install writes workspace assets') beyond what is already documented.

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 resource (font, CSS, icon packages) and enumerates the five operations (list/info/install/verify/lock), so an agent knows exactly what the tool does. Sibling differentiation is only partial: it names fullbleed_inspect and fullbleed_verify as alternatives, but does not distinguish itself from the other eight siblings such as fullbleed_compile or fullbleed_render.

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?

Explicitly routes the agent away from this tool for two adjacent tasks ('Use fullbleed_inspect for PDFs and fullbleed_verify for document validation'). It gives clear context for the mutating install path but never states when-not to use it against the remaining asset-adjacent siblings.

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

fullbleed_capabilitiesFullbleed capabilitiesA
Read-onlyIdempotent

Read the installed runtime's compact feature map and PDF profile requirements before choosing features. Use fullbleed_agent_contract for command schemas, workflow examples, and detailed limitations.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds limited extra behavioral context by naming the content type (feature map, PDF profile requirements), but it does not disclose caching, auth requirements, or other operational traits. A 3 is appropriate given the annotations carry the main behavioral load.

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 sentences, both front-loaded and purposeful. The first sentence states what is read and when; the second routes to the alternative tool. 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?

For a zero-parameter read-only capability query with rich annotations and an output schema, the description supplies everything an agent needs: what is returned, when to call it, and where to go for deeper schemas or limitations. Return-value details are correctly left to the output schema.

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, and schema coverage is 100%, so the schema fully defines the call shape. The description appropriately avoids repeating parameter details; baseline 4 applies for a zero-param tool.

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?

The description states a specific verb and resource: 'Read the installed runtime's compact feature map and PDF profile requirements.' It also distinguishes this tool from fullbleed_agent_contract by assigning the latter to command schemas and detailed limitations, letting an agent route correctly without inspecting schemas.

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?

It gives an explicit timing rule ('before choosing features') and names the alternative tool with its specific purpose for other needs. This is a clear when-to-use and when-to-use-else statement.

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

fullbleed_compileCompile a document familyA
Destructive

Compile inline HTML/CSS and return compile_id plus template statistics for repeated calls to fullbleed_render_compiled. Handles belong to this server process; restart or eviction after 64 retained handles requires recompiling. Use fullbleed_compile_vdp for a single variable-data job without retaining a handle.

ParametersJSON Schema
NameRequiredDescriptionDefault
cssNoOptional inline print CSS; defaults to an empty stylesheet. Use @page for page size and margins. Compilation tools do not accept css_paths.
htmlYesNonempty inline static HTML. For variable records use {{slot_name}} placeholders and supply a bindings column for every slot. Compilation tools accept markup, not html_path.
font_pathsNoExisting embeddable font files under the MCP workspace root. Register these fonts before rendering; do not rely on system fonts. Relative paths are resolved from the server's --root.
pdf_vt_jobNoOptional Job/Record/Document hierarchy and private Fullbleed DPM for pdf_profile='pdfvt1'. Omit records to generate one record and document per input, compiled copy, or binding row.
pdf_profileNoPDF export profile; omitted means ordinary PDF. Read fullbleed_capabilities.pdf_profile_catalog for names and font, ICC, title, and timestamp requirements. This is separate from the render tool's dev/preflight/prod preset.
document_langNoDocument language for PDF metadata, as a BCP-47 tag such as 'en-US'.
document_titleNoHuman-readable title stored in PDF metadata. Required for pdfx4 and pdfvt1 output.
document_timestampNoPDF write date: UTC YYYY-MM-DDTHH:MM:SSZ, 'current', or 'source-date-epoch' (reads SOURCE_DATE_EPOCH). Required for pdfx4 and pdfvt1. Resolved once per engine; use an explicit value for repeatable output.
output_intent_infoNoOptional human-readable description of the output condition. Requires output_intent_icc_path.
output_intent_icc_pathNoExisting ICC profile file under the MCP workspace root, used as the PDF output intent. Required by PDF/A, PDF/X, and PDF/VT profiles.
output_intent_componentsNoICC color-component count: 1 for gray, 3 for RGB, 4 for CMYK. Defaults to 3 and must match the profile supplied by output_intent_icc_path.
output_intent_identifierNoNonblank output-condition identifier for the ICC output intent; defaults to 'Custom'. Requires output_intent_icc_path.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, non-idempotent and non-read-only, so safety is covered. The description adds genuinely useful context the annotations cannot: the returned handle is process-scoped, dies on restart, and is evicted after 64 retained handles, forcing recompilation. It still does not say what the compile writes or whether recompiling is cheap, which keeps it short of 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 sentences, no filler: artifact/return value first, then the handle lifecycle caveat, then the alternative route. Every sentence earns its place and the most decision-relevant information is front-loaded.

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, the description needn't explain returns, and it correctly focuses on what structured data cannot convey: handle lifetime and the sibling split. The remaining gap is behavioral detail around the destructive/non-idempotent profile (what is written where, cost of recompiling), which matters for a 12-parameter compile tool.

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% across 12 parameters, including the nested pdf_vt_job hierarchy and profile requirements, so the schema carries the load. The description only reinforces the inline HTML/CSS nature of the input and adds nothing about individual parameters (profiles, intents, timestamps), which is the baseline 3 case.

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 ('Compile inline HTML/CSS') and names its output artifact (compile_id plus template statistics), which immediately distinguishes it from the render tools. It also explicitly differentiates itself from fullbleed_compile_vdp, 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 Guidelines4/5

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

Gives a clear when-to-use ('for repeated calls to fullbleed_render_compiled') and names an alternative (fullbleed_compile_vdp) with the condition that selects it (single variable-data job without retaining a handle). It does not address the other compile-adjacent siblings such as fullbleed_render or preflight presets, so routing is clear for the main fork but not exhaustive.

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

fullbleed_compile_vdpCompile and render a VDP jobA
DestructiveIdempotent

Compile inline HTML/CSS and render columnar variable records into one PDF, returning its path, counts, SHA-256, and compile/render metrics. Releases the temporary handle after rendering. Use fullbleed_compile plus fullbleed_render_compiled when reusing a template across calls.

ParametersJSON Schema
NameRequiredDescriptionDefault
cssNoOptional inline print CSS; defaults to an empty stylesheet. Use @page for page size and margins. Compilation tools do not accept css_paths.
htmlYesNonempty inline static HTML. For variable records use {{slot_name}} placeholders and supply a bindings column for every slot. Compilation tools accept markup, not html_path.
modeYesfixed_bindings substitutes text while preserving compiled geometry; reflow_bindings recalculates layout and page count for variable-length content. Check pdf_profile_catalog.fixed_bindings_supported before combining fixed bindings with a PDF profile.
bindingsYesColumnar records, for example {"name": ["Ada", "Lin"]}. Keys must match the compiled {{slot_name}} set exactly. Every column must be a nonempty string array of equal length; values at the same index form one record. Required for fixed_bindings and reflow_bindings; ignored in static mode.
font_pathsNoExisting embeddable font files under the MCP workspace root. Register these fonts before rendering; do not rely on system fonts. Relative paths are resolved from the server's --root.
pdf_vt_jobNoOptional Job/Record/Document hierarchy and private Fullbleed DPM for pdf_profile='pdfvt1'. Omit records to generate one record and document per input, compiled copy, or binding row.
compressionNoCompression strategy for reflow_bindings only; defaults to throughput. Use compact for smaller output at additional compression cost. Ignored in static and fixed_bindings modes.
output_pathYesDestination PDF under the MCP workspace root, relative to the server's --root. Parent directories are created; an existing file is replaced.
pdf_profileNoPDF export profile; omitted means ordinary PDF. Read fullbleed_capabilities.pdf_profile_catalog for names and font, ICC, title, and timestamp requirements. This is separate from the render tool's dev/preflight/prod preset.
document_langNoDocument language for PDF metadata, as a BCP-47 tag such as 'en-US'.
document_titleNoHuman-readable title stored in PDF metadata. Required for pdfx4 and pdfvt1 output.
document_timestampNoPDF write date: UTC YYYY-MM-DDTHH:MM:SSZ, 'current', or 'source-date-epoch' (reads SOURCE_DATE_EPOCH). Required for pdfx4 and pdfvt1. Resolved once per engine; use an explicit value for repeatable output.
output_intent_infoNoOptional human-readable description of the output condition. Requires output_intent_icc_path.
output_intent_icc_pathNoExisting ICC profile file under the MCP workspace root, used as the PDF output intent. Required by PDF/A, PDF/X, and PDF/VT profiles.
output_intent_componentsNoICC color-component count: 1 for gray, 3 for RGB, 4 for CMYK. Defaults to 3 and must match the profile supplied by output_intent_icc_path.
output_intent_identifierNoNonblank output-condition identifier for the ICC output intent; defaults to 'Custom'. Requires output_intent_icc_path.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, and idempotentHint=true, so the safety profile is covered. The description adds non-obvious lifecycle context ('Releases the temporary handle after rendering') and summarizes outputs, though the output schema already carries return values. It does not contradict 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?

Three front-loaded sentences with zero waste: purpose, lifecycle, then alternative routing. The output summary is brief and skimmable, earning its place without bloating the definition.

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?

For a complex 16-parameter tool with nested objects and an output schema, the description adequately covers purpose, alternative workflow, and handle lifecycle. It does not restate required parameters or PDF profile requirements, which the exhaustive schema and annotations already handle, so it is complete enough without being maximal.

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 16 parameters—including nested objects, enums, and PDF profile constraints—are fully documented in the schema. The description only briefly echoes 'inline HTML/CSS' and 'columnar variable records' without adding syntax or format detail beyond the schema, so the 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 specific verbs ('Compile and render') and resources ('inline HTML/CSS', 'columnar variable records', 'one PDF'), and explicitly distinguishes itself from fullbleed_compile plus fullbleed_render_compiled. An agent can tell this is the one-shot VDP compile-and-render tool without opening the 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 an explicit routing rule: use this tool for one-shot compile-and-render, and use fullbleed_compile plus fullbleed_render_compiled when reusing a template across calls. The alternative is named with the condition that selects it, leaving little to inference.

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

fullbleed_create_projectCreate a Fullbleed projectA

Create an agent-ready project or document scaffold in an absent or empty workspace directory; returns generated artifacts and next actions. Use this when starting a project, then render its source with fullbleed_render or fullbleed_render_preview.

ParametersJSON Schema
NameRequiredDescriptionDefault
templateNoScaffold to create: init supplies the general agent-ready project; invoice, statement, accessible, and reference select the corresponding document starter.init
target_pathNoDestination directory under the MCP workspace root. Defaults to that root and must be absent or empty; use a new subdirectory in an existing project..

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare the write/non-idempotent profile, and the description adds the key behavioral constraint that the target must be absent or empty plus the fact that artifacts and next actions are returned. It does not say what happens if the directory is non-empty, which is the main remaining gap.

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 tight sentences: the first states what is produced, the second gives the trigger and the follow-up tools. No filler and the important scoping constraint is front-loaded.

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?

With an output schema present, the description need not explain return values, and it still notes that artifacts and next actions come back. Combined with the annotations and complete schema, an agent has everything needed to invoke this correctly.

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%, with the template enum and target_path fully documented in the schema. The description's mention of an 'absent or empty workspace directory' merely restates the target_path constraint rather than adding syntax or format detail.

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 (create) and resource (agent-ready project or document scaffold), and names the sibling tools that consume the output (fullbleed_render, fullbleed_render_preview), so it is clearly distinguished from the render family.

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?

Explicitly says when to use it ('when starting a project') and routes to the correct downstream tools. It does not, however, explain the choice between render vs render_preview or when a scaffold is unnecessary, so it stops short of full when/when-not coverage.

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

fullbleed_inspectInspect a PDFA
Read-onlyIdempotent

Read an existing PDF's version, page count, profile claims, warnings, and template-composition compatibility without changing it. Use fullbleed_verify to render and check HTML/CSS source, or fullbleed_assets with action='verify' to check asset package integrity.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesExisting PDF file under the MCP workspace root, relative to the server's --root; this is a PDF path, not HTML source.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description's 'without changing it' merely restates readOnlyHint and it adds no new behavioral detail such as failure modes on malformed PDFs or path-resolution behavior. Adequate but not additive over the 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: the first front-loads what gets read and enumerates the outputs, the second handles disambiguation. No filler and no 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 return values need not be described, and the one input parameter is fully covered by the schema. Combined with explicit sibling routing, an agent has everything needed to call this correctly.

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?

There is a single parameter and schema coverage is 100%; the schema itself already disambiguates that the path points to a PDF and not HTML source. The description adds no parameter-level syntax, so baseline 4 for a one-param, fully documented schema is appropriate.

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 (Read/Inspect) and resource (existing PDF) and enumerates exactly what is exposed: version, page count, profile claims, warnings, and template-composition compatibility. It also implicitly separates itself from render/verify siblings by scoping to an existing PDF rather than source.

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 routes the agent: use fullbleed_verify for rendering/checking HTML/CSS source and fullbleed_assets with action='verify' for asset packages. Both the when-to-use and the concrete alternative invocations are given, 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.

fullbleed_renderRender a print documentA
DestructiveIdempotent

Render static HTML/CSS to a PDF and return output paths and render diagnostics. Supply exactly one of html or html_path. Use fullbleed_render_preview for visual iteration, fullbleed_verify for delivery checks, or fullbleed_compile_vdp for variable records. Does not capture live websites.

ParametersJSON Schema
NameRequiredDescriptionDefault
cssNoOptional inline CSS, applied before css_paths. Use @page for print page size and margins.
htmlNoInline static HTML or SVG markup. Supply exactly one of html and html_path; JavaScript is not executed.
profileNoOptional render preset: dev enables JIT planning without XObject reuse; preflight enables planning and reuse; prod enables reuse with JIT off. Omit to use engine defaults. Select PDF standards separately with pdf_profile.
css_pathsNoExisting UTF-8 CSS files under the MCP workspace root, read in array order after inline css. Relative paths are resolved from the server's --root.
html_pathNoExisting UTF-8 HTML or SVG file under the MCP workspace root. Relative to the server's --root. Supply exactly one of html and html_path.
image_dpiNoPNG preview resolution in dots per inch; defaults to 150. Used only when emit_image_dir is supplied; does not change PDF page geometry.
font_pathsNoExisting embeddable font files under the MCP workspace root. Register these fonts before rendering; do not rely on system fonts. Relative paths are resolved from the server's --root.
pdf_vt_jobNoOptional Job/Record/Document hierarchy and private Fullbleed DPM for pdf_profile='pdfvt1'. Omit records to generate one record and document per input, compiled copy, or binding row.
output_pathYesDestination PDF under the MCP workspace root, relative to the server's --root. Parent directories are created; an existing file is replaced.
pdf_profileNoPDF export profile; omitted means ordinary PDF. Read fullbleed_capabilities.pdf_profile_catalog for names and font, ICC, title, and timestamp requirements. This is separate from the render tool's dev/preflight/prod preset.
document_langNoDocument language for PDF metadata, as a BCP-47 tag such as 'en-US'.
document_titleNoHuman-readable title stored in PDF metadata. Required for pdfx4 and pdfvt1 output.
emit_image_dirNoOptional directory under the MCP workspace root for per-page PNG previews. Omit for PDF-only output; fullbleed_render_preview chooses the PDF and PNG paths together.
allow_fallbacksNoAllow missing-glyph and font-substitution signals without failing those selected fail_on checks. Does not enable a browser fallback or fetch fonts.
document_timestampNoPDF write date: UTC YYYY-MM-DDTHH:MM:SSZ, 'current', or 'source-date-epoch' (reads SOURCE_DATE_EPOCH). Required for pdfx4 and pdfvt1. Resolved once per engine; use an explicit value for repeatable output.
output_intent_infoNoOptional human-readable description of the output condition. Requires output_intent_icc_path.
output_intent_icc_pathNoExisting ICC profile file under the MCP workspace root, used as the PDF output intent. Required by PDF/A, PDF/X, and PDF/VT profiles.
output_intent_componentsNoICC color-component count: 1 for gray, 3 for RGB, 4 for CMYK. Defaults to 3 and must match the profile supplied by output_intent_icc_path.
output_intent_identifierNoNonblank output-condition identifier for the ICC output intent; defaults to 'Custom'. Requires output_intent_icc_path.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the write/replace profile is covered structurally. The description adds useful non-annotation context: it returns render diagnostics, does not execute JavaScript, and does not fetch live sites. It could go further on overwrite/atomicity behavior, but the added boundaries are real value.

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 sentences, front-loaded with the action and return value, then the exclusivity constraint, then sibling routing. No filler and nothing an agent must read past to find the core capability.

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, return values need not be explained, and the description covers capability, inputs constraint, and sibling selection for a complex nested-schema tool. It leaves profile/pdf_profile interaction and the destructive overwrite of output_path to the schema, which is acceptable but slightly thin for a 19-parameter destructive tool.

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% across all 19 parameters, including the tricky profile-vs-pdf_profile split and the ICC output-intent prerequisites, so the schema carries the semantics. The description only restates the html/html_path exclusivity already documented in both parameter descriptions, adding no syntax or format detail beyond it.

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 (render static HTML/CSS to PDF), names the concrete outputs (output paths and render diagnostics), and draws a hard boundary ('Does not capture live websites') that separates it from a browser-capture tool. An agent can distinguish it from fullbleed_render_preview or fullbleed_render_compiled without opening a 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?

Explicitly routes the agent: fullbleed_render_preview for visual iteration, fullbleed_verify for delivery checks, fullbleed_compile_vdp for variable records, and states the mutual-exclusion rule 'Supply exactly one of html or html_path.' Both the when-to-use and the selection conditions are present.

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

fullbleed_render_compiledRender a compiled documentA
DestructiveIdempotent

Write a PDF from compile_id returned by fullbleed_compile in this server session. Choose static copies, fixed geometry, or content reflow; returns the output path, page/record counts, and SHA-256. Use fullbleed_compile_vdp to compile and render a variable-data job in one call.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeYesstatic repeats the compiled document using copies; fixed_bindings substitutes columnar text without changing geometry; reflow_bindings lays out variable-length records and repaginates. The binding modes require bindings.
copiesNoNumber of identical document copies in static mode; defaults to 1. Ignored for binding modes, whose record count is the binding-column length.
bindingsNoColumnar records, for example {"name": ["Ada", "Lin"]}. Keys must match the compiled {{slot_name}} set exactly. Every column must be a nonempty string array of equal length; values at the same index form one record. Required for fixed_bindings and reflow_bindings; ignored in static mode.
compile_idYesOpaque handle returned by fullbleed_compile in this same server process. Recompile if the process restarted or the handle was evicted; it is not a filename or serialized artifact.
compressionNoCompression strategy for reflow_bindings only; defaults to throughput. Use compact for smaller output at additional compression cost. Ignored in static and fixed_bindings modes.
output_pathYesDestination PDF under the MCP workspace root, relative to the server's --root. Parent directories are created; an existing file is replaced.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, readOnlyHint=false, so the safety profile is largely covered. The description adds the session-bound nature of compile_id and the returned artifacts (path, counts, SHA-256), but does not itself warn that an existing output file is replaced (that detail lives in the schema). Modest added 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?

Three tight sentences: the write action and input first, the mode choice and return values second, the sibling routing last. No filler and the operative information is front-loaded.

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, return values need not be spelled out, yet the description briefly confirms them; the session-scoped compile_id constraint and mode selection are covered. Slightly incomplete about what 'choose' means operationally and when to prefer the non-VDP render siblings.

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 including mode, bindings, copies, and compression is already documented with enum semantics. The description's 'static copies, fixed geometry, or content reflow' merely paraphrases the enum values and adds no format or constraint detail beyond the schema. Baseline 3 is appropriate.

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?

Starts with a specific verb+resource ('Write a PDF') and immediately scopes the input to a compile_id from fullbleed_compile in the same session. This distinguishes it from fullbleed_compile, fullbleed_render, and fullbleed_render_preview without opening another 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?

Explicitly routes one alternative use case ('Use fullbleed_compile_vdp to compile and render a variable-data job in one call'), which tells the agent when to prefer a sibling. It stops short of naming the conditions for the other render siblings (fullbleed_render, fullbleed_render_preview).

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

fullbleed_render_previewRender a PDF and page previewsA
DestructiveIdempotent

Render a PDF plus PNG page previews for visual inspection after document changes; returns their artifact paths. Supply exactly one of html or html_path. Use fullbleed_render for PDF-only output and fullbleed_verify for explicit failure checks.

ParametersJSON Schema
NameRequiredDescriptionDefault
cssNoOptional inline CSS, applied before css_paths. Use @page for print page size and margins.
htmlNoInline static HTML or SVG markup. Supply exactly one of html and html_path; JavaScript is not executed.
pdf_nameNoSingle PDF filename within output_dir, without directory components; defaults to preview.pdf.preview.pdf
css_pathsNoExisting UTF-8 CSS files under the MCP workspace root, read in array order after inline css. Relative paths are resolved from the server's --root.
html_pathNoExisting UTF-8 HTML or SVG file under the MCP workspace root. Relative to the server's --root. Supply exactly one of html and html_path.
image_dpiNoPNG preview resolution in dots per inch; defaults to 144. Higher values increase image dimensions and rendering cost without changing PDF page geometry.
font_pathsNoExisting embeddable font files under the MCP workspace root. Register these fonts before rendering; do not rely on system fonts. Relative paths are resolved from the server's --root.
output_dirYesDestination directory under the MCP workspace root. Writes pdf_name here and per-page PNGs in its pages subdirectory; directories are created as needed and matching files replaced.
pdf_vt_jobNoOptional Job/Record/Document hierarchy and private Fullbleed DPM for pdf_profile='pdfvt1'. Omit records to generate one record and document per input, compiled copy, or binding row.
pdf_profileNoPDF export profile; omitted means ordinary PDF. Read fullbleed_capabilities.pdf_profile_catalog for names and font, ICC, title, and timestamp requirements. This is separate from the render tool's dev/preflight/prod preset.
document_langNoDocument language for PDF metadata, as a BCP-47 tag such as 'en-US'.
document_titleNoHuman-readable title stored in PDF metadata. Required for pdfx4 and pdfvt1 output.
allow_fallbacksNoAllow missing-glyph and font-substitution signals without failing those selected fail_on checks. Does not enable a browser fallback or fetch fonts.
document_timestampNoPDF write date: UTC YYYY-MM-DDTHH:MM:SSZ, 'current', or 'source-date-epoch' (reads SOURCE_DATE_EPOCH). Required for pdfx4 and pdfvt1. Resolved once per engine; use an explicit value for repeatable output.
output_intent_infoNoOptional human-readable description of the output condition. Requires output_intent_icc_path.
output_intent_icc_pathNoExisting ICC profile file under the MCP workspace root, used as the PDF output intent. Required by PDF/A, PDF/X, and PDF/VT profiles.
output_intent_componentsNoICC color-component count: 1 for gray, 3 for RGB, 4 for CMYK. Defaults to 3 and must match the profile supplied by output_intent_icc_path.
output_intent_identifierNoNonblank output-condition identifier for the ICC output intent; defaults to 'Custom'. Requires output_intent_icc_path.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, readOnlyHint=false and openWorldHint=false, so the write/overwrite safety profile is covered by structured data. The description adds that artifacts are paths returned and frames this as a post-change visual check, but does not elaborate on which files get replaced or how outputs are named (that detail lives only in the output_dir schema). With annotations carrying the risk profile, a 3 is appropriate.

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 tight clauses with zero filler, front-loaded on purpose and output, followed by the input constraint, then sibling routing. Every sentence earns its place.

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 a fully documented schema, the description needn't explain return values or parameter mechanics, and it correctly focuses on purpose and routing. It is slightly thin on the destructive-replace behavior mentioned only in the output_dir schema, but that is a minor gap given the annotation coverage.

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% across all 18 parameters, so the schema already documents every argument in detail (dpi bounds, font registration, ICC/output-intent requirements, etc.). The description adds the 'supply exactly one of html or html_path' constraint, but that is already stated in both parameter descriptions, so it is repetition. Baseline 3 applies when the schema does the heavy lifting.

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?

The description gives a specific verb+resource (render a PDF plus PNG page previews) and even states the return shape ('returns their artifact paths'). It explicitly distinguishes itself from two siblings, fullbleed_render and fullbleed_verify, so an agent can select it 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 Guidelines5/5

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

It states the context of use ('after document changes; for visual inspection') and names both alternatives with the condition that selects them: fullbleed_render for PDF-only output, fullbleed_verify for explicit failure checks. It also states the one-of constraint on html/html_path, removing ambiguity.

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

fullbleed_verifyVerify a print documentA
DestructiveIdempotent

Render HTML/CSS through Fullbleed's validation path and return structured diagnostics and failures before delivery. Supply exactly one of html or html_path and select fail_on checks explicitly. Use fullbleed_inspect for an existing PDF. Internal checks do not establish independent standards conformance.

ParametersJSON Schema
NameRequiredDescriptionDefault
cssNoOptional inline CSS, applied before css_paths. Use @page for print page size and margins.
htmlNoInline static HTML or SVG markup. Supply exactly one of html and html_path; JavaScript is not executed.
fail_onNoFailure checks to run: overflow, missing-glyphs, or font-subst. Defaults to none. The budget value requires budget limits available through the CLI, which this tool does not expose.
css_pathsNoExisting UTF-8 CSS files under the MCP workspace root, read in array order after inline css. Relative paths are resolved from the server's --root.
html_pathNoExisting UTF-8 HTML or SVG file under the MCP workspace root. Relative to the server's --root. Supply exactly one of html and html_path.
font_pathsNoExisting embeddable font files under the MCP workspace root. Register these fonts before rendering; do not rely on system fonts. Relative paths are resolved from the server's --root.
pdf_vt_jobNoOptional Job/Record/Document hierarchy and private Fullbleed DPM for pdf_profile='pdfvt1'. Omit records to generate one record and document per input, compiled copy, or binding row.
pdf_profileNoPDF export profile; omitted means ordinary PDF. Read fullbleed_capabilities.pdf_profile_catalog for names and font, ICC, title, and timestamp requirements. This is separate from the render tool's dev/preflight/prod preset.
document_langNoDocument language for PDF metadata, as a BCP-47 tag such as 'en-US'.
emit_pdf_pathNoOptional destination PDF under the MCP workspace root; creates parent directories and replaces an existing file. Omit to return diagnostics without saving the PDF.
document_titleNoHuman-readable title stored in PDF metadata. Required for pdfx4 and pdfvt1 output.
allow_fallbacksNoAllow missing-glyph and font-substitution signals without failing those selected fail_on checks. Does not enable a browser fallback or fetch fonts.
document_timestampNoPDF write date: UTC YYYY-MM-DDTHH:MM:SSZ, 'current', or 'source-date-epoch' (reads SOURCE_DATE_EPOCH). Required for pdfx4 and pdfvt1. Resolved once per engine; use an explicit value for repeatable output.
output_intent_infoNoOptional human-readable description of the output condition. Requires output_intent_icc_path.
output_intent_icc_pathNoExisting ICC profile file under the MCP workspace root, used as the PDF output intent. Required by PDF/A, PDF/X, and PDF/VT profiles.
output_intent_componentsNoICC color-component count: 1 for gray, 3 for RGB, 4 for CMYK. Defaults to 3 and must match the profile supplied by output_intent_icc_path.
output_intent_identifierNoNonblank output-condition identifier for the ICC output intent; defaults to 'Custom'. Requires output_intent_icc_path.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations declare destructiveHint=true and readOnlyHint=false; the description does not contradict these, but it also fails to explain the destructive nature (e.g., emit_pdf_path replacing files). It does add valuable context that JavaScript is not executed, internal checks do not establish independent standards conformance, and budget checks require the CLI, which are not inferable from 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?

Three sentences, front-loaded with the core action and output, then usage constraints, then a critical scope caveat. No redundancy, every sentence earns its place.

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?

For a complex tool with 17 parameters, nested schema, and an output schema, the description covers the main entry points (html/html_path exclusivity, fail_on, alternative tool) and a key behavioral caveat. It omits guidance on the many PDF export parameters (pdf_profile, emit_pdf_path, document metadata), which are left to the exhaustive schema, but the output schema exists so return values need not be explained.

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 17 parameters, including the fail_on enum and pdf_vt_job hierarchy. The description mentions selecting fail_on explicitly but adds no syntax or format details beyond the schema, so it earns the baseline 3.

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: renders HTML/CSS through the validation path and returns diagnostics/failures before delivery. It distinguishes from fullbleed_inspect by name, but does not clarify how it differs from the render siblings (fullbleed_render, fullbleed_render_preview, fullbleed_render_compiled), which is a missed routing opportunity.

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 concrete usage conditions: supply exactly one of html or html_path, select fail_on checks explicitly, and use fullbleed_inspect for existing PDFs. It lacks 'when not to use' beyond that single alternative, so it doesn't fully meet the 5-level bar of explicit alternatives and exclusions.

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. 9 tool updatesv2.5.2
    • Changedfullbleed_assets7 fields changed
      • addedInput schema / properties / action / description
        Added value: +"list shows built-in and cached packages; info describes one package; install vendors it; verify checks package presence/hashes and optional lock constraints; lock creates or updates a lock file using add."
      • addedInput schema / properties / add / description
        Added value: +"For lock only: built-in package references to add/update, for example [\"@noto-sans\", \"@bootstrap\"]. Omit to preserve existing entries or create an empty lock file; this does not scan arbitrary project files."
      • addedInput schema / properties / available / description
        Added value: +"For list only: include the catalog of supported remote packages in addition to built-in and cached packages. Defaults to false."
      • addedInput schema / properties / lock_path / description
        Added value: +"Lock file under the MCP workspace root. For verify it must exist; omission skips lock comparison. For lock it is created or updated and defaults to 'assets.lock.json'."
      • addedInput schema / properties / package / description
        Added value: +"Package name/reference, such as 'noto-sans' or '@bootstrap'. Required for info, install, and verify; ignored for list and lock. Use list to discover supported names."
      • addedInput schema / properties / strict / description
        Added value: +"For verify only: report a lock mismatch as a tool error. Defaults to false, which returns the verification result with ok=false and violations instead."
      • addedInput schema / properties / vendor_path / description
        Added value: +"For install only: destination directory under the MCP workspace root, default 'vendor'. Existing matching asset files may be replaced."
    • Changedfullbleed_compile16 fields changed
      • addedInput schema / properties / css / description
        Added value: +"Optional inline print CSS; defaults to an empty stylesheet. Use @page for page size and margins. Compilation tools do not accept css_paths."
      • addedInput schema / properties / document_lang / description
        Added value: +"Document language for PDF metadata, as a BCP-47 tag such as 'en-US'."
      • changedInput schema / properties / document_timestamp / description
        Previous value: -"UTC job write date YYYY-MM-DDTHH:MM:SSZ, current, or source-date-epoch. Resolved once when the engine is created."New value: +"PDF write date: UTC YYYY-MM-DDTHH:MM:SSZ, 'current', or 'source-date-epoch' (reads SOURCE_DATE_EPOCH). Required for pdfx4 and pdfvt1. Resolved once per engine; use an explicit value for repeatable output."
      • addedInput schema / properties / document_title / description
        Added value: +"Human-readable title stored in PDF metadata. Required for pdfx4 and pdfvt1 output."
      • changedInput schema / properties / font_paths / description
        Previous value: -"Workspace-relative embeddable font paths."New value: +"Existing embeddable font files under the MCP workspace root. Register these fonts before rendering; do not rely on system fonts. Relative paths are resolved from the server's --root."
      • addedInput schema / properties / html / description
        Added value: +"Nonempty inline static HTML. For variable records use {{slot_name}} placeholders and supply a bindings column for every slot. Compilation tools accept markup, not html_path."
      • addedInput schema / properties / output_intent_components / description
        Added value: +"ICC color-component count: 1 for gray, 3 for RGB, 4 for CMYK. Defaults to 3 and must match the profile supplied by output_intent_icc_path."
      • changedInput schema / properties / output_intent_icc_path / description
        Previous value: -"Workspace-relative ICC profile path."New value: +"Existing ICC profile file under the MCP workspace root, used as the PDF output intent. Required by PDF/A, PDF/X, and PDF/VT profiles."
      • addedInput schema / properties / output_intent_identifier / description
        Added value: +"Nonblank output-condition identifier for the ICC output intent; defaults to 'Custom'. Requires output_intent_icc_path."
      • addedInput schema / properties / output_intent_info / description
        Added value: +"Optional human-readable description of the output condition. Requires output_intent_icc_path."
      • addedInput schema / properties / pdf_profile / description
        Added value: +"PDF export profile; omitted means ordinary PDF. Read fullbleed_capabilities.pdf_profile_catalog for names and font, ICC, title, and timestamp requirements. This is separate from the render tool's dev/preflight/prod preset."
      • addedInput schema / properties / pdf_vt_job / description
        Added value: +"Optional Job/Record/Document hierarchy and private Fullbleed DPM for pdf_profile='pdfvt1'. Omit records to generate one record and document per input, compiled copy, or binding row."
      • addedInput schema / properties / pdf_vt_job / properties / id / description
        Added value: +"Nonblank part identifier, at most 4096 UTF-8 bytes. Record IDs must be unique in the job; document IDs must be unique within their record."
      • addedInput schema / properties / pdf_vt_job / properties / records / items / properties / documents / description
        Added value: +"Ordered documents in this record. Each consumes one input document, compiled copy, or binding row; final pagination supplies its page range."
      • addedInput schema / properties / pdf_vt_job / properties / records / items / properties / documents / items / properties / id / description
        Added value: +"Nonblank part identifier, at most 4096 UTF-8 bytes. Record IDs must be unique in the job; document IDs must be unique within their record."
      • addedInput schema / properties / pdf_vt_job / properties / records / items / properties / id / description
        Added value: +"Nonblank part identifier, at most 4096 UTF-8 bytes. Record IDs must be unique in the job; document IDs must be unique within their record."
    • Changedfullbleed_compile_vdp20 fields changed
      • addedInput schema / properties / bindings / description
        Added value: +"Columnar records, for example {\"name\": [\"Ada\", \"Lin\"]}. Keys must match the compiled {{slot_name}} set exactly. Every column must be a nonempty string array of equal length; values at the same index form one record. Required for fixed_bindings and reflow_bindings; ignored in static mode."
      • addedInput schema / properties / compression / description
        Added value: +"Compression strategy for reflow_bindings only; defaults to throughput. Use compact for smaller output at additional compression cost. Ignored in static and fixed_bindings modes."
      • addedInput schema / properties / css / description
        Added value: +"Optional inline print CSS; defaults to an empty stylesheet. Use @page for page size and margins. Compilation tools do not accept css_paths."
      • addedInput schema / properties / document_lang / description
        Added value: +"Document language for PDF metadata, as a BCP-47 tag such as 'en-US'."
      • changedInput schema / properties / document_timestamp / description
        Previous value: -"UTC job write date YYYY-MM-DDTHH:MM:SSZ, current, or source-date-epoch. Resolved once when the engine is created."New value: +"PDF write date: UTC YYYY-MM-DDTHH:MM:SSZ, 'current', or 'source-date-epoch' (reads SOURCE_DATE_EPOCH). Required for pdfx4 and pdfvt1. Resolved once per engine; use an explicit value for repeatable output."
      • addedInput schema / properties / document_title / description
        Added value: +"Human-readable title stored in PDF metadata. Required for pdfx4 and pdfvt1 output."
      • changedInput schema / properties / font_paths / description
        Previous value: -"Workspace-relative embeddable font paths."New value: +"Existing embeddable font files under the MCP workspace root. Register these fonts before rendering; do not rely on system fonts. Relative paths are resolved from the server's --root."
      • addedInput schema / properties / html / description
        Added value: +"Nonempty inline static HTML. For variable records use {{slot_name}} placeholders and supply a bindings column for every slot. Compilation tools accept markup, not html_path."
      • addedInput schema / properties / mode / description
        Added value: +"fixed_bindings substitutes text while preserving compiled geometry; reflow_bindings recalculates layout and page count for variable-length content. Check pdf_profile_catalog.fixed_bindings_supported before combining fixed bindings with a PDF profile."
      • addedInput schema / properties / output_intent_components / description
        Added value: +"ICC color-component count: 1 for gray, 3 for RGB, 4 for CMYK. Defaults to 3 and must match the profile supplied by output_intent_icc_path."
      • changedInput schema / properties / output_intent_icc_path / description
        Previous value: -"Workspace-relative ICC profile path."New value: +"Existing ICC profile file under the MCP workspace root, used as the PDF output intent. Required by PDF/A, PDF/X, and PDF/VT profiles."
      • addedInput schema / properties / output_intent_identifier / description
        Added value: +"Nonblank output-condition identifier for the ICC output intent; defaults to 'Custom'. Requires output_intent_icc_path."
      • addedInput schema / properties / output_intent_info / description
        Added value: +"Optional human-readable description of the output condition. Requires output_intent_icc_path."
      • addedInput schema / properties / output_path / description
        Added value: +"Destination PDF under the MCP workspace root, relative to the server's --root. Parent directories are created; an existing file is replaced."
      • addedInput schema / properties / pdf_profile / description
        Added value: +"PDF export profile; omitted means ordinary PDF. Read fullbleed_capabilities.pdf_profile_catalog for names and font, ICC, title, and timestamp requirements. This is separate from the render tool's dev/preflight/prod preset."
      • addedInput schema / properties / pdf_vt_job / description
        Added value: +"Optional Job/Record/Document hierarchy and private Fullbleed DPM for pdf_profile='pdfvt1'. Omit records to generate one record and document per input, compiled copy, or binding row."
      • addedInput schema / properties / pdf_vt_job / properties / id / description
        Added value: +"Nonblank part identifier, at most 4096 UTF-8 bytes. Record IDs must be unique in the job; document IDs must be unique within their record."
      • addedInput schema / properties / pdf_vt_job / properties / records / items / properties / documents / description
        Added value: +"Ordered documents in this record. Each consumes one input document, compiled copy, or binding row; final pagination supplies its page range."
      • addedInput schema / properties / pdf_vt_job / properties / records / items / properties / documents / items / properties / id / description
        Added value: +"Nonblank part identifier, at most 4096 UTF-8 bytes. Record IDs must be unique in the job; document IDs must be unique within their record."
      • addedInput schema / properties / pdf_vt_job / properties / records / items / properties / id / description
        Added value: +"Nonblank part identifier, at most 4096 UTF-8 bytes. Record IDs must be unique in the job; document IDs must be unique within their record."
    • Changedfullbleed_create_project2 fields changed
      • addedInput schema / properties / target_path / description
        Added value: +"Destination directory under the MCP workspace root. Defaults to that root and must be absent or empty; use a new subdirectory in an existing project."
      • addedInput schema / properties / template / description
        Added value: +"Scaffold to create: init supplies the general agent-ready project; invoice, statement, accessible, and reference select the corresponding document starter."
    • Changedfullbleed_inspect1 field changed
      • addedInput schema / properties / path / description
        Added value: +"Existing PDF file under the MCP workspace root, relative to the server's --root; this is a PDF path, not HTML source."
    • Changedfullbleed_render23 fields changed
      • addedInput schema / properties / allow_fallbacks / description
        Added value: +"Allow missing-glyph and font-substitution signals without failing those selected fail_on checks. Does not enable a browser fallback or fetch fonts."
      • changedInput schema / properties / css / description
        Previous value: -"Inline CSS."New value: +"Optional inline CSS, applied before css_paths. Use @page for print page size and margins."
      • changedInput schema / properties / css_paths / description
        Previous value: -"Workspace-relative CSS paths."New value: +"Existing UTF-8 CSS files under the MCP workspace root, read in array order after inline css. Relative paths are resolved from the server's --root."
      • addedInput schema / properties / document_lang / description
        Added value: +"Document language for PDF metadata, as a BCP-47 tag such as 'en-US'."
      • changedInput schema / properties / document_timestamp / description
        Previous value: -"UTC job write date YYYY-MM-DDTHH:MM:SSZ, current, or source-date-epoch. Resolved once when the engine is created."New value: +"PDF write date: UTC YYYY-MM-DDTHH:MM:SSZ, 'current', or 'source-date-epoch' (reads SOURCE_DATE_EPOCH). Required for pdfx4 and pdfvt1. Resolved once per engine; use an explicit value for repeatable output."
      • addedInput schema / properties / document_title / description
        Added value: +"Human-readable title stored in PDF metadata. Required for pdfx4 and pdfvt1 output."
      • addedInput schema / properties / emit_image_dir / description
        Added value: +"Optional directory under the MCP workspace root for per-page PNG previews. Omit for PDF-only output; fullbleed_render_preview chooses the PDF and PNG paths together."
      • changedInput schema / properties / font_paths / description
        Previous value: -"Workspace-relative embeddable font paths."New value: +"Existing embeddable font files under the MCP workspace root. Register these fonts before rendering; do not rely on system fonts. Relative paths are resolved from the server's --root."
      • changedInput schema / properties / html / description
        Previous value: -"Inline HTML or SVG markup."New value: +"Inline static HTML or SVG markup. Supply exactly one of html and html_path; JavaScript is not executed."
      • changedInput schema / properties / html_path / description
        Previous value: -"Workspace-relative HTML or SVG path."New value: +"Existing UTF-8 HTML or SVG file under the MCP workspace root. Relative to the server's --root. Supply exactly one of html and html_path."
      • addedInput schema / properties / image_dpi / description
        Added value: +"PNG preview resolution in dots per inch; defaults to 150. Used only when emit_image_dir is supplied; does not change PDF page geometry."
      • addedInput schema / properties / output_intent_components / description
        Added value: +"ICC color-component count: 1 for gray, 3 for RGB, 4 for CMYK. Defaults to 3 and must match the profile supplied by output_intent_icc_path."
      • changedInput schema / properties / output_intent_icc_path / description
        Previous value: -"Workspace-relative ICC profile path."New value: +"Existing ICC profile file under the MCP workspace root, used as the PDF output intent. Required by PDF/A, PDF/X, and PDF/VT profiles."
      • addedInput schema / properties / output_intent_identifier / description
        Added value: +"Nonblank output-condition identifier for the ICC output intent; defaults to 'Custom'. Requires output_intent_icc_path."
      • addedInput schema / properties / output_intent_info / description
        Added value: +"Optional human-readable description of the output condition. Requires output_intent_icc_path."
      • changedInput schema / properties / output_path / description
        Previous value: -"Required workspace-relative output PDF path."New value: +"Destination PDF under the MCP workspace root, relative to the server's --root. Parent directories are created; an existing file is replaced."
      • addedInput schema / properties / pdf_profile / description
        Added value: +"PDF export profile; omitted means ordinary PDF. Read fullbleed_capabilities.pdf_profile_catalog for names and font, ICC, title, and timestamp requirements. This is separate from the render tool's dev/preflight/prod preset."
      • addedInput schema / properties / pdf_vt_job / description
        Added value: +"Optional Job/Record/Document hierarchy and private Fullbleed DPM for pdf_profile='pdfvt1'. Omit records to generate one record and document per input, compiled copy, or binding row."
      • addedInput schema / properties / pdf_vt_job / properties / id / description
        Added value: +"Nonblank part identifier, at most 4096 UTF-8 bytes. Record IDs must be unique in the job; document IDs must be unique within their record."
      • addedInput schema / properties / pdf_vt_job / properties / records / items / properties / documents / description
        Added value: +"Ordered documents in this record. Each consumes one input document, compiled copy, or binding row; final pagination supplies its page range."
      • addedInput schema / properties / pdf_vt_job / properties / records / items / properties / documents / items / properties / id / description
        Added value: +"Nonblank part identifier, at most 4096 UTF-8 bytes. Record IDs must be unique in the job; document IDs must be unique within their record."
      • addedInput schema / properties / pdf_vt_job / properties / records / items / properties / id / description
        Added value: +"Nonblank part identifier, at most 4096 UTF-8 bytes. Record IDs must be unique in the job; document IDs must be unique within their record."
      • addedInput schema / properties / profile / description
        Added value: +"Optional render preset: dev enables JIT planning without XObject reuse; preflight enables planning and reuse; prod enables reuse with JIT off. Omit to use engine defaults. Select PDF standards separately with pdf_profile."
    • Changedfullbleed_render_compiled6 fields changed
      • addedInput schema / properties / bindings / description
        Added value: +"Columnar records, for example {\"name\": [\"Ada\", \"Lin\"]}. Keys must match the compiled {{slot_name}} set exactly. Every column must be a nonempty string array of equal length; values at the same index form one record. Required for fixed_bindings and reflow_bindings; ignored in static mode."
      • addedInput schema / properties / compile_id / description
        Added value: +"Opaque handle returned by fullbleed_compile in this same server process. Recompile if the process restarted or the handle was evicted; it is not a filename or serialized artifact."
      • addedInput schema / properties / compression / description
        Added value: +"Compression strategy for reflow_bindings only; defaults to throughput. Use compact for smaller output at additional compression cost. Ignored in static and fixed_bindings modes."
      • addedInput schema / properties / copies / description
        Added value: +"Number of identical document copies in static mode; defaults to 1. Ignored for binding modes, whose record count is the binding-column length."
      • addedInput schema / properties / mode / description
        Added value: +"static repeats the compiled document using copies; fixed_bindings substitutes columnar text without changing geometry; reflow_bindings lays out variable-length records and repaginates. The binding modes require bindings."
      • addedInput schema / properties / output_path / description
        Added value: +"Destination PDF under the MCP workspace root, relative to the server's --root. Parent directories are created; an existing file is replaced."
    • Changedfullbleed_render_preview22 fields changed
      • addedInput schema / properties / allow_fallbacks / description
        Added value: +"Allow missing-glyph and font-substitution signals without failing those selected fail_on checks. Does not enable a browser fallback or fetch fonts."
      • changedInput schema / properties / css / description
        Previous value: -"Inline CSS."New value: +"Optional inline CSS, applied before css_paths. Use @page for print page size and margins."
      • changedInput schema / properties / css_paths / description
        Previous value: -"Workspace-relative CSS paths."New value: +"Existing UTF-8 CSS files under the MCP workspace root, read in array order after inline css. Relative paths are resolved from the server's --root."
      • addedInput schema / properties / document_lang / description
        Added value: +"Document language for PDF metadata, as a BCP-47 tag such as 'en-US'."
      • changedInput schema / properties / document_timestamp / description
        Previous value: -"UTC job write date YYYY-MM-DDTHH:MM:SSZ, current, or source-date-epoch. Resolved once when the engine is created."New value: +"PDF write date: UTC YYYY-MM-DDTHH:MM:SSZ, 'current', or 'source-date-epoch' (reads SOURCE_DATE_EPOCH). Required for pdfx4 and pdfvt1. Resolved once per engine; use an explicit value for repeatable output."
      • addedInput schema / properties / document_title / description
        Added value: +"Human-readable title stored in PDF metadata. Required for pdfx4 and pdfvt1 output."
      • changedInput schema / properties / font_paths / description
        Previous value: -"Workspace-relative embeddable font paths."New value: +"Existing embeddable font files under the MCP workspace root. Register these fonts before rendering; do not rely on system fonts. Relative paths are resolved from the server's --root."
      • changedInput schema / properties / html / description
        Previous value: -"Inline HTML or SVG markup."New value: +"Inline static HTML or SVG markup. Supply exactly one of html and html_path; JavaScript is not executed."
      • changedInput schema / properties / html_path / description
        Previous value: -"Workspace-relative HTML or SVG path."New value: +"Existing UTF-8 HTML or SVG file under the MCP workspace root. Relative to the server's --root. Supply exactly one of html and html_path."
      • addedInput schema / properties / image_dpi / description
        Added value: +"PNG preview resolution in dots per inch; defaults to 144. Higher values increase image dimensions and rendering cost without changing PDF page geometry."
      • addedInput schema / properties / output_dir / description
        Added value: +"Destination directory under the MCP workspace root. Writes pdf_name here and per-page PNGs in its pages subdirectory; directories are created as needed and matching files replaced."
      • addedInput schema / properties / output_intent_components / description
        Added value: +"ICC color-component count: 1 for gray, 3 for RGB, 4 for CMYK. Defaults to 3 and must match the profile supplied by output_intent_icc_path."
      • changedInput schema / properties / output_intent_icc_path / description
        Previous value: -"Workspace-relative ICC profile path."New value: +"Existing ICC profile file under the MCP workspace root, used as the PDF output intent. Required by PDF/A, PDF/X, and PDF/VT profiles."
      • addedInput schema / properties / output_intent_identifier / description
        Added value: +"Nonblank output-condition identifier for the ICC output intent; defaults to 'Custom'. Requires output_intent_icc_path."
      • addedInput schema / properties / output_intent_info / description
        Added value: +"Optional human-readable description of the output condition. Requires output_intent_icc_path."
      • addedInput schema / properties / pdf_name / description
        Added value: +"Single PDF filename within output_dir, without directory components; defaults to preview.pdf."
      • addedInput schema / properties / pdf_profile / description
        Added value: +"PDF export profile; omitted means ordinary PDF. Read fullbleed_capabilities.pdf_profile_catalog for names and font, ICC, title, and timestamp requirements. This is separate from the render tool's dev/preflight/prod preset."
      • addedInput schema / properties / pdf_vt_job / description
        Added value: +"Optional Job/Record/Document hierarchy and private Fullbleed DPM for pdf_profile='pdfvt1'. Omit records to generate one record and document per input, compiled copy, or binding row."
      • addedInput schema / properties / pdf_vt_job / properties / id / description
        Added value: +"Nonblank part identifier, at most 4096 UTF-8 bytes. Record IDs must be unique in the job; document IDs must be unique within their record."
      • addedInput schema / properties / pdf_vt_job / properties / records / items / properties / documents / description
        Added value: +"Ordered documents in this record. Each consumes one input document, compiled copy, or binding row; final pagination supplies its page range."
      • addedInput schema / properties / pdf_vt_job / properties / records / items / properties / documents / items / properties / id / description
        Added value: +"Nonblank part identifier, at most 4096 UTF-8 bytes. Record IDs must be unique in the job; document IDs must be unique within their record."
      • addedInput schema / properties / pdf_vt_job / properties / records / items / properties / id / description
        Added value: +"Nonblank part identifier, at most 4096 UTF-8 bytes. Record IDs must be unique in the job; document IDs must be unique within their record."
    • Changedfullbleed_verify21 fields changed
      • addedInput schema / properties / allow_fallbacks / description
        Added value: +"Allow missing-glyph and font-substitution signals without failing those selected fail_on checks. Does not enable a browser fallback or fetch fonts."
      • changedInput schema / properties / css / description
        Previous value: -"Inline CSS."New value: +"Optional inline CSS, applied before css_paths. Use @page for print page size and margins."
      • changedInput schema / properties / css_paths / description
        Previous value: -"Workspace-relative CSS paths."New value: +"Existing UTF-8 CSS files under the MCP workspace root, read in array order after inline css. Relative paths are resolved from the server's --root."
      • addedInput schema / properties / document_lang / description
        Added value: +"Document language for PDF metadata, as a BCP-47 tag such as 'en-US'."
      • changedInput schema / properties / document_timestamp / description
        Previous value: -"UTC job write date YYYY-MM-DDTHH:MM:SSZ, current, or source-date-epoch. Resolved once when the engine is created."New value: +"PDF write date: UTC YYYY-MM-DDTHH:MM:SSZ, 'current', or 'source-date-epoch' (reads SOURCE_DATE_EPOCH). Required for pdfx4 and pdfvt1. Resolved once per engine; use an explicit value for repeatable output."
      • addedInput schema / properties / document_title / description
        Added value: +"Human-readable title stored in PDF metadata. Required for pdfx4 and pdfvt1 output."
      • addedInput schema / properties / emit_pdf_path / description
        Added value: +"Optional destination PDF under the MCP workspace root; creates parent directories and replaces an existing file. Omit to return diagnostics without saving the PDF."
      • addedInput schema / properties / fail_on / description
        Added value: +"Failure checks to run: overflow, missing-glyphs, or font-subst. Defaults to none. The budget value requires budget limits available through the CLI, which this tool does not expose."
      • changedInput schema / properties / font_paths / description
        Previous value: -"Workspace-relative embeddable font paths."New value: +"Existing embeddable font files under the MCP workspace root. Register these fonts before rendering; do not rely on system fonts. Relative paths are resolved from the server's --root."
      • changedInput schema / properties / html / description
        Previous value: -"Inline HTML or SVG markup."New value: +"Inline static HTML or SVG markup. Supply exactly one of html and html_path; JavaScript is not executed."
      • changedInput schema / properties / html_path / description
        Previous value: -"Workspace-relative HTML or SVG path."New value: +"Existing UTF-8 HTML or SVG file under the MCP workspace root. Relative to the server's --root. Supply exactly one of html and html_path."
      • addedInput schema / properties / output_intent_components / description
        Added value: +"ICC color-component count: 1 for gray, 3 for RGB, 4 for CMYK. Defaults to 3 and must match the profile supplied by output_intent_icc_path."
      • changedInput schema / properties / output_intent_icc_path / description
        Previous value: -"Workspace-relative ICC profile path."New value: +"Existing ICC profile file under the MCP workspace root, used as the PDF output intent. Required by PDF/A, PDF/X, and PDF/VT profiles."
      • addedInput schema / properties / output_intent_identifier / description
        Added value: +"Nonblank output-condition identifier for the ICC output intent; defaults to 'Custom'. Requires output_intent_icc_path."
      • addedInput schema / properties / output_intent_info / description
        Added value: +"Optional human-readable description of the output condition. Requires output_intent_icc_path."
      • addedInput schema / properties / pdf_profile / description
        Added value: +"PDF export profile; omitted means ordinary PDF. Read fullbleed_capabilities.pdf_profile_catalog for names and font, ICC, title, and timestamp requirements. This is separate from the render tool's dev/preflight/prod preset."
      • addedInput schema / properties / pdf_vt_job / description
        Added value: +"Optional Job/Record/Document hierarchy and private Fullbleed DPM for pdf_profile='pdfvt1'. Omit records to generate one record and document per input, compiled copy, or binding row."
      • addedInput schema / properties / pdf_vt_job / properties / id / description
        Added value: +"Nonblank part identifier, at most 4096 UTF-8 bytes. Record IDs must be unique in the job; document IDs must be unique within their record."
      • addedInput schema / properties / pdf_vt_job / properties / records / items / properties / documents / description
        Added value: +"Ordered documents in this record. Each consumes one input document, compiled copy, or binding row; final pagination supplies its page range."
      • addedInput schema / properties / pdf_vt_job / properties / records / items / properties / documents / items / properties / id / description
        Added value: +"Nonblank part identifier, at most 4096 UTF-8 bytes. Record IDs must be unique in the job; document IDs must be unique within their record."
      • addedInput schema / properties / pdf_vt_job / properties / records / items / properties / id / description
        Added value: +"Nonblank part identifier, at most 4096 UTF-8 bytes. Record IDs must be unique in the job; document IDs must be unique within their record."
  2. 11 tool updates
    • First observedfullbleed_agent_contract
    • First observedfullbleed_assets
    • First observedfullbleed_capabilities
    • First observedfullbleed_compile
    • First observedfullbleed_compile_vdp
    • First observedfullbleed_create_project
    • First observedfullbleed_inspect
    • First observedfullbleed_render
    • First observedfullbleed_render_compiled
    • First observedfullbleed_render_preview
    • First observedfullbleed_verify

TDQS

A4.1/5.0

Scored across 11 tools

Disambiguation4/5

Most tools have distinct purposes, but several rendering-related tools (fullbleed_render, fullbleed_render_preview, fullbleed_verify) all accept HTML/CSS and produce PDFs or diagnostics, requiring careful reading to choose correctly. Similarly, fullbleed_capabilities and fullbleed_agent_contract both provide reference metadata, though one is compact and the other detailed. Overall, descriptions mitigate confusion but some overlap remains.

Naming Consistency4/5

All tools use the fullbleed_ prefix and snake_case, with a mostly consistent verb_noun or noun phrase pattern. Minor deviations exist: some names are noun-only (fullbleed_capabilities, fullbleed_assets, fullbleed_agent_contract) while others are verb-led. Still predictable and readable.

Tool Count5/5

11 tools is well within the ideal range for a PDF engine, covering scaffolding, rendering, compilation, verification, asset management, and introspection without obvious redundancy. Each tool has a clear role, and the count feels appropriately scoped.

Completeness4/5

Core PDF rendering workflows are well-covered: project creation, static and preview rendering, verification, compiled rendering, variable data, and asset management. Minor gaps include asset removal/uninstall operations and broader PDF manipulation (e.g., merge/split/extract), but these may be outside the stated scope. Agents can complete primary tasks without dead ends.

Maintenance

ActivityNo data
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Rust-powered PDF toolkit over MCP: create, read, and analyze PDFs; extract text and entities for RAG; convert to Markdown; split/merge/rotate/reorder pages; manage form fields and annotations; encrypt documents. Runs locally via uvx oxidize-mcp.
    12
    1,680 PyPI
    5
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Accessibility-first LaTeX publishing engine with an embedded MCP server. Tools to list registered documents, render template-driven documents, and audit built PDFs for PDF/UA-2 / WTPDF / PDF/A-4f conformance with veraPDF. MIT-licensed.
    4
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A local MCP server that drives PDFium and pypdf to perform comprehensive PDF operations including inspection, assembly, page editing, watermarking, rendering, extraction, form filling, encryption, compression, attachments, bookmarks, and metadata management.
    MIT