A batch scanner produces one file. The documents inside it need to go to different places. Here is the sequence that takes it apart without opening anything.
How many pages is scan-2026-09.pdf, and pull the text off each page.
Paste this into Claude with the server connected.
pdf_count then pdf_text, both free and unmetered. The text layer is what
tells you where one invoice ends and the next begins, because every first page carries a document
number and a date and the continuation pages do not.
If pdf_text comes back empty, stop. The scan is images and there is no OCR in this
repository. The honest options are rescanning with text recognition on, or splitting by page number
after looking at the file yourself.
Extract pages 1 to 3 of scan-2026-09.pdf as acme-invoice-0912.pdf.
Paste this into Claude with the server connected.
pdf_pages for a range you name, pdf_split to break the file apart wholesale.
Free covers edits on files up to 30 pages, so a 40-page scan needs Pro, or a first split into halves
using page ranges, which is itself an edit and subject to the same limit. That is a real friction and
it is better said than discovered.
Rotate page 4 of acme-invoice-0912.pdf 90 degrees clockwise.
Paste this into Claude with the server connected.
pdf_rotate. Free. Page reordering is Pro.
Once each document is its own file, the rest of the collection can take over. A supplier invoice
becomes a purchase order receipt with purchase_order_receive on the billing-docs server.
A receipt becomes an expense with receipt_attach, which stores the path and a sha256 of
the file so an audit can prove the document has not changed since you attached it. That hash is worth
knowing about: it is the difference between a receipt you filed and a receipt you can defend.
It cannot tell you what a page says if the page is a photograph. It cannot find document boundaries
by looking at the layout. It cannot rename files from their contents on its own, although the model
reading pdf_text output can suggest names and you can accept them. Everything here works
on the text layer or on page numbers, and being clear about that is more useful than a claim that
would fail on the first sideways receipt.
Free and Pro figures from data/facts.json. Ten tools on the PDF server, from
data/tools.json.
Run pdf_text on one page. Text comes back, or nothing does. That takes one call and settles it, and it is free on every tier.
Not as one call. The model reads pdf_text, works out which pages start a new document, and then issues pdf_pages calls for each range. That is two steps rather than one and it works, provided there is a text layer.
No. Every operation writes a new file at the path you name. The source is left as it was, which matters when the source is the only copy of something a client sent.
A file that needs a password to open cannot be read, and the tool says so rather than returning empty pages. Remove the protection in whatever produced it first.
All MCP servers and prices · All guides · Buy the bundle $39