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/jacksenechal/scan-mcp/scannpx skills add jacksenechal/scan-mcp --skill scangit clone --depth 1 https://github.com/jacksenechal/scan-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/jacksenechal/scan-mcp/scan)<a href="https://agentmods.dev/skills/jacksenechal/scan-mcp/scan"><img src="https://agentmods.dev/badge/skills/jacksenechal/scan-mcp/scan.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 | $0.00082 | $0.00670 |
| Opus 5 | $0.00041 | $0.00335 |
| Sonnet 5 | $0.00016 | $0.00134 |
| Haiku 4.5 | $0.00008 | $0.00067 |
Grade A, and why
scan 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 4d 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 — 71 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Scanner Control via scan-mcp
THE GOLDEN RULE
Trust the server defaults. When the user requests a scan without specific requirements:
- Call
start_scan_job({})with NO parameters - Do NOT call
list_devicesunless the user explicitly asks for a specific scanner - Do NOT gather device capabilities "just in case"
- Server auto-selects device, resolution (300dpi), color mode (Lineart), source (ADF Duplex → ADF → Flatbed)
Only override parameters when the user's intent clearly requires it.
Decision Tree
User request → Analyze intent:
1. Generic scan ("scan this", "scan document")
→ start_scan_job({}) immediately
2. User asks for specific scanner ("use the Epson")
→ list_devices, then start_scan_job({ device_id })
3. Document type needs special handling ("photo", "duplex")
→ Override only specific params needed
Common Overrides
| User Intent | Parameters |
|---|---|
| Generic scan | {} |
| Photo scan | { source: "Flatbed", color_mode: "Color", resolution_dpi: 600 } |
| Duplex stack | { duplex: true } |
| OCR-optimized | { color_mode: "Gray", resolution_dpi: 300 } |
For more mappings, see EXAMPLES.md.
Standard Workflow
- Call
start_scan_job(params)→ receive{ job_id, run_dir, state } - Poll
get_job_status({ job_id })untilstate: "completed" - Results in
run_dir:page_*.tiff(captured pages)doc_*.tiff(assembled document)manifest.json(metadata)events.jsonl(event log)
Quick Troubleshooting
If scan fails:
get_manifest({ job_id })— check state and parametersget_events({ job_id })— find error details inscanner_failedevents- Common fixes:
- "No devices" → Ask user to check scanner power/connection
- "Feeder jam" → Try
{ source: "Flatbed" }
For detailed troubleshooting, see TROUBLESHOOTING.md.
Reference Materials
- TOOLS.md — Complete tool reference with all parameters
- EXAMPLES.md — User intent → parameter mappings with reasoning
- TROUBLESHOOTING.md — Detailed troubleshooting flows
- CONFIG.md — Environment variables and configuration
What ships with it
4 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
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.
- 4d ago First seen · 71 lines · 0 tokens per session scan A 923bb55cb095
scan is a skill published in the GitHub repository jacksenechal/scan-mcp (6 stars, last pushed 1mo ago), licensed MIT. It adds 82 tokens to every session and 670 once invoked, about $0.0004 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
indirect-injection-detection
Detect indirect prompt injection (goal hijack). Instructions hidden in "external" content (documents, RAG, web) that the agent processes. Use when the agent has document/RAG/web/file input.
pdf-reader
Extract text from PDF files. Use when reading, parsing, or analyzing PDFs.
document-query
Use when reading, extracting, summarizing, comparing, or answering questions over local or remote documents, code files, PDFs, Office files, HTML/text files, large text-heavy files, and fallback OCR for document images or scans when vision tools are unavailable or insufficient.
docx-press
Teaches agents how to author Markdown that renders cleanly into DOCX via writedocx, with heading hierarchy (up to 6 levels), tables, lists, blockquotes, code blocks, citations, embedded images, SVG diagrams (rendered to PNG first), and document structure patterns for reports, proposals, and technical documents.
Google Workspace integration — Gmail, Drive, Calendar, Contacts, Tasks, and Sheets via gogcli.
notion
Read, create, update, and manage Notion pages, databases, and blocks.