# PdfBroker.io (remote · mcp.pdfbroker.io)

Cloud PDF generation from HTML, CSS and XSL-FO, with PDF/A and PDF/UA support.

- Trust score: 54/100 (low)
- Change this week: −2
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-22

## Components

- remote · `mcp.pdfbroker.io`: 54/100 (this document), [markdown](https://verifymcp.io/servers/io-pdfbroker-pdf/mcp.md), [page](https://verifymcp.io/servers/io-pdfbroker-pdf/mcp)
- npm · `@pdfbroker/mcp-server`: 33/100, [markdown](https://verifymcp.io/servers/io-pdfbroker-pdf/pdfbroker-mcp-server.md), [page](https://verifymcp.io/servers/io-pdfbroker-pdf/pdfbroker-mcp-server)

## Channel facts

- Endpoint: `https://mcp.pdfbroker.io/`
- Transports: `streamable-http`
- Auth: `required`
- Version: `1.2.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-22.

- **Endpoint Security**: 57/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 2 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 29/100
  - 0% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 1795 tokens (~598/item across 3 items; 2 tools + 1 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability check failed: schema churn in the 11 days we've observed: 0 tool removals, 2 breaking changes, 0 auth/transport breaks, 0 additions.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http io-pdfbroker-pdf https://mcp.pdfbroker.io/
```

### Codex

```toml
[mcp_servers.io-pdfbroker-pdf]
url = "https://mcp.pdfbroker.io/"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "io-pdfbroker-pdf": {
      "type": "remote",
      "url": "https://mcp.pdfbroker.io/",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add io-pdfbroker-pdf --url https://mcp.pdfbroker.io/ --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  io-pdfbroker-pdf:
    url: "https://mcp.pdfbroker.io/"
```

### Other

```json
{
  "mcpServers": {
    "io-pdfbroker-pdf": {
      "type": "http",
      "url": "https://mcp.pdfbroker.io/"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-19 (score 54, −4)

- [security regression] Stability: 0.23 → fail
- [security regression] A breaking change shipped without a version bump: still 1.0.0
- [security] Tool “html_to_pdf” rewrote its description, which is the text the model reads
- [security] Tool “html_to_pdf_wk” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 360 → 598
- [functional regression] “html_to_pdf” changed the type of “html”: string → string|null
- [functional regression] “html_to_pdf_wk” changed the type of “html”: string → string|null
- [cosmetic] “html_to_pdf” added an optional parameter “pdfForms”
- [cosmetic] “html_to_pdf” added an optional parameter “url”
- [cosmetic] “html_to_pdf_wk” added an optional parameter “pdfForms”
- [cosmetic] “html_to_pdf_wk” added an optional parameter “url”
- [cosmetic] “html_to_pdf” reworded the description of “html”
- [cosmetic] “html_to_pdf” reworded the description of “orientation”
- [cosmetic] “html_to_pdf” reworded the description of “paperSize”
- [cosmetic] “html_to_pdf_wk” reworded the description of “html”
- [cosmetic] “html_to_pdf_wk” reworded the description of “orientation”
- [cosmetic] “html_to_pdf_wk” reworded the description of “paperSize”
- [cosmetic] “html_to_pdf” made “html” optional
- [cosmetic] “html_to_pdf_wk” made “html” optional

### 2026-08-18 (score 58, +1)

No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-16 (score 57, +1)

No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-14 (score 56, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-13 (score 55, 0)

- [security] Tool “html_to_pdf” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 290 → 360
- [cosmetic] “html_to_pdf” reworded the description of “conformanceLevel”

### 2026-08-12 (score 55, 0)

- [functional improvement] Stability: unverified → 0.03

### 2026-08-11 (score 55)

First indexed and scored.

## MCP tools (2)

### `html_to_pdf_wk` (~680 tokens)

Convert HTML to PDF using the wkhtmltopdf rendering engine. Supports JavaScript execution and screen-capture style rendering. Good for simple documents, web page snapshots, layouts that rely on JavaScript, and **fillable PDF forms** (set pdfForms to true). Available on all PdfBroker.io plans including the free tier. Does NOT support PDF/A or PDF/UA compliance — use html_to_pdf for compliant documents. Does NOT honour CSS '@page { size: ... }' — page geometry comes from paperSize and orientation; use html_to_pdf when the document's own stylesheet must decide. EU-first defaults: A4 paper, Portrait orientation.

Input parameters:

- `extraArguments` (object|null): Optional extra wkhtmltopdf engine arguments forwarded verbatim to the engine. Keys are CLI long-form options without '--'. For switch-style flags use an empty-string value — example: {"enable-forms":…
- `html` (string|null): HTML content to convert. Can be a full document or a fragment. Optional if 'url' is supplied instead — pass exactly one of the two.
- `orientation` (string): Page orientation: 'Auto' (default, engine default is Portrait), 'Portrait' or 'Landscape'.
- `paperSize` (string): Paper size: 'Auto' (default) leaves it to the engine, which uses A4 (EU-first default). Name a size to set it explicitly: 'A4', 'Letter', 'A3', 'Legal'. Note that wkhtmltopdf does NOT honour CSS '@pa…
- `pdfForms` (boolean): Set to true to produce a fillable PDF: the document's <input>, <select> and <textarea> elements become interactive form fields a recipient can type into and save. Default false, which flattens them i…
- `resources` (object|null): Optional embedded resources referenced by relative path in the HTML. Keys are relative paths (e.g., 'images/logo.png'), values are base64-encoded file contents. Unused entries are silently ignored. I…
- `url` (string|null): Optional https URL of an already published HTML document or web page, fetched by PdfBroker instead of sending the markup inline. Use this to keep a large template out of the conversation, or to snaps…

### `html_to_pdf` (~1108 tokens)

Convert HTML and CSS to a PDF document using the WeasyPrint rendering engine. Supports every PDF/A archival level, PDF/UA accessibility and the PDF/X print standards. Best for professional documents: invoices, reports, certificates, contracts, and accessible documents. Also produces **fillable PDF forms** — set pdfForms to true. Send a complete HTML document including <html>, <head> with <style>, and <body> tags. Page geometry comes from the document's own CSS @page rule unless paperSize or orientation is set explicitly. Returns a temporary download URL for the generated PDF (valid for 30 minutes). Requires a paid PdfBroker.io plan (Starter or above). EU-first defaults: A4 paper, Portrait orientation when neither the document nor the caller says otherwise.

Input parameters:

- `conformanceLevel` (string): PDF compliance standard. 'None' (default) requests no conformance. Archival, level B — visual fidelity: 'PdfA1b' (widest compatibility), 'PdfA2b', 'PdfA3b' (allows embedded attachments, used for e-in…
- `extraArguments` (object|null): Optional extra WeasyPrint engine arguments forwarded verbatim to the engine. Keys are CLI long-form options without '--'. For switch-style flags use an empty-string value — example: {"presentational-…
- `html` (string|null): Complete HTML document string including <html>, <head>, <style>, and <body> tags. Use CSS for styling. WeasyPrint supports CSS Paged Media for headers, footers, and page numbers via @page margin boxe…
- `orientation` (string): Page orientation: 'Auto' (default) leaves it to the document's CSS, 'Portrait' or 'Landscape' override it. Combine with paperSize for a full override, or use it alone to rotate whatever size the docu…
- `paperSize` (string): Paper size: 'Auto' (default) leaves the page to the document's own CSS — an @page rule such as '@page { size: A5 landscape; }' decides, and when the document says nothing you get A4 portrait (EU-firs…
- `pdfForms` (boolean): Set to true to produce a fillable PDF: the document's <input>, <select> and <textarea> elements become interactive form fields a recipient can type into and save. Default false, which flattens them i…
- `resources` (object|null): Optional embedded resources referenced by relative path in the HTML (images, custom fonts via @font-face, stylesheets, etc.). Keys are relative paths (e.g., 'images/logo.png'), values are base64-enco…
- `url` (string|null): Optional https URL of an already published HTML document, fetched by PdfBroker instead of sending the markup inline. Use this to keep a large template out of the conversation. Only https is accepted,…

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/io-pdfbroker-pdf/mcp#diagnostics

## Score history

- 2026-08-22: 54
- 2026-08-21: 54
- 2026-08-20: 54
- 2026-08-19: 54
- 2026-08-18: 58
- 2026-08-17: 57
- 2026-08-16: 57
- 2026-08-15: 56
- 2026-08-14: 56
- 2026-08-13: 55
- 2026-08-12: 55
- 2026-08-11: 55

## Links

- Remote endpoint: https://mcp.pdfbroker.io/
- Authorisation metadata: https://mcp.pdfbroker.io/.well-known/oauth-protected-resource
- Website: https://www.pdfbroker.io/
- Changelog RSS feed: https://verifymcp.io/servers/io-pdfbroker-pdf/mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-pdfbroker-pdf/mcp.json
- HTML version of this page: https://verifymcp.io/servers/io-pdfbroker-pdf/mcp
