everypage-mcp
OfficialClick on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@everypage-mcpShare the proposal with Jane and Bob and tell me who read past the pricing page."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
everypage-mcp
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
Get an API key from everypage.co/account — it
looks like ep_live_…. Then point your client at the server.
Claude Code
claude mcp add everypage --env EVERYPAGE_API_KEY=ep_live_... -- npx -y everypage-mcpClaude Desktop, Cursor, VS Code, and anything else that reads a JSON config
{
"mcpServers": {
"everypage": {
"command": "npx",
"args": ["-y", "everypage-mcp"],
"env": { "EVERYPAGE_API_KEY": "ep_live_..." }
}
}
}Requires Node 20 or newer.
Related MCP server: Docalyze
§ 02 What it can do
Tool | What it does |
| 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 |
| List documents, optionally filtered by name |
| One document's links, protection and status |
| Change passcode, expiry, downloads, viewer mode, email gate, view limit, page range, slug |
| Trash a document, or purge it permanently |
| Swap the PDF behind a live link, keeping the link and its history · Pro |
| Who read it, how far they got, where they dropped off |
| Recent reads, downloads or captured leads, with a polling cursor |
| One tracked link per recipient, so reads are attributed by name · Pro |
| Those links and their status |
| Rename, revoke or restore one recipient's link · Pro |
| Delete it, or GDPR-redact the recipient's name · Pro |
| Webhook endpoints and their delivery health |
| Create, test or delete a webhook endpoint |
| 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
host you named using no EveryPage headers at all, then uploads the bytes. Your
API key never travels to a third-party host.
Readership is summarized, not dumped. The tool computes the finding — the
steepest drop in the reach funnel, the most re-read page — and puts the raw rows
in structuredContent for anything that wants to chart them.
Event cursors are per-stream. everypage_list_events returns a nextCursor,
and it is only valid for the same type. The three streams have independent id
sequences; crossing them silently returns the wrong window.
Deleting is reversible by default. everypage_delete_file trashes, and says
so; purge: true is the irreversible one. Tools that cannot be undone are marked
with MCP's destructiveHint, so clients that support confirmation prompts will
ask before running them.
§ 04 Configuration
Variable | Required | Default | Meaning |
| yes | — |
|
| no |
| API origin, for self-hosted or development instances |
| no |
|
|
§ 05 Plans
Some features are plan-gated, and a refusal will say which plan is needed.
everypage_account reports the current plan and what it locks.
Free | Basic | Pro | |
Upload size | 20 MiB | 200 MiB | 2 GiB |
Live documents | 3 | 100 | unlimited |
Tracked links, share settings, webhooks | ✓ | ✓ | ✓ |
Passcode, view limits, view notifications, per-page stats | ✓ | ✓ | |
Per-recipient links, email-capture gate, content replacement, watermarks, page ranges | ✓ |
The API allows 120 requests per minute per key.
§ 06 Not included
/files/claim and the Canva publishing lane (app plumbing, not agent work),
branding assets and hotspots (large Pro payloads with no natural agent use), and
the authenticated QR fetch — the qr_url every tool returns is public and needs
no credentials. Open an issue if you want any of them.
§ 07 Development
npm ci
npm run typecheck
npm test
npm run build
npm run inspector # drive the tools by hand in the MCP inspectorThe tool surface is snapshotted in test/schemas.test.ts: renaming a tool or one
of its inputs fails CI on purpose, because it breaks every saved prompt and agent
config that names it.
Field names and output shapes are pinned by the cross-integration contract shared with the EveryPage Zapier, Make and n8n integrations — change that first.
§ 08 Links
License
Available Tools
15 toolseverypage_accountAccount and planARead-only
The connected EveryPage account: which email it belongs to, which plan it is on, and what that plan allows (upload size, document count, and which features are locked). Check this before attempting a plan-gated action.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| name | No | |
| plan | Yes | |
| No | ||
| lockedFeatures | Yes | |
| maxActiveFiles | Yes | |
| maxUploadBytes | Yes | |
| maxUploadLabel | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds useful behavioral context by listing exactly what account details are returned (email, plan, upload size, document count, locked features). It does not disclose other behavioral aspects like response format, but for a read-only account lookup this is sufficient.
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?
The description is two sentences, front-loaded with the core purpose and followed by an actionable usage hint. Every word earns its place; no fluff or repetition.
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?
For a zero-parameter read-only tool with an output schema available, the description fully covers what the tool does, what it returns, and when to use it. No additional information is needed.
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?
The tool has zero parameters, so the baseline is 4. The description adds no parameter semantics because there are none to describe, and the schema coverage is 100% by default.
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 clearly states the tool returns information about the connected EveryPage account: email, plan, and plan limitations. This is specific and distinguishes it from sibling tools that operate on files, sharing, and webhooks.
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?
The description explicitly says to check this before attempting a plan-gated action, giving clear when-to-use guidance. It does not mention when not to use it or name alternatives, but that is less critical for a simple account info tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
everypage_create_variantsCreate per-recipient linksA
Mint one tracked link per recipient for a document, so each person's reads are attributed to them by name instead of blending into one anonymous total. Pass every recipient in a single call. Each link can also override the document's download permission or page range for that person. Requires the Pro plan.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | The document: UUID, short link id, or a pasted share URL. | |
| recipients | Yes | One entry per recipient. |
Output Schema
| Name | Required | Description |
|---|---|---|
| failed | Yes | |
| created | Yes | |
| fileUuid | Yes | |
| variants | Yes | The links created, in the order requested. |
| warnings | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations only indicating readOnly=false, destructive=false, idempotent=false, the description adds meaningful behavioral context: it creates links, attributes reads by name, supports per-recipient overrides, and requires Pro plan. It does not describe any side effects or system behavior in depth, but given the low annotation detail, this is a solid disclosure.
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?
Two sentences deliver the primary purpose, usage constraint, key features, and a requirement. Every phrase earns its place, with no filler or repetition of schema details.
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?
The tool has an output schema (not shown, but present), so return values are covered. The description covers purpose, usage, constraints, and optional features, making it complete for an AI agent to decide when and how to invoke it, especially given rich sibling context.
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 100% and parameters are well-described, so the baseline is 3. The description adds value by explaining that all recipients should be passed in a single call and that per-recipient overrides exist, tying the schema's nested properties to the tool's purpose. This enriches the schema without redundancy.
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 uses a specific verb ('Mint') and clearly identifies the resource (tracked links per recipient for a document) and the core value proposition (per-recipient attribution instead of anonymous totals). It also distinguishes itself from siblings like everypage_share_pdf and everypage_list_variants by focusing on per-recipient creation.
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?
The description provides clear context for when to use the tool: when per-recipient read attribution is needed. It also gives an operational guideline ('Pass every recipient in a single call') and a prerequisite (Pro plan). It doesn't explicitly name alternatives or exclusions, but the implied contrast with anonymous totals guides selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
everypage_delete_fileDelete a documentADestructiveIdempotent
Move an EveryPage document to the trash so its share link stops working. Trashed documents can be restored from the EveryPage dashboard. Set purge to true to destroy it permanently instead - that cannot be undone.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | The document: UUID, short link id, or a pasted share URL. | |
| purge | No | Destroy permanently instead of trashing. Irreversible - confirm with the user first. |
Output Schema
| Name | Required | Description |
|---|---|---|
| uuid | Yes | |
| purged | Yes | True when the document was destroyed permanently. |
| trashed | Yes | True when the document went to the trash and can still be restored. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive intent, but the description adds crucial context: the document goes to trash (restorable), the share link stops working, and setting purge to true causes permanent irreversible deletion. This goes well beyond the binary annotations and fully informs the agent of side effects.
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?
The description is two sentences long, front-loaded with the primary action, and every sentence adds valuable behavioral context (trash, link outage, restoration, purge irreversibility). No waste or redundancy.
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?
Given only 2 simple parameters, an output schema, and strong annotations, the description covers all essential user-facing behavior: default soft delete, restoration path, and permanent purge option. It does not need to describe return values because the output schema exists.
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?
The input schema already describes both parameters with 100% coverage ('file' as UUID/short link/URL, 'purge' as permanent destruction). The description reiterates purge behavior but does not add new parameter-level meaning beyond what the schema provides, so the baseline score of 3 is appropriate.
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 states a specific action ('Move an EveryPage document to the trash') and identifies the resource, clearly distinguishing it from sibling tools like share, list, get, or update. It also explains the intent of making the share link stop working.
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?
The description makes it clear when to use this tool (to delete/trash a document) by describing the action and its effects. It contrasts trash vs. purge behavior but does not explicitly mention alternative tools or exclusion criteria, so it falls slightly short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
everypage_delete_variantDelete or redact a per-recipient linkADestructiveIdempotent
Permanently delete a per-recipient link, or - with redact - erase the recipient's name everywhere while leaving the link working and the readership intact. Redaction is the right answer to a GDPR erasure request; a redacted name can never be set again. Both are irreversible. Requires the Pro plan.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | The document the link belongs to: UUID, short link id, or a pasted share URL. | |
| redact | No | Erase the recipient's name instead of deleting the link. The link keeps working. | |
| variant | Yes | The per-recipient link: its id, its short link id, or its exact recipient label. |
Output Schema
| Name | Required | Description |
|---|---|---|
| deleted | Yes | |
| fileUuid | Yes | |
| redacted | Yes | |
| variantUuid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals that both operations are irreversible, that redaction makes the name permanently unsettable, and that the tool requires the Pro plan. These add behavioral context beyond the annotations' destructiveHint and idempotentHint flags.
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?
The description is concise at four sentences, front-loaded with the action, and every sentence adds essential information (modes, GDPR context, irreversibility, plan requirement). No filler or redundancy.
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?
For a destructive, two-mode tool, the description covers purpose, use case, irreversibility, and prerequisites. With full schema coverage and an output schema, return values do not need explanation. The description is complete enough for an agent to select and invoke it correctly.
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 descriptions cover all three parameters, so baseline is 3. The description adds extra semantic nuance for the redact parameter by noting a redacted name can never be set again, which goes beyond the schema's simple boolean description.
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 clearly states the tool permanently deletes a per-recipient link or redacts the recipient's name, using specific verbs and a clear resource. It distinguishes itself from sibling tools like everypage_delete_file by focusing on per-recipient links, not entire files.
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?
The description gives concrete use-case guidance, explicitly recommending redaction for GDPR erasure requests and contrasting it with deletion. However, it does not explicitly name alternative tools or state when not to use this tool, so it falls short of a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
everypage_get_fileGet a documentARead-only
Look up one EveryPage document and report its share links, how it is protected, and whether it is still live. Accepts a UUID, a short link id, or a share URL pasted straight from the browser.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | The document: its UUID, its short link id, or a full share URL (e.g. https://everypage.co/aB3xY9kQ2mZ7). |
Output Schema
| Name | Required | Description |
|---|---|---|
| file | Yes | The full document record. |
| uuid | Yes | The document's canonical UUID. |
| qr_url | Yes | PNG QR code for the share link. Public - no credentials needed to fetch it. |
| shortId | No | The document's short share-URL alias. |
| fileName | No | The document's display name. |
| shareUrl | Yes | The tracked share link to send to a reader. |
| embed_code | Yes | Ready-to-paste <iframe> that embeds the document. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds valuable context about the specific fields reported (share links, protection, liveness) and accepted input formats. It does not contradict annotations and goes beyond the minimal safety disclosure.
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?
Two sentences with no fluff. The first sentence states the core purpose and the second clarifies input flexibility. Perfectly sized and front-loaded.
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 an output schema present and a simple read-only operation, the description fully covers what the agent needs: what the tool does, what inputs it accepts, and what it reports. No critical gaps.
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 100% with the parameter description already listing UUID, short link id, and share URL. The description repeats this information without adding new semantic detail, so the baseline of 3 is appropriate.
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 clearly states the tool looks up a single EveryPage document and reports share links, protection status, and liveness. This is a specific verb-resource pair that distinguishes it from siblings like list_files or delete_file.
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?
It clearly explains the input forms (UUID, short link id, or browser URL) and the lookup purpose. While it doesn't explicitly say when not to use it or mention alternatives, the context is sufficient for an agent to infer this is for single-document retrieval, not for listing or mutation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
everypage_get_readershipGet a document's readershipARead-only
Find out who read an EveryPage document and how far they got: views, unique readers, read time, completion rate, countries, where readers dropped off, and per-recipient attribution. Use this to answer questions like "did they read my proposal?" or "where do people stop reading?".
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | The document: UUID, short link id, or a pasted share URL. | |
| includePages | No | Also fetch per-page statistics to find the most re-read page. Default true. Requires the Basic plan or higher. | |
| includeProofing | No | Also fetch proofing feedback: which pages readers marked pick/reject/maybe, and the annotations they drew. Default false - turn it on to answer "which shots did they choose?", "what did the client reject?" or "what feedback did they leave?". Requires the Pro plan. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tier | No | The plan that shaped this report; sections above it are absent. |
| pages | No | |
| funnel | No | |
| fileName | No | |
| fileUuid | Yes | |
| variants | No | |
| avgTimeMs | No | |
| countries | No | |
| downloads | No | |
| pageMarks | No | |
| markTotals | No | |
| totalTurns | No | |
| totalViews | No | |
| annotations | No | |
| markViewers | No | |
| newSessions | No | |
| medianTimeMs | No | |
| activeReaders | No | |
| backTurnShare | No | |
| totalSessions | No | |
| biggestDropPct | No | |
| completionRate | No | |
| uniqueVisitors | No | |
| biggestDropPage | No | The page with the steepest fall-off in readers. |
| uniqueCountries | No | |
| invitedNotViewed | No | |
| returningSessions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description reinforces a read-only analytics operation. It adds context about the kind of insights returned (views, readers, drop-off) but does not go beyond annotations with additional behavioral details such as plan requirements (which are in the schema) or any side effects. Given annotations cover the safety profile, a 3 is appropriate.
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?
The description is two sentences long, front-loaded with the primary purpose, and every word adds value. The first sentence lists concrete deliverables, the second gives relatable examples. No filler or redundancy.
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 a full output schema and annotations covering safety, the description is sufficient for the tool's complexity. It explains what questions the tool answers and what data is provided. It does not mention potential limitations like pagination or scope, but these are not critical for this read-only analytics tool.
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%, so the schema fully documents all three parameters (file, includePages, includeProofing) including plan requirements. The description adds no parameter-specific meanings beyond the schema, so baseline 3 is correct.
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 clearly states a specific verb ('Find out') and resource ('who read an EveryPage document and how far they got'), then lists concrete metrics (views, unique readers, read time, completion rate, countries, drop-off, per-recipient attribution). This distinguishes it from sibling tools like everypage_list_files or everypage_get_file, which are general file operations.
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?
The description provides explicit use cases ('did they read my proposal?' / 'where do people stop reading?'), which indicates when to use it. However, it does not name alternative tools or state when not to use it, so it falls short of full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
everypage_list_eventsList recent read activityARead-only
Recent activity across the account's EveryPage documents: view sessions, downloads, or leads captured by the email gate. Returns a cursor so a later call can fetch only what has happened since. Use this to answer "has anyone read anything today?" or to poll for new reads.
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | Limit to one document: UUID, short link id, or a pasted share URL. | |
| type | No | Which stream: view sessions (default), downloads, or gate (leads captured by the email-capture form; requires the Pro plan). | |
| limit | No | How many events. Default 25, maximum 100. | |
| since | No | Cursor from a previous call's nextCursor. Only valid for the SAME type - cursors are not comparable across streams. Omit for the most recent activity. |
Output Schema
| Name | Required | Description |
|---|---|---|
| type | Yes | The stream these events came from. |
| count | Yes | |
| events | Yes | |
| nextCursor | Yes | Pass as `since` on the next call, with the SAME type, to get only newer events. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is known. The description adds the cursor-based incremental fetch behavior and clarifies the event stream types, which is valuable context beyond the annotation. No contradictions observed. This exceeds the baseline 3.
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?
The description is just two sentences. It is front-loaded with the core purpose, then immediately gives a practical use case. Every sentence adds value, with no redundant or filler content.
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 a rich input schema, an output schema, and annotations, the description's addition of cursor semantics and polling use cases makes the tool sufficiently complete. It does not elaborate on error conditions or output structure, but those are partially covered by the output schema. The type-specific cursor constraint is in the schema, so the description's general cursor mention is adequate.
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% for all four parameters, so the schema fully documents each field. The description's mention of event types and polling use case aligns with the 'type' and 'since' parameters but does not add new semantic meaning beyond what the schema already provides. Therefore the baseline 3 is appropriate.
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 clearly identifies the tool as listing recent read activity (view sessions, downloads, gate leads) across EveryPage documents. It specifies the resource and action with enough detail, but it does not explicitly contrast with sibling tools like everypage_get_readership, so it misses the full differentiation for a 5.
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?
The description provides explicit use cases: answering 'has anyone read anything today?' or polling for new reads. This gives clear context on when to invoke the tool. However, it does not mention when not to use it or name alternative tools, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
everypage_list_filesList documentsARead-only
List the EveryPage documents on this account, newest first, with their share links and view counts. Use query to filter by name when looking for a particular document.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many to return. Default 20. | |
| query | No | Case-insensitive substring of the document name. |
Output Schema
| Name | Required | Description |
|---|---|---|
| files | Yes | Matching documents, newest first. |
| shown | Yes | How many are in this response. |
| totalCount | Yes | How many documents the account has in total. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the read-only nature is covered. The description adds useful behavioral context like 'newest first' ordering and scope ('on this account'), which are not in the annotations or schema. No contradictions with annotations; openWorldHint=false aligns with the concept of listing documents in this account.
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?
The description is a tight two-sentence summary, front-loaded with the main action. Every word earns its place: it states what, scope, ordering, and a practical usage hint. No filler or repetition.
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?
For a simple listing tool with an output schema and read-only annotation, the description is complete. It covers what is listed, what is returned, ordering, and how to filter. The output schema handles return structure, and annotations handle safety. No significant gaps remain.
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 100%, with both `limit` and `query` described in the schema. The description's mention of using `query` for filtering by name is redundant with the schema's existing description, adding no new parameter semantics. Baseline of 3 is appropriate when schema already documents parameters.
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 clearly states the tool's purpose: listing EveryPage documents on the account, with specific details on ordering (newest first) and included data (share links and view counts). This verb+resource structure distinguishes it from sibling tools like get_file (specific file) or delete_file (mutation).
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?
The description gives guidance on using the query parameter to filter by name, but it does not explicitly contrast with alternatives (e.g., when to use everypage_get_file instead for a single document). The tool's listing purpose is implied, but no when-not-to-use or alternative is stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
everypage_list_variantsList per-recipient linksARead-only
List a document's per-recipient links with their recipient labels, URLs, and whether they have been revoked or GDPR-redacted. Requires the Pro plan.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | The document: UUID, short link id, or a pasted share URL. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| fileUuid | Yes | |
| variants | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already indicates this is a safe read operation. The description adds value by mentioning the Pro plan requirement and the specific data returned (revoked/GDPR-redacted status), without contradicting annotations.
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?
The description is a single sentence that is front-loaded with the verb 'List' and conveys all essential information with no filler.
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?
Given the tool's simplicity (one parameter), the presence of an output schema, and the read-only annotation, the description adequately covers the tool's purpose, requirements, and output details. It is complete for an AI agent to select and invoke correctly.
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 100% and includes a clear description of the 'file' parameter. The tool description does not add any additional parameter semantics, so the baseline of 3 is appropriate.
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 clearly states the tool's action ('List') and resource ('a document's per-recipient links'), and specifies the output details (labels, URLs, revoked/GDPR-redacted). This distinguishes it from sibling tools like list_files or create_variants.
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?
The description provides clear context on what the tool does and notes the Pro plan requirement. It doesn't explicitly name alternatives or exclusions, but the unique functionality makes the use case evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
everypage_list_webhooksList webhook endpointsARead-only
List the account's webhook endpoints, what events each receives, and whether deliveries are healthy. Signing secrets are never retrievable - they are shown once, when the endpoint is created. Use this to diagnose an automation that has stopped firing.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| webhooks | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description adds value by disclosing that 'Signing secrets are never retrievable - they are shown once, when the endpoint is created.' It also mentions health status, giving useful context about response content beyond the schema.
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?
The description consists of three concise sentences, each serving a distinct purpose: what it lists, an important limitation, and when to use it. No redundancy or filler; every sentence 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?
Given the tool has no input parameters, an output schema is present, and annotations indicate read-only behavior, the description fully covers the needed context. It explains the purpose, key limitations, and a practical use case, making it complete for an agent to select and invoke correctly.
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?
There are no parameters, so the baseline for parameter semantics is 4. The description does not need to explain parameter meanings since the input schema is empty. It correctly focuses on the tool's purpose and return value characteristics.
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 clearly states a specific verb and resource: 'List the account's webhook endpoints.' It also details what the list includes (events, health) and distinguishes itself from sibling tools like everypage_manage_webhook by focusing on listing and diagnostics rather than management.
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?
Provides a clear context for when to use the tool: 'Use this to diagnose an automation that has stopped firing.' It implies this is for reading/diagnostic purposes rather than creating or modifying webhooks, but does not explicitly name alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
everypage_manage_webhookCreate, test or delete a webhookADestructive
Manage where EveryPage sends event notifications. Create an endpoint to receive signed deliveries when a document is read, downloaded or a lead is captured; send a test delivery to check an endpoint is reachable; or delete one. Creating returns a signing secret that is shown only once.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | create: the https:// endpoint that will receive deliveries. | |
| file | No | create: limit deliveries to one document. Omit for the whole account. | |
| action | Yes | What to do. | |
| events | No | create: which events to deliver. gate.completed (captured leads) requires the Pro plan at the time the event happens. | |
| format | No | create: json (signed, for your own code) or slack (Slack Block Kit for an incoming webhook). Default json. | |
| webhook | No | test/delete: the endpoint's id, from everypage_list_webhooks. |
Output Schema
| Name | Required | Description |
|---|---|---|
| action | Yes | |
| secret | No | Shown exactly once, at creation. Store it now. |
| status | No | |
| deleted | No | |
| webhook | No | |
| delivered | No | |
| latencyMs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds several behavioral details beyond the annotations: it mentions that deliveries are 'signed' (a security trait), that test checks reachability, and that creating returns a 'signing secret that is shown only once' – a critical one-time disclosure. These are not present in the annotations and are essential for the agent to inform the user. No contradiction with annotations was found.
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?
The entire description is two sentences: the first establishes the purpose, and the second lists the actions while adding the one critical nuance about the one-time secret. It is front-loaded with the purpose and wastes no words.
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?
Given the rich schema (with per-parameter descriptions) and an output schema, the description effectively summarizes the core operations and key behavior (signed deliveries, one-time secret). However, it does not explicitly clarify that test/delete actions require the webhook ID, even though that is implied by the schema description for the 'webhook' parameter. This small gap prevents a perfect score, but the description is otherwise complete.
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?
The input schema already has 100% coverage with detailed descriptions for every parameter (e.g., 'create: the https:// endpoint' and 'gate.completed (captured leads) requires the Pro plan'). The description only adds high-level context about the overall workflow, not new syntax or format details beyond the schema. Therefore, a baseline score of 3 is appropriate.
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 opens with a clear high-level statement ('Manage where EveryPage sends event notifications') and then explicitly lists the three operations: create an endpoint, send a test delivery, and delete one. The verb 'Manage' plus the focus on webhook endpoints distinguishes it from sibling everypage_list_webhooks, which only lists webhooks.
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?
The description clearly frames the tool as for managing webhook endpoints, and the parameter descriptions further specify which parameters apply to which action (e.g., 'webhook' for test/delete and 'create:' for others). It also references the sibling everypage_list_webhooks as the source for the endpoint ID, which hints at the alternative for listing. However, it does not explicitly state 'when not to use this tool' or provide exclusions, so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
everypage_replace_contentReplace a document's contentADestructive
Swap the PDF behind an existing EveryPage link, keeping the same share link, QR code, settings and readership history - only the bytes change. Anyone who already has the link sees the new version. This is also the way to revive a link that was burned by its view limit. The previous version is not recoverable. Requires the Pro plan.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | https:// link to the replacement PDF. | |
| file | Yes | The document to update: UUID, short link id, or a pasted share URL. | |
| path | No | Absolute path to the replacement PDF on this machine. | |
| keepAnchors | No | Keep page-anchored hotspots and reader notes despite the page numbers changing. Default false (they are cleared). |
Output Schema
| Name | Required | Description |
|---|---|---|
| uuid | Yes | The document's canonical UUID. |
| qr_url | Yes | PNG QR code for the share link. Public - no credentials needed to fetch it. |
| shortId | No | The document's short share-URL alias. |
| fileName | No | The document's display name. |
| shareUrl | Yes | The tracked share link to send to a reader. |
| embed_code | Yes | Ready-to-paste <iframe> that embeds the document. |
| contentVersion | No | Increments on every replacement; 1 was the original upload. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructive and non-read-only behavior. The description adds that the previous version is unrecoverable and that a Pro plan is required, plus clarifies that existing viewers see the new version. This goes beyond the annotations and provides important usage caveats, though it could mention other potential side effects (e.g., caching).
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?
The description is compact and front-loaded with the core action. Each sentence earns its place: preservation of metadata, immediate visibility for existing link holders, the revival scenario, irrecoverability, and the plan requirement. There is no wasted wording.
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?
Given the destructive nature and multiple parameters, the description covers the essential behavioral outcomes, prerequisites, and a distinguishing use case. With the presence of an output schema and detailed annotation coverage, nothing critical is missing for an agent to select and invoke the tool correctly.
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?
The input schema already provides descriptions for all four parameters (url, file, path, keepAnchors) with 100% coverage. The description does not add parameter-level detail beyond the schema, so it sits at the baseline for high schema coverage.
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 clearly states the specific action (swap/repalce PDF content) and the resource (existing EveryPage link), while emphasizing what remains unchanged (link, QR code, settings, readership history). This distinguishes it from sibling tools like everypage_delete_file or everypage_update_file_settings, which operate on existence or settings rather than the underlying content.
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?
It provides a concrete scenario ('revive a link that was burned by its view limit') and clearly implies this is the way to change content while preserving metadata. It does not explicitly name alternative tools, but the context makes the intended use obvious compared to settings updates or deletion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
everypage_update_file_settingsChange a document's share settingsAIdempotent
Change how an existing EveryPage document is shared: passcode, expiry, downloads, viewer mode, email gate, view limit, page range or vanity slug. Settings that are not mentioned keep their current value.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | The document: UUID, short link id, or a pasted share URL. | |
| slug | No | Vanity link name on the owner's custom domain: lowercase letters, digits and hyphens. Requires the Pro plan. | |
| pageTo | No | Last page readers may see. Set pageFrom and pageTo to 0 to clear the limit (clearing is never plan-gated). | |
| pageFrom | No | First page readers may see (1-based). Pair with pageTo. Pages outside the window are never sent to the browser. Requires the Pro plan. | |
| passcode | No | Require this passcode to open the document. Requires the Basic plan or higher. | |
| viewLimit | No | Burn the link after this many views. 0 clears the limit. Requires the Basic plan or higher. | |
| watermark | No | Stamp the reader's identity across the pages. Requires the Pro plan. | |
| askReceipt | No | Ask readers to confirm they received the document. Requires the Basic plan or higher. | |
| viewerMode | No | How the document is presented: standard scroll, page-turning flipbook, swipe, or magazine spread. | |
| expiryHours | No | Expire the link this many hours from now. Capped by plan: 7 days on free, 365 days on basic, unlimited on pro. | |
| gateDomains | No | Restrict the email gate to these domains, e.g. ["acme.com"]. An empty array clears the restriction. Requires the Pro plan. | |
| neverExpire | No | Keep the link alive permanently. Overrides expiryHours. Requires the Pro plan. | |
| notifyOnView | No | Email the owner when someone reads the document. Requires the Basic plan or higher. | |
| requireEmail | No | Make readers give an email address before they can read. Requires the Pro plan. | |
| allowDownload | No | Let readers download the original PDF. | |
| clearPasscode | No | Remove the passcode so anyone with the link can read. Wins over passcode if both are given. |
Output Schema
| Name | Required | Description |
|---|---|---|
| file | Yes | The document record after the change. |
| uuid | Yes | The document's canonical UUID. |
| qr_url | Yes | PNG QR code for the share link. Public - no credentials needed to fetch it. |
| shortId | No | The document's short share-URL alias. |
| fileName | No | The document's display name. |
| shareUrl | Yes | The tracked share link to send to a reader. |
| embed_code | Yes | Ready-to-paste <iframe> that embeds the document. |
| appliedSettings | Yes | What changed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The critical behavioral note 'Settings that are not mentioned keep their current value' is disclosed, which is essential for partial updates and goes beyond the annotations. The description also correctly implies mutation (consistent with readOnlyHint=false) and idempotency (consistent with idempotentHint=true). No contradictory information.
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?
Two sentences, front-loaded with the action and resource, and a compact list of affected settings. The 'keep current value' caveat is included in the second sentence without waste. Every word 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?
The tool has 16 parameters, a required 'file', an output schema, and annotations. The description covers the overall purpose and the crucial partial-update behavior. It does not mention plan gating or clearing details, but those are in the schema descriptions. The description is complete enough for correct selection and invocation, though it could have added a hint about when not to use it.
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?
With 100% schema coverage, the schema already describes each parameter. The description adds high-level value by grouping settings (e.g., 'vanity slug' → slug, 'page range' → pageFrom/pageTo) and by stating that omitted parameters are preserved, which clarifies the semantics of all parameters collectively.
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 uses a specific verb ('Change'), identifies the resource ('existing EveryPage document'), and enumerates the share settings it affects. It clearly distinguishes from sibling tools like everypage_share_pdf by focusing on updating an existing document rather than creating a new share.
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?
The description makes clear this is for existing documents and lists the range of settings, implying it is the go-to for altering share settings. It does not explicitly mention alternatives or exclusions (e.g., 'use everypage_share_pdf to create a new share'), but the context of 'existing' provides strong guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
everypage_update_variantUpdate a per-recipient linkAIdempotent
Rename, revoke or restore a per-recipient link, or change what that one recipient may do. Revoking makes their link stop working while leaving everyone else's alone; it can be undone. Requires the Pro plan.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | The document the link belongs to: UUID, short link id, or a pasted share URL. | |
| label | No | New recipient name. An empty string clears it. | |
| pageTo | No | Last page this recipient may see. | |
| revoked | No | True stops this recipient's link working; false restores it. | |
| variant | Yes | The per-recipient link: its id, its short link id, or its exact recipient label. | |
| pageFrom | No | First page this recipient may see (1-based). | |
| allowDownload | No | Override the document's download permission for this recipient only. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| variant | Yes | |
| fileUuid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a mutating, non-destructive, idempotent operation. The description adds valuable context by explaining that revoking affects only the specified recipient ('leaving everyone else's alone') and is reversible ('it can be undone'). This goes beyond the boolean flags and clarifies the scope and side effects.
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?
The description is three sentences long, with each sentence serving a distinct purpose: listing operations, explaining the revoke behavior, and stating the Pro plan requirement. It is concise with no filler or redundancy.
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?
Given the 7-parameter schema, the presence of an output schema, and annotations, the description adequately covers the core operations and a key behavioral caveat (reversibility and per-recipient scoping). It omits edge-case details such as invalid input handling, but the schema and annotations fill these gaps, making it sufficiently complete.
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 100%, so every parameter is already described in detail. The description's high-level actions (rename, revoke, restore, change permissions) loosely map to parameters like label, revoked, pageFrom, and allowDownload, but it does not add syntax or interaction details beyond what the schema provides. Baseline 3 is appropriate.
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 opens with precise verbs—'Rename, revoke or restore a per-recipient link, or change what that one recipient may do'—clearly identifying the resource and its update scope. This distinguishes it from sibling tools like delete_variant and create_variants, which handle deletion and creation respectively.
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?
The description implies the use case through the listed actions and notes the Pro plan prerequisite, but it does not explicitly state when to choose this tool over alternatives. No comparisons or exclusions are given, so guidance remains implicit rather than explicit.
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. Dates show when Glama detected each change.
1 tool update
v1.0.0- Changed
everypage_get_readership5 fields changed- added
Input schema / properties / includeProofingAdded value: +{ + "description": "Also fetch proofing feedback: which pages readers marked pick/reject/maybe, and the annotations they drew. Default false - turn it on to answer \"which shots did they choose?\", \"what did the client reject?\" or \"what feedback did they leave?\". Requires the Pro plan.", + "type": "boolean" +} - added
Output schema / properties / annotationsAdded value: +{ + "items": { + "additionalProperties": true, + "properties": {}, + "type": "object" + }, + "type": "array" +} - added
Output schema / properties / markTotalsAdded value: +{ + "additionalProperties": true, + "properties": {}, + "type": "object" +} - added
Output schema / properties / markViewersAdded value: +{ + "items": { + "additionalProperties": true, + "properties": {}, + "type": "object" + }, + "type": "array" +} - added
Output schema / properties / pageMarksAdded value: +{ + "items": { + "additionalProperties": true, + "properties": {}, + "type": "object" + }, + "type": "array" +}
15 tool updates
v0.1.0- First observed
everypage_account - First observed
everypage_create_variants - First observed
everypage_delete_file - First observed
everypage_delete_variant - First observed
everypage_get_file - First observed
everypage_get_readership - First observed
everypage_list_events - First observed
everypage_list_files - First observed
everypage_list_variants - First observed
everypage_list_webhooks - First observed
everypage_manage_webhook - First observed
everypage_replace_content - First observed
everypage_share_pdf - First observed
everypage_update_file_settings - First observed
everypage_update_variant
TDQS
Each tool targets a distinct resource and action: files, variants, webhooks, analytics, and account info are clearly separated. Even related tools like share_pdf vs update_file_settings are differentiated by creating vs modifying, and get_readership vs list_events are per-document vs account-wide.
The everypage_ prefix and verb_noun pattern are used consistently, but 'everypage_account' (noun-only) and 'everypage_manage_webhook' (generic verb) break the pattern slightly. Most tools follow list_/get_/create_/update_/delete_ conventions.
15 tools is at the upper edge of well-scoped but justified for the domain, covering PDF sharing, settings, variants, analytics, and webhooks without unnecessary bloat. Each tool has a clear purpose.
The surface provides full lifecycle coverage for documents (share, get, update, delete, replace) and variants (create, list, update, delete), plus readership analytics, events, and webhook management. No obvious missing operations for the stated domain.
Maintenance
Related MCP Connectors
Publish and share access-controlled Markdown documents from any MCP-enabled AI tool.
MCP server for detecting and redacting PII (Personally Identifiable Information) in PDF documents.
MCP server for the PDFGate API. Generate PDFs, manage documents and handle e-signatures.
Hosted MCP server: convert PDFs to clean, LLM-ready Markdown with tables, formulas and OCR.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that enables AI assistants to read, search, and analyze PDF files from local paths or URLs. It provides tools for extracting specific page ranges, searching for terms, and retrieving document metadata.4461MIT
- AlicenseBqualityDmaintenanceAn MCP server that lets AI assistants read and visually analyze local documents — PDFs, Excel spreadsheets, CSV files, Word documents, PowerPoint presentations, and images.466MIT
- AlicenseNot gradedqualityDmaintenanceUniversal MCP server for extracting text from various document formats including PDF, Excel, Word, CSV, and more, with support for streaming, limits, and markdown conversion.3MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for AI-assisted PDF reading with pagination, search, and page navigation.16MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/EveryPageApp/everypage-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server