Faceabot PDF text extractor
Server Details
Read the text of any public PDF, page by page, plus page count and metadata. Free, no key.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 2 tools
The two tools have clearly distinct purposes: one extracts text content, the other returns metadata and page information. An agent can easily decide which to use based on whether it needs the actual text or just information about the PDF.
Both names share the `pdf_` prefix, which gives a clear domain grouping. However, `pdf_extract_text` follows a verb_noun pattern while `pdf_info` is noun-only, so the action convention is not perfectly consistent.
With only two tools, the set is quite thin for a PDF handling server. While the narrow purpose may justify minimalism, the count is borderline and leaves little room for common adjacent operations.
The server covers the core read-only lifecycle: inspect a PDF and extract its text page by page. Minor gaps exist, such as no OCR for scanned PDFs (explicitly excluded) and no broader file-source support, but these are reasonable limitations for the stated purpose.
Available Tools
2 toolspdf_extract_textExtract text from a PDFARead-onlyIdempotentInspect
Reads a PDF from its public https address and returns its text, page by page (parse / read a PDF: invoices, papers, reports, contracts, forms…). Up to 10 MB; use start to read further. Use when: you need the text content of a PDF file. Not for scanned PDFs (images only): those need OCR. Example: {"url":"https://pdf.faceabot.com/sample.pdf"}
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Public https address of the PDF file | |
| pages | No | Optional pages to read, e.g. "1-3" or "2,5". Default: all | |
| start | No | Character offset to continue a long text | |
| max_chars | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds genuinely new context: the 10 MB size ceiling, page-by-page return shape, and the 'use start to read further' continuation path. It omits auth/rate-limit notes, keeping it out of 5 territory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then constraints, then an example. The parenthetical 'parse / read a PDF: invoices, papers, reports, contracts, forms…' keyword list is padding, but everything else earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly covers the return shape ('text, page by page'), size limits, and the continuation mechanism, plus the OCR exclusion. Missing only the semantics of max_chars, which leaves one parameter's behavior unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75% and the schema already explains url, pages, and start. The description's 'use start to read further' merely restates the schema's own offset wording, and max_chars is undocumented in both places, so the description does not compensate for the remaining gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Reads a PDF ... returns its text, page by page') with the source constraint (public https address). It does not name the sibling pdf_info, so the agent must infer the distinction between text extraction and metadata inspection from the verb alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use when: you need the text content of a PDF file' gives an explicit trigger, and 'Not for scanned PDFs (images only): those need OCR' gives an explicit exclusion with the alternative named. It stops short of routing against the sibling pdf_info, so it lands just under a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pdf_infoPDF informationARead-onlyIdempotentInspect
Number of pages, title, author, creation date and whether the PDF has extractable text. Use when: you want to know what a PDF is before reading it. Example: {"url":"https://pdf.faceabot.com/sample.pdf"}
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Public https address of the PDF file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds the return-shape detail that no output schema provides — that it reports extractability of text — which is genuinely useful for deciding whether to call pdf_extract_text next. It says nothing about authentication, rate limits, or failure behavior for unreachable URLs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded lines: output fields first, then the usage trigger, then an example. Nothing is bloated, though the embedded example call duplicates the example already present in the input schema, which is a small amount of redundant real estate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing return values and does so by listing the reported fields. Combined with annotations covering the safety profile and a fully documented single parameter, an agent has what it needs; only the fallback behavior on unreadable URLs is left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a single 'url' parameter already documented as 'Public https address of the PDF file'. The description adds no new meaning about the parameter — its inline example is identical to the one already in the schema — so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates exactly what the tool reports (page count, title, author, creation date, text extractability), which is a specific resource-level statement rather than a tautology. It implicitly separates itself from pdf_extract_text by framing the output as 'what a PDF is' rather than its contents, but it never names that sibling, so differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use when: you want to know what a PDF is before reading it' gives a clear triggering condition and even implies the ordering (inspect first, then read). It does not name pdf_extract_text as the follow-on alternative or state any exclusions, so it falls short of the explicit when/when-not routing that would earn a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- First observed
pdf_extract_text - First observed
pdf_info
Related MCP Connectors
PDF URLs to per-page text, tables as rows, Markdown, metadata and OCR for scanned pages.
Read any public web page as clean text, and files of public GitHub repositories. Free, no key.
21Extract text, tables and RAG chunks from public PDF URLs; pay-per-event via your Apify account.
Extract text, pages and metadata from PDFs in bulk, with OCR for scanned files.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceProvides tools for reading and extracting text from PDF files, supporting both local files and URLs.47-
- AlicenseNot gradedqualityDmaintenanceProvides random access to PDF contents with selective page extraction, text search, outline navigation, image extraction, and page rendering capabilities. Reduces token usage by allowing targeted content extraction instead of processing entire documents.4MIT
- FlicenseAqualityDmaintenanceEnables reading and extracting content from PDF documents including text (as Markdown), images, tables, and metadata from both local files and URLs, with OCR support for scanned documents.2-
- AlicenseAqualityDmaintenanceEnables PDF processing and analysis including text extraction, metadata retrieval, search, page manipulation, splitting/merging, conversion to images, and form handling.10MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.