MCP server for EveryPage — upload PDFs, mint trackable share links, and query readership analytics from Claude or any MCP client
everypage-mcp
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
MCP server for EveryPage. Lets an AI assistant turn a PDF
into a tracked share link, and tell you who actually read it — how far they got,
how long they spent, and which page they stopped on.
> "Share this proposal with Jane and Bob, then tell me tomorrow whether either of
> them read past the pricing page."
§ 01 Install
**No install: the hosted server.** EveryPage also runs this server at
https://everypage.co/mcp (Streamable HTTP, OAuth sign-in, no API key). In
Claude, open Customize → Connectors → Add custom connector and paste that URL;
in Claude Code, claude mcp add --transport http everypage https://everypage.co/mcp.
See everypage.co/integrations/claude.
Uploads there take an https link rather than a local file path.
**This package (stdio).** Get an API key from everypage.co/account — it
looks like ep_live_…. Then point your client at the server.
**Claude Code**
**Claude Desktop, Cursor, VS Code, and anything else that reads a JSON config**
Requires Node 20 or newer.
§ 02 What it can do
| Tool | What it does |
| --- | --- |
| everypage_share_pdf | Upload a PDF (local path or https URL) and get a tracked link, embed code and QR URL — applying share settings in the same call |
| everypage_list_files | List documents, optionally filtered by name |
| everypage_get_file | One document's links, protection and status |
| everypage_update_file_settings | Change passcode, expiry, downloads, viewer mode, email gate, view limit, page range, slug |
| everypage_delete_file | Trash a document, or purge it permanently |
| everypage_replace_content | Swap the PDF behind a live link, keeping the link and its history · Pro |
| everypage_get_readership | Who read it, how far they got, where they dropped off |
| everypage_list_events | Recent reads, downloads or captured leads, with a polling cursor |
| everypage_create_variants | One tracked link per recipient, so reads are attributed by name · Pro |
| everypage_list_variants | Those links and their status |
| everypage_update_variant | Rename, revoke or restore one recipient's link · Pro |
| everypage_delete_variant | Delete it, or GDPR-redact the recipient's name · Pro |
| everypage_list_webhooks | Webhook endpoints and their delivery health |
| everypage_manage_webhook | Create, test or delete a webhook endpoint |
| everypage_account | The connected account, its plan, and what that plan allows |
Two prompts ship as slash commands: **readership_digest** (what happened over the
last N days) and **send_tracked_copies** (one link per recipient, done right).
§ 03 Things worth knowing
**Any way of naming a document works.** Every tool that takes a file accepts a
UUID, a short link id, or a share URL pasted straight out of the browser —
including /embed/ links and ones carrying ?via= — so there is no need to look
up an id first.
**Uploads stream.** A local path is read off disk rather than into memory, so a
2 GB document on the Pro plan uploads without the process growing. Files are
checked for the PDF magic bytes and against your plan's size cap *before*
anything is sent.
**A URL is fetched without your credentials.** The url lane downloads from the