# doc.page PDF Extraction

> Extract PDFs to Markdown, RAG chunks and cited tables; publish tracked Doc Links with read stats.

- name: page.doc/pdf-extract
- version: 1.1.0
- connection class: R0 (autonomous)
- trust: 75/100 flags: no-repository
- quality: 79/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/page.doc%2Fpdf-extract
- tools: https://api.protogrid.dev/v1/servers/page.doc%2Fpdf-extract/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "pdf-extract": {
      "type": "http",
      "url": "https://doc.page/api/mcp",
      "headers": {
        "Authorization": "Bearer ${PDF_EXTRACT_TOKEN}"
      }
    }
  }
}
```

Placeholders to fill: `${PDF_EXTRACT_TOKEN}`.

## Trust

- hygiene: 80
- liveness: 99
- freshness: 65
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-97% ~updated-99d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 79/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-06-18; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 71 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- fail `tools.annotations`: no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: get_doc_link_stats (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); extract_pdf (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); revoke_doc_link (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 1,029 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 7, about 1,029 tokens to load them all
- tool set hash: 09c0f8d39dc466a0b1e9c8e4afb0e8f5
- badge: [![protogrid quality](https://protogrid.dev/badge/page.doc/pdf-extract.svg)](https://protogrid.dev/servers/page.doc/pdf-extract)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://doc.page/api/mcp (streamable-http, auth none, reachable true, uptime30d 0.96581197)

## Packages

_none_

## Tools (7)

- `create_doc_link`: Publish a PDF as a tracked doc.page Doc Link and get back a shareable URL. The link belongs to the API key's account and also appears in its doc.page library. Requires an API key. Free plan: up to 3 active links; custom vanity slugs are premium-only. Optional expiry and open-notification toggle.
- `extract_pdf`: Extract a PDF into clean Markdown and structured elements (headings, paragraphs). Returns the canonical ExtractedDocument object. mode "hybrid" runs a heavier semantic engine that also reconstructs tables and bounding boxes; the default "fast" engine is prose-only (low confidence.tables).
- `get_chunks`: Split a PDF into semantic chunks ready for embeddings (RAG). Each chunk carries its text, estimated tokens, starting page, section heading and the source element ids for citation.
- `get_doc_link_stats`: Reading analytics for one Doc Link of the API key's account, by id or slug. Always returns the summary (total views, unique visitors, last visit). Premium plans additionally get countries, visitor companies (as_org) and per-page views + average dwell time; pass include:["visits"] for the recent visit rows. Requires an API key.
- `list_doc_links`: List the Doc Links of the API key's account (id, slug, URL, name, disabled/expiry state, total views, last view). Use this to recover links created in earlier sessions before querying stats. Requires an API key.
- `list_tables`: Return every table in a PDF as structured JSON (reconstructed rows and columns) with page and bounding box for verifiable citations. Uses the semantic (hybrid) engine.
- `revoke_doc_link`: Disable a Doc Link of the API key's account (by id or slug) so the public URL stops serving. The item and its stats remain in the library; on the free plan this frees an active-link slot. Requires an API key.
