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 agentmods add skills/sylphxai/pdf-reader-mcp/citranpx skills add SylphxAI/pdf-reader-mcp --skill citragit clone --depth 1 https://github.com/SylphxAI/pdf-reader-mcpWhat 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 | $0.00000 | $0.00200 |
| Opus 5 | $0.00000 | $0.00100 |
| Sonnet 5 | $0.00000 | $0.00040 |
| Haiku 4.5 | $0.00000 | $0.00020 |
Grade A, and why
citra 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 yesterday.
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.
What it actually says
Citra — PDF evidence for agents
Install
npm i -g @sylphx/citra
# or
npx @sylphx/citra
Tools
| Tool | Job |
|---|---|
read_pdf |
Agent Document Twin (structure, tables, citations) |
search_pdf |
Literal search with page/bbox evidence |
pdf_evidence |
inspect / render / crop / OCR follow-ups |
SDK
import { Citra } from '@sylphx/citra/sdk'
const citra = Citra.create()
const result = await citra.read({ path: '/abs/doc.pdf' })
Rules
- Local-first; no API key required for default path
- Missing native binary → fail closed
- Evidence on results (envelope v1); no
evidence_firsttool - Do not install Prism for PDF routing
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.
- yesterday First seen · 33 lines · 0 tokens per session scan A 2eaf2e5f0a70
citra is a skill published in the GitHub repository SylphxAI/pdf-reader-mcp (909 stars, last pushed 2d ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 200 tokens. 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-30.
Other skills, from other repositories
che-word-mcp
A Swift-native MCP server for Microsoft Word (.docx) document manipulation. Provides 83 tools for reading, writing, and modifying Word documents without requiring Microsoft Word installation.
open-pr
Use when asked to open or create a PR, commit and push, ship a change, or finish up a change — even if they do not say the word skill. Runs the hard local gates (pytest, ruff check, ruff format --check, and the beverages-workspace lint), routes ingest/llm/rules changes through verify-corpus first, branches claude/ …
book-skills-creator
Create modular, source-grounded Agent Skill packs from explicitly selected books or documents. Use when a user wants atomic skills, combo workflows, a router, references, a skill map, and validation derived from a specific source.
sample-pack-example-a
Use this sample atomic unit when the task needs the first focused capability from the sample pack.
sample-pack-example-b
Use this sample atomic unit when the task needs the second focused capability from the sample pack.
sample-pack-example-workflow
Use this sample combo workflow when the task needs both sample atomic units in sequence.