EveryPage MCP server

Your assistant can share a document. Now it can tell you who read it

The EveryPage MCP server gives Claude, Cursor, VS Code and any other MCP client a way to turn a PDF into a tracked link - and then answer the question that actually matters: did they read it, how far did they get, and which page did they stop on? Use the hosted server at everypage.co/mcp, or run it on your own machine.

Set up the EveryPage MCP server in two minutes.

There are two ways to run it. The hosted server needs nothing installed: give your client the URL and sign in. The npm package runs on your own machine with an API key, and can read a PDF straight off your disk.

Hosted server

Add the URL to your client

For Claude (as a custom connector), ChatGPT (as a custom MCP server), Claude Code and any client that supports remote MCP servers. It signs in with your EveryPage account over OAuth, so there is no key to copy. Remote tools take an https link to a PDF rather than a file path.

https://everypage.co/mcp

In Claude Code, add it and then run /mcp to sign in:

claude mcp add --transport http everypage https://everypage.co/mcp

Prefer an API key, or a client that cannot open a sign-in page? Send the key as a header instead:

claude mcp add --transport http everypage https://everypage.co/mcp --header "Authorization: Bearer ep_live_..."

Adding it to claude.ai, Claude Desktop or the Claude mobile apps? Follow the Claude connector steps

Adding it to ChatGPT? Follow the ChatGPT steps

Or run it on your machine

The npm package runs locally, launched by your MCP client. There is nothing to host - and because it runs where your files are, it can read a PDF straight off your disk.

  1. 1

    Create an API key

    In your EveryPage account settings, create an API key. It starts with ep_live_ and is shown once. Every plan can create one, including the free plan.

  2. 2

    Add the server to your client

    Paste the configuration below into your MCP client and restart it. The package is fetched from npm on first run - there is nothing to install by hand. Node 20 or newer is required.

  3. 3

    Ask for what you want

    No commands to learn. Ask your assistant to share a document, or ask whether anyone has read one, and it will pick the right tool itself.

mcp config

Claude Desktop, Cursor, VS Code and friends

Add this to your MCP client's configuration file, replacing the placeholder with your own key. The key stays in your local config and is sent only to everypage.co.

{
  "mcpServers": {
    "everypage": {
      "command": "npx",
      "args": ["-y", "everypage-mcp"],
      "env": { "EVERYPAGE_API_KEY": "ep_live_..." }
    }
  }
}

Using Claude Code? One command does the same thing:

claude mcp add everypage --env EVERYPAGE_API_KEY=ep_live_... -- npx -y everypage-mcp

What the EveryPage MCP server can do.

Fifteen tools, shaped around tasks rather than API endpoints - so "share this and tell me when they read it" is one request, not five. Here are the ones you will use most.

everypage_share_pdf

Upload a PDF from your machine or a link, and get back a tracked share URL, an embeddable iframe and a QR code - applying a passcode, expiry or download rule in the same step.

everypage_get_readership

Who read a document and how far they got: views, unique readers, read time, completion, countries, the page where readers drop off, and which page they went back to.

everypage_list_events

Recent activity across every document - reads, downloads, or leads captured by an email gate - with a cursor so the next check only returns what is new.

everypage_list_files

List your documents with their links and view counts, filtered by name when you are looking for one in particular.

everypage_get_file

Look up a single document: its links, whether it is passcode-protected or gated, and whether it is still live. Accepts a share URL pasted straight from the browser.

everypage_update_file_settings

Change how a document is shared after the fact - passcode, expiry, downloads, viewer mode, email gate, view limit, page range or vanity name.

everypage_create_variants

Pro

Mint a separate tracked link for each recipient in one call, so reads are attributed to a person by name rather than blending into one anonymous total.

everypage_replace_content

Pro

Swap the PDF behind a live link. The link, QR code, settings and readership history all survive - only the document changes.

everypage_manage_webhook

Create, test or delete a webhook endpoint, and see whether an existing one is still delivering.

everypage_account

Which account is connected, which plan it is on, and what that plan allows.

Things worth asking for.

These are ordinary requests, not commands. The assistant works out which tools to call and in what order.

“Share this proposal with a passcode and give me the link.”

One step: the PDF is read off your disk, uploaded, protected, and the share link, QR code and embed snippet come back together.

“Did anyone read the deck I sent on Monday?”

You get a summary rather than a data dump - readers, time spent, completion, and the page where people stopped - with the raw numbers still available underneath.

“Send this to Alice, Bob and Carol with separate links.”

One tracked link per person, labelled with their name, so the next readership check tells you which of them actually opened it.

“Anything new since yesterday?”

A digest of reads, downloads and captured leads across every document, using a cursor so nothing is counted twice.

How it behaves.

The details that decide whether an integration is pleasant or exhausting to use.

Paste a link, not an ID

Anywhere a document is named, you can give a share URL copied from the browser, a short link ID, or the full UUID. There is no lookup step and nothing to memorise.

No key to leak

The hosted server signs in with OAuth, so no key is ever copied around. With the local package, the key lives in your MCP config and is sent only to everypage.co. Either way, a PDF fetched from someone else's URL is downloaded with no EveryPage credentials attached at all.

Large files stream

A local PDF is read off disk rather than into memory, so a 2 GB document uploads without the process growing. Files are checked for size and format before anything is sent.

Deleting is reversible by default

Deleting a document moves it to the trash, and says so; destroying it permanently takes an explicit instruction. Irreversible tools are flagged so clients can ask you first.

What each plan unlocks.

The MCP server itself is free and works on every plan. What it can do is bounded by the plan the connected account is on - and a refusal always says which plan is needed.

CapabilityFreeBasicPro
Share a PDF and get a tracked link✓✓✓
Readership summary and activity feed✓✓✓
Passcodes, view limits and read notifications—✓✓
Page-by-page drop-off statistics—✓✓
A separate tracked link per recipient——✓
Email-capture gate, content replacement, page ranges——✓

Questions.

Which AI clients does this work with?

Any client that speaks the Model Context Protocol. That includes Claude on the web, desktop and mobile, Claude Code, Cursor, VS Code, and a growing list of others. Clients that support remote servers can use https://everypage.co/mcp and sign in; everything else runs npx everypage-mcp with an API key.

Does my assistant get access to my documents' contents?

No. The tools work with links and readership statistics, not document contents. The one file it reads is the PDF you explicitly ask it to share, and that is read only to upload it.

Can it delete something by accident?

Deleting a document moves it to the trash, where it can be restored - destroying one permanently requires an explicit instruction. Every irreversible tool is marked as such in the protocol, so clients that support confirmation prompts will ask before running it. If you would rather it could not write at all, set EVERYPAGE_READ_ONLY to true and only the read-only tools are offered.

Do I need a paid plan?

No. Sharing documents and seeing who read them work on the free plan. Passcodes, view limits and page-by-page statistics need Basic; per-recipient links, the email-capture gate and content replacement need Pro.

Is this different from the API, Zapier or n8n?

It is the same API underneath. Zapier, Make and n8n are for workflows you build once and leave running; this is for asking in the moment, in conversation. Many people use both - an assistant to share and check, a workflow to route new leads into a CRM.

Is it open source?

Yes, MIT licensed, on GitHub, and published on npm and in the official MCP registry. The tool surface is snapshot-tested, so a tool cannot be renamed or removed without a deliberate release.

Ask your assistant who read it.

Create an account, generate an API key, and paste four lines into your MCP client. The next document you share can answer for itself.

Start free

Related: all integrations · the developer API · the n8n node · raw webhooks · the DocSend alternative