Skip to content
Agentmart
Submit a tool

Benspdf

Read PDFs locally: text, pages, metadata, scan detection, layout, permissions, render, OCR.

Connector by benbergner · GitHub account verified by the MCP Registry

IndexedApache-2.0Local (stdio)★ 1
Write a review

Install

Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/benbergner-benspdf

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Read PDFs locally: text, pages, metadata, scan detection, layout, permissions, render, OCR.

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.

Tools
8 read · 2 write · 1 delete · 1 not yet classified
Secrets
None asked for
Install scripts
Not scanned yet
Runs as
Python package

Tools by what they do 12

Read from the source code; the running server may list different tools.

Read 8 · Look things up without changing anything.

  • list_artifacts
  • pdf_check_access
  • pdf_check_text
  • pdf_extract_text
  • pdf_metadata
  • pdf_ocr
  • pdf_page_count
  • pdf_page_layout

Write 2 · Create, change, send or run things.

  • create_test_pdf_file
  • export

Delete 1 · Delete, drop, revoke or wipe things.

  • discard

Not yet classified 1 · We could not tell from the name and description.

  • pdf_render_pages

Files it touches

  • Any path the agent passes to its tools

Tools (12)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • create_test_pdf_file

    Create a test PDF, handy for trying the other tools without hunting for one. The pages are blank, so this is for exercising tools rather than for anything that needs real content. Args: output_path: Optional path to also write the PDF to. Omit to keep it as a temporary artifact. num_pages: Number of blank pages to create (default: 3) title: Optional title for the PDF metadata

  • discard

    Delete temporary artifacts from the workspace now. Only accepts artifact ids, never file paths, so this cannot delete the user's own files. Artifacts expire on their own, so this is only needed when the user explicitly asks to clean up. Args: refs: Artifact id, or list of artifact ids, to delete.

  • export

    Save one or more results to a real location on disk. The only tool that writes to the user's filesystem, so call it once at the end, when they have said where the output should go. Never hand an artifact id back as if it were a finished file; artifacts expire. Args: refs: Artifact id, or list of artifact ids, to export. dest: Where to write. For a single artifact this may be a full file path. For several artifacts, or when `name` is given, this is a directory and is created if missing. name: Filename template used when writing into a directory. Placeholder…

  • list_artifacts

    List recent temporary artifacts in the workspace, newest first. Useful when you have lost track of an artifact id from earlier in the conversation, so you can find it again instead of redoing the work. Args: limit: Maximum number of artifacts to return.

  • pdf_check_access

    Check a PDF's encryption and what it permits: printing, copying, editing. Answers "is this locked, and what am I allowed to do with it?". `encrypted` and `needs_password` are separate answers and the difference matters: most encrypted files have no user password, so they open silently and only carry restrictions. `permissions` gives a boolean per action, `restrictions` lists what is denied, and an unencrypted file permits everything — a PDF has nowhere to keep restrictions but its encryption dictionary. Treat restrictions as what the file asks of viewers, not as enforcement: once a document…

  • pdf_check_text

    Check whether a PDF has a text layer, looks scanned, or needs OCR. Answers "can I read this, or is it a picture of a document?". Worth running before extracting text from a file you have not seen. `verdict` is "text", "scanned", "mixed", or "no_text" — the last meaning nothing readable but nothing scan-like either, so blank, vector-only, or illustrated pages that OCR cannot help. `needs_ocr` follows from it, `summary` is a sentence worth quoting, and the per page evidence behind the verdict comes back alongside, including each page's `image_coverage` (the largest image's share of the page ar…

  • pdf_extract_text

    Read the text of a PDF that has one, page by page. The cheap and exact way to read a document: milliseconds a page, and the characters are the ones the file holds. Prefer it to pdf_ocr, which is for pages carrying no text, and to pdf_render_pages, which costs an image a page. pdf_check_text says which path a file needs; page numbers come back with the text, so quote page 8 rather than "the document". A long document arrives in ranges: one call returns about 50,000 characters and names the pages it did not reach, so when `truncated`, do what the summary says. `output="txt"` writes the whole e…

  • pdf_metadata

    Read a PDF's document properties: title, author, dates, producer, keywords. Answers "who made this, when, and with what". It does not count pages (use pdf_page_count) and says nothing about whether the pages hold readable text (use pdf_check_text). A PDF can store these fields in two independent places, the legacy Info dictionary and an XMP packet, and the two often disagree. The normalized answer is at the top level, preferring XMP, with `sources` naming the store each value came from and `conflicts` listing every field where the two differ, both values included. Both stores also come back …

  • pdf_ocr

    Read a scanned PDF with OCR, and optionally add a real text layer to it. The way to read a page with no text: a scan, or an export that lost its text. Prefer it to pdf_render_pages for reading; run pdf_check_text when unsure. Tesseract is a system install, and a missing binary or language errors with how to install it. OCR can be confidently wrong, so pages report `mean_confidence` and `low_confidence_words`: say when confidence is low rather than presenting text as certain, and look at a bad page with pdf_render_pages. Text pages are skipped unless `force`. A long document may stop early; …

  • pdf_page_count

    Count the pages in a PDF. Answers "how many pages is this?". Reads only the document's page tree, so it stays cheap on large files. It does not read page text, page sizes, or document properties. Args: ref: PDF file path, or a workspace artifact id.

  • pdf_page_layout

    Measure a PDF's page sizes, orientation and rotation. Answers "what size is this, is it all the same, and why does one page come out sideways?". Reads page geometry only, so it stays cheap on long documents. `sizes` groups the pages by shape, most pages first, each carrying the page numbers it covers as a range like "1-16,18", so a 300 page document answers in one entry instead of 300 rows. Sizes are the page as a reader sees it: CropBox clipped to MediaBox with `/Rotate` applied, so a landscape box rotated 90 degrees reports as portrait. Pages within 3pt of a known paper are grouped and nam…

  • pdf_render_pages

    Render PDF pages to images, so a page can be looked at rather than read. Use it to see what a page looks like: checking a change landed (did a redaction remove content, did a split cut where intended), previewing, and pages where appearance is the content — handwriting, signatures, charts, checkbox state. For *reading* a scan prefer pdf_ocr, whose text layer is searchable and needs no vision model; render when OCR is unavailable or would mangle what matters. Every page is saved as a PNG artifact and its id returned. With `view`, the default, the first few images also come back to be looked …

Signals

Stars
1
Forks
0
Open issues
0
Weekly downloads
61
Last commit
Sep 13, 2026 (1 month ago)
Last release
Sep 13, 2026 (1 month ago)
Last package publish
Sep 13, 2026 (1 month ago)

From GitHub (fetched Oct 24, 2026) and the package registry.

Details

Registry name
io.github.benbergner/benspdf
Version
0.3.0
Auth
No auth
Packages
pypi benspdf-mcp
License
Apache-2.0
First seen
Oct 24, 2026
Last checked
Oct 25, 2026
Cite this page

Benspdf MCP server. Agent Mart. https://agentmart.dev/connectors/benbergner-benspdf (last updated 2026-10-25)