Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add canvora/canvora-mcp --skill pdf-documentgit clone --depth 1 https://github.com/canvora/canvora-mcpWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/canvora/canvora-mcp/pdf-document)<a href="https://agentmods.dev/skills/canvora/canvora-mcp/pdf-document"><img src="https://agentmods.dev/badge/skills/canvora/canvora-mcp/pdf-document.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00065 | $0.01385 |
| Opus 5 | $0.00032 | $0.00692 |
| Sonnet 5 | $0.00013 | $0.00277 |
| Haiku 4.5 | $0.00006 | $0.00138 |
Grade A, and why
pdf-document scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 7d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 114 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Multi-page documents and PDFs
Canvora has a dedicated document mode: document_page runs through the
structured pipeline with print layout rather than slide layout — margins,
reading order, and typography built for a page, not a screen. This is the
format behind "make me a brochure / report / company profile / proposal /
menu / catalog / lead magnet". Nobody guesses the ID, so you have to know it.
Setup and credits: see the canvora skill.
Format map
| Want | Format | Notes |
|---|---|---|
| A multi-page document of any kind | document_page |
3:4, 816×1056 (US Letter portrait). Carousel format — --slides = number of pages. 15 credits per page. |
| A single-page one-pager | one_pager |
816×1056, single image, 10 credits |
| An exec summary page | executive_summary |
816×1056 |
| A cheat sheet / reference card | cheat_sheet |
816×1056 |
| A worksheet / workbook page | worksheet |
3:4 1200×1600 |
| An ebook / report cover | ebook_cover |
3:4 1600×2133 |
| A visual mind map | mind_map |
4:3 1600×1200 |
Rule: more than one page → document_page with --slides. Exactly one
page → the specific single-page format. Cover + pages → ebook_cover in the
same call as document_page.
Intake
- What is the document? (brochure, report, proposal, menu, profile…) — this goes into the brief verbatim; the pipeline uses it to pick the layout language.
- How many pages? If unknown: brochure 4, company profile 6, report 8, menu 2. Max 10 per call — for longer, run consecutive calls and merge at export.
- Source? A written doc or PDF is ideal (
--file-url), otherwise--inputfor their copy or--ideafor a topic. - Brand kit? Documents are the format where an off-brand result is most
obvious.
--brand+--logo.
The canonical runs
# Company brochure from existing copy
ID=$(canvora generate --input "$COMPANY_COPY" \
--format document_page --slides document_page=6 \
--brand $BRAND --logo --style corporate | head -1)
canvora status "$ID" --json # repeat every ~30s until completed
# Report PDF from a source document
ID=$(canvora generate --file-url https://example.com/annual-review.pdf \
--format document_page --slides document_page=8 \
--brand $BRAND --logo | head -1)
canvora status "$ID" --json
# Lead magnet: cover + 4 pages in one generation
ID=$(canvora generate --idea "The 2026 SEO audit checklist for small e-commerce stores" \
--format ebook_cover,document_page --slides document_page=4 \
--brand $BRAND --logo --cta | head -1)
canvora status "$ID" --json
# Restaurant menu, exact prices preserved (2 pages — short enough for --wait)
canvora generate --input "$MENU_TEXT" --exact \
--format document_page --slides document_page=2 --wait --json
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 7d ago First seen · 114 lines · 65 tokens per session scan A d2b893f82cd5
pdf-document is a skill published in the GitHub repository canvora/canvora-mcp (0 stars, last pushed 25d ago), licensed MIT. It adds 65 tokens to every session and 1,385 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
Use this skill whenever the user mentions a PDF file or asks to produce/edit one. For read-only tasks such as reading, summarizing, extracting plain text, or answering questions from a PDF, follow this skill's read-only routing rules: use the built-in Read tool first, do not write code or scripts, and prefer…
PDF files: create, read, merge, fill, OCR, edit text.
save-as-pdf
Reformat the current HTML design into a paginated, paper-ready PDF. The "Instant" export already gives the user a PDF at the design's native pixel size — this path is for when they want real pages.
foundry-hosted-agent-validation
Step-by-step process for validating a Python Foundry hosted agent sample (under python/samples/04-hosting/foundry-hosted-agents/) end to end — running it locally (native runtime and azd ai agent run) and after deploying it to an Azure AI Foundry project with azd. Use this when asked to validate a hosted agent sample.
pdf-processing
Extract text from PDFs, fill forms, and merge documents.
azure-ai-document-intelligence-ts
Extract text, tables, and structured data from documents using Azure Document Intelligence (@azure-rest/ai-document-intelligence). Use when processing invoices, receipts, IDs, forms, or building custom document models.