How to Split Bulk PDF Statements by Asking Claude
Every accounting export, payroll run and billing batch has the same shape: one long PDF with everyone's document stacked inside. Sending it on means splitting it — and the usual options are a desktop tool at one range at a time, or a script you'll write, run twice, and lose.
With Apdf connected over MCP, the split is a sentence: describe how the batch
is structured, and the agent picks the right page-range expression for the
split-pdf-file tool.
Connect Claude to Apdf
One OAuth-signed endpoint, no API keys. In Claude Desktop: Settings → Connectors → custom connector. In Claude Code:
claude mcp add --transport http apdf https://apdf.io/mcp/main
Describe the batch, get the files
Point the agent at the export (any publicly reachable URL) and describe the structure instead of the syntax:
https://files.northlight.example/exports/statements-june.pdf
Behind the sentence, the agent passed the expression
n3 — “every 3 pages” —
and got back:
{
"files": [
{
"file": "https://apdf-files.s3.eu-central-1.amazonaws.com/6e6cd55c6a61dab2d0215-1-3.pdf",
"expiration": "2026-07-23T10:11:14.852345Z",
"pages": 3,
"size": 6245
},
{
"file": "https://apdf-files.s3.eu-central-1.amazonaws.com/6e6cd55c6a61dab2d0215-4-6.pdf",
"expiration": "2026-07-23T10:11:14.852345Z",
"pages": 3,
"size": 6246
},
{
"file": "https://apdf-files.s3.eu-central-1.amazonaws.com/6e6cd55c6a61dab2d0215-7-9.pdf",
"expiration": "2026-07-23T10:11:14.852345Z",
"pages": 3,
"size": 6242
}
]
}
The expression language covers the messy real-world cases too: explicit ranges
(1-3,4-6,7-9), chunks of any fixed size
(n3), and z
for “the last page” when you don't know the count
(2-z = everything after the cover). You never
type it — the agent translates your description.
Get surgical — and let the agent verify
Need just one client? extract-pdf-pages pulls a
subset without splitting the rest — and because the agent can also read
PDFs, it can check its own work:
{
"file": "https://apdf-files.s3.eu-central-1.amazonaws.com/a6572e616a61da837845f.pdf",
"expiration": "2026-07-23T10:10:28.033184Z",
"pages": 3,
"size": 6806
}
That read-back step matters when the files carry account data — a mis-counted range in a statement batch is a privacy incident, and the agent can rule it out in the same conversation.
Where to go from here
The same connection carries every PDF operation — and the engagement layer behind them.
Your code made the PDF.
Then it went dark.
Opened, read, re-read, dropped on page 4 — you never see any of it. Share the PDFs you generate through Apdf recipient links, and every signal becomes something you can act on: ping Slack, update the CRM, let an agent follow up. Same account, same API token, one more call.
API · Webhook · MCP