Direct answer
PDF Extraction MCP Tool for AI Agents
pdf_extract turns a PDF URL into text your agent can use, with a receipt for the call. Point the tool at a public PDF link and it returns the text in reading order, ready for summarizing, quoting, or feeding into the next step of the job. pdf_extract runs through Zambo, the verifiable work layer for AI, at the MCP endpoint https://zambo.dev/mcp, the same endpoint that gives Claude, Cursor, and ChatGPT 153 tools. So the extraction is recorded like every other call: what URL went in, what text came out, and a receipt anyone can check.
Updated October 20, 2026.
The call
Once your client is connected to https://zambo.dev/mcp, the extraction is one tool call. In conversation it looks like this:
You: Extract the text from this PDF and pull out every price it mentions:
https://example.com/reports/annual-report.pdf
Agent calls: pdf_extract
url: https://example.com/reports/annual-report.pdf
Agent: (works on the returned text in the same session)The only input is the URL. The PDF has to be reachable at a public link, because the tool fetches it the way a browser would. If the document only exists on your machine, put it somewhere with a link first, then hand the agent the link.
Output shape
The result carries three things:
- The extracted text. The text of the document, in reading order, delivered in the tool result so the agent can work on it immediately, with no download and re-upload step.
- The source URL. The exact link the text came from, recorded with the result, so a quote can always be traced back to its document.
- The receipt for the call. A verifiable AER-1 receipt committing to the result, covered in its own section below.
Expect text, not layout. Headings, paragraphs, and lists arrive as the words in the order they are read. Fonts, columns, and page furniture do not survive as structure, which is fine for the jobs agents actually do with documents: summarizing, answering questions against the text, pulling figures, and drafting from the content.
Tables and long files
Tables come back as text in reading order. The words and numbers are all there; the grid is flattened. The working pattern: have the agent rebuild the table explicitly from the extracted rows, then spot-check two or three figures against the original PDF before the numbers go anywhere important. Never let an agent quote a table total it has not re-read in the source.
Long files return their full text, and a 300-page report is more than one session should try to hold at once. Extract once, then have the agent work section by section: summarize a section, save the notes to memory, move on. Because the extraction itself is a recorded call, the agent can re-run it in a fresh session and land on the same text, instead of you re-uploading the file and hoping the new session sees the same document.
Scanned PDFs are the hard limit, covered in the honest limits below: a page that exists only as an image has no text layer to extract.
The receipt for the extraction
Extraction is exactly the kind of step that gets disputed later. A summary cites the report; someone asks which version, and whether the text the agent used is the text in the document. The receipt answers the checkable half of that question. It commits to the result the call returned, and anyone can open it at zambo.dev/verify/ and recompute the commitment: a match means the text in front of them is the text the extraction produced. Keep the receipt reference with the work the extraction feeds into, the way you would keep a source link, only stronger: a link can be edited at the other end, and a receipt cannot be edited at all without the check failing. The format behind the receipt is AER-1, the agent execution receipt standard.
Use it in Claude, Cursor, and ChatGPT
One URL serves every client. Add https://zambo.dev/mcp as a custom connector or MCP server in the client you use, and pdf_extract is there alongside the other tools: 35 on the default surface, 153 with ?full=true on the URL. In Claude, add the URL as a custom connector and ask for the extraction in plain words. In Cursor, put the URL in .cursor/mcp.json as shown on the best MCP servers for Cursor page. In ChatGPT, add the same URL as a custom connector. Gemini and Grok take the same URL the same way. One setup, learned once, works everywhere, and the receipt format does not change between clients.
Trying it costs little: the free tier covers first calls, and a Day Pass is $0.99 for 24 hours of full use. Ongoing use is the Zambo Pass at $29 a month or $290 a year, and $19 a month for $ZAMBO holders. Full details at zambo.dev/pricing/.
Honest limits
Four edges, stated plainly. First, scanned PDFs: a document that is only images of pages has no text layer, and pdf_extract returns little or nothing for it; run that kind of file through OCR first. Second, layout flattens: tables lose their grid and multi-column pages read straight through, so rebuild structure explicitly and spot-check figures. Third, the tool fetches public URLs; a PDF behind a login it cannot pass will not extract. Fourth, the receipt proves the extraction record was not changed after the fact; it does not prove the PDF itself was true, current, or the right version. Judge the document as a source the way you always would.
Frequently asked questions
Is there a PDF extraction MCP tool for AI agents?
Yes. The tool is pdf_extract, part of Zambo, the verifiable work layer for AI, reachable over MCP at https://zambo.dev/mcp. Give pdf_extract a PDF URL and it returns the text of the document in reading order, ready for the agent to summarize, quote, or feed into the next step of the job. The call is recorded like every Zambo call, with the source URL, the extracted text, and a verifiable receipt, so the extraction can be checked later instead of trusted.
How do I extract text from a PDF with an AI agent?
Connect your AI client to https://zambo.dev/mcp, then ask the agent to call pdf_extract with the URL of the PDF. In plain words: extract the text from this PDF and summarize it, or pull the figures from the tables. The agent makes the call, gets the text back, and works on the text in the same session. The PDF needs to be reachable at a public URL. If the file only exists on your machine, put it somewhere with a link first, then hand the agent the link.
What does pdf_extract return?
The result carries the extracted text of the document in reading order, the source URL it came from, and the receipt for the call. The agent receives the text directly in the tool result, so there is no separate file to download and re-upload. Keep the receipt reference with the work the extraction feeds into: it is the record that ties the text your agent used back to the exact PDF it came from, and anyone can check it free at https://zambo.dev/verify/.
Does pdf_extract handle tables and long PDFs?
Tables come back as text in reading order. The words and numbers are there, but the grid structure of the table is flattened, so have the agent rebuild the table explicitly and spot-check figures against the original before you rely on them. Long PDFs return their full text, which can be more than one session should swallow at once; the working pattern is to extract once, then have the agent summarize and save notes section by section. Scanned PDFs are the hard limit: a PDF that is only images of pages has no text layer to extract, and pdf_extract will return little or nothing for it.
How do I know the extracted text was not changed later?
Every pdf_extract call produces a verifiable receipt, in the AER-1 format, that commits to the result the call returned. Open the receipt at https://zambo.dev/verify/ and the check recomputes the commitment over the saved result: a match means the text you are reading now is the text the extraction produced then. The receipt proves the extraction record was not changed after the fact. It does not prove the PDF itself was accurate, so judge the content of the document the way you would judge any source.