benspdf
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| BENSTOOLS_WORKSPACE | No | Set to put the scratch folder somewhere other than ~/.benstools/work. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| exportA | 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 |
| list_artifactsA | 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. |
| discardA | 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. |
| pdf_page_countA | 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_metadataA | 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 Args: ref: PDF file path, or a workspace artifact id. |
| pdf_check_textA | 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.
Samples up to 10 pages spread across the document, so a true Args: ref: PDF file path, or a workspace artifact id. |
| pdf_extract_textA | 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 Text on a Args: ref: PDF file path, or a workspace artifact id. pages: Which pages: "1-10", "3", "1,5,9-12" or "all". Defaults to all. output: "text", "txt" for the text as an artifact, or "both". layout: Keep the page's spacing, for forms and tables. Costs characters. |
| pdf_check_accessA | 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?".
Treat restrictions as what the file asks of viewers, not as enforcement: once a document is open nothing stops the bits being ignored, and a file that denies copying still yields its text to pdf_extract_text. Report them as the author's intent, never as an action being impossible. Worth reaching for when another tool reports a file as encrypted; this one still answers, since the encryption dictionary is readable when the pages are not. Args: ref: PDF file path, or a workspace artifact id. |
| pdf_page_layoutA | 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.
Pass It does not look at page content; for whether the pages hold readable text use pdf_check_text. Args: ref: PDF file path, or a workspace artifact id. pages: Optional page range for per page detail. Omit for groups only. |
| pdf_render_pagesA | 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 Args: ref: PDF file path, or a workspace artifact id. pages: Which pages: "1-20", "3", "1,5,9-12" or "all". Defaults to all, up to the per-call limit. dpi: Resolution, 36 to 600. 150 suits reading and previewing. view: Return the images to look at, not just artifact ids. |
| pdf_ocrA | 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 Text pages are skipped unless Args: ref: PDF file path, or a workspace artifact id. pages: Which pages: "1-10", "3", "1,5,9-12" or "all". Defaults to all. lang: Tesseract language code, or several as "eng+deu". dpi: Resolution, 72 to 600. 200 suits printed text; higher is slower, not better. output: "text", "pdf" for a searchable copy as an artifact, or "both". force: OCR pages that already have text instead of skipping them. |
| create_test_pdf_fileA | 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 |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 12 tools
Each tool targets a distinct PDF inspection or artifact management action. The pdf_* tools are clearly separated by function (page count, metadata, text check, extraction, access, layout, render, OCR), and the artifact tools (discard, list, export) serve unique purposes. No overlapping responsibilities.
PDF tools follow a consistent 'pdf_' prefix with descriptive names (pdf_page_count, pdf_extract_text), but artifact management tools (discard, export, list_artifacts, create_test_pdf_file) lack the prefix and follow a different verb/noun style. The split is understandable but slightly inconsistent.
12 tools is well-scoped for a PDF utility server. Each tool fills a distinct role in inspecting and processing PDFs, plus artifact lifecycle management. The count is neither bloated nor thin for the apparent domain.
The surface covers the essential PDF inspection workflows: determining page count, text presence, extraction, OCR, metadata, access restrictions, page layout, and rendering. Artifact handling (create, list, discard, export) is complete. No obvious missing operations for the server's stated purpose.