Skip to main content
Glama

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-mcp

Claude 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

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 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

EVERYPAGE_API_KEY

yes

ep_live_… API key, or an ep_at_… OAuth token (limited to its granted scopes)

EVERYPAGE_BASE_URL

no

https://everypage.co

API origin, for self-hosted or development instances

EVERYPAGE_READ_ONLY

no

false

true exposes only the seven read-only tools

§ 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 inspector

The 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.

License

MIT

Available Tools

15 tools
everypage_accountAccount and planA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameNo
planYes
emailNo
lockedFeaturesYes
maxActiveFilesYes
maxUploadBytesYes
maxUploadLabelYes

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesThe document: UUID, short link id, or a pasted share URL.
recipientsYesOne entry per recipient.

Output Schema

ParametersJSON Schema
NameRequiredDescription
failedYes
createdYes
fileUuidYes
variantsYesThe links created, in the order requested.
warningsNo

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 documentA
DestructiveIdempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesThe document: UUID, short link id, or a pasted share URL.
purgeNoDestroy permanently instead of trashing. Irreversible - confirm with the user first.

Output Schema

ParametersJSON Schema
NameRequiredDescription
uuidYes
purgedYesTrue when the document was destroyed permanently.
trashedYesTrue when the document went to the trash and can still be restored.

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 linkA
DestructiveIdempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesThe document the link belongs to: UUID, short link id, or a pasted share URL.
redactNoErase the recipient's name instead of deleting the link. The link keeps working.
variantYesThe per-recipient link: its id, its short link id, or its exact recipient label.

Output Schema

ParametersJSON Schema
NameRequiredDescription
deletedYes
fileUuidYes
redactedYes
variantUuidYes

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 documentA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesThe document: its UUID, its short link id, or a full share URL (e.g. https://everypage.co/aB3xY9kQ2mZ7).

Output Schema

ParametersJSON Schema
NameRequiredDescription
fileYesThe full document record.
uuidYesThe document's canonical UUID.
qr_urlYesPNG QR code for the share link. Public - no credentials needed to fetch it.
shortIdNoThe document's short share-URL alias.
fileNameNoThe document's display name.
shareUrlYesThe tracked share link to send to a reader.
embed_codeYesReady-to-paste <iframe> that embeds the document.

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 readershipA
Read-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?".

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesThe document: UUID, short link id, or a pasted share URL.
includePagesNoAlso fetch per-page statistics to find the most re-read page. Default true. Requires the Basic plan or higher.
includeProofingNoAlso 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

ParametersJSON Schema
NameRequiredDescription
tierNoThe plan that shaped this report; sections above it are absent.
pagesNo
funnelNo
fileNameNo
fileUuidYes
variantsNo
avgTimeMsNo
countriesNo
downloadsNo
pageMarksNo
markTotalsNo
totalTurnsNo
totalViewsNo
annotationsNo
markViewersNo
newSessionsNo
medianTimeMsNo
activeReadersNo
backTurnShareNo
totalSessionsNo
biggestDropPctNo
completionRateNo
uniqueVisitorsNo
biggestDropPageNoThe page with the steepest fall-off in readers.
uniqueCountriesNo
invitedNotViewedNo
returningSessionsNo

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 activityA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileNoLimit to one document: UUID, short link id, or a pasted share URL.
typeNoWhich stream: view sessions (default), downloads, or gate (leads captured by the email-capture form; requires the Pro plan).
limitNoHow many events. Default 25, maximum 100.
sinceNoCursor 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

ParametersJSON Schema
NameRequiredDescription
typeYesThe stream these events came from.
countYes
eventsYes
nextCursorYesPass as `since` on the next call, with the SAME type, to get only newer events.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 documentsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoHow many to return. Default 20.
queryNoCase-insensitive substring of the document name.

Output Schema

ParametersJSON Schema
NameRequiredDescription
filesYesMatching documents, newest first.
shownYesHow many are in this response.
totalCountYesHow many documents the account has in total.

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 linksA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesThe document: UUID, short link id, or a pasted share URL.

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
fileUuidYes
variantsYes

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 endpointsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
webhooksYes

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 webhookA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNocreate: the https:// endpoint that will receive deliveries.
fileNocreate: limit deliveries to one document. Omit for the whole account.
actionYesWhat to do.
eventsNocreate: which events to deliver. gate.completed (captured leads) requires the Pro plan at the time the event happens.
formatNocreate: json (signed, for your own code) or slack (Slack Block Kit for an incoming webhook). Default json.
webhookNotest/delete: the endpoint's id, from everypage_list_webhooks.

Output Schema

ParametersJSON Schema
NameRequiredDescription
actionYes
secretNoShown exactly once, at creation. Store it now.
statusNo
deletedNo
webhookNo
deliveredNo
latencyMsNo

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 contentA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNohttps:// link to the replacement PDF.
fileYesThe document to update: UUID, short link id, or a pasted share URL.
pathNoAbsolute path to the replacement PDF on this machine.
keepAnchorsNoKeep page-anchored hotspots and reader notes despite the page numbers changing. Default false (they are cleared).

Output Schema

ParametersJSON Schema
NameRequiredDescription
uuidYesThe document's canonical UUID.
qr_urlYesPNG QR code for the share link. Public - no credentials needed to fetch it.
shortIdNoThe document's short share-URL alias.
fileNameNoThe document's display name.
shareUrlYesThe tracked share link to send to a reader.
embed_codeYesReady-to-paste <iframe> that embeds the document.
contentVersionNoIncrements on every replacement; 1 was the original upload.

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_share_pdfShare a PDFA

Upload a PDF to EveryPage and get back a tracked share link, an embeddable iframe, and a QR code URL. Give either path (a PDF on this machine) or url (an https link to a PDF). Share settings such as a passcode, expiry or download permission can be applied in the same call. Every read of the resulting link is tracked - use everypage_get_readership afterwards to see who read it.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNohttps:// link to a PDF. Fetched without credentials, then uploaded.
pathNoAbsolute path to a PDF on this machine, e.g. /Users/you/proposal.pdf.
slugNoVanity link name on the owner's custom domain: lowercase letters, digits and hyphens. Requires the Pro plan.
pageToNoLast page readers may see. Set pageFrom and pageTo to 0 to clear the limit (clearing is never plan-gated).
filenameNoDisplay name for the document. Defaults to the file's own name.
pageFromNoFirst page readers may see (1-based). Pair with pageTo. Pages outside the window are never sent to the browser. Requires the Pro plan.
passcodeNoRequire this passcode to open the document. Requires the Basic plan or higher.
viewLimitNoBurn the link after this many views. 0 clears the limit. Requires the Basic plan or higher.
watermarkNoStamp the reader's identity across the pages. Requires the Pro plan.
askReceiptNoAsk readers to confirm they received the document. Requires the Basic plan or higher.
viewerModeNoHow the document is presented: standard scroll, page-turning flipbook, swipe, or magazine spread.
expiryHoursNoExpire the link this many hours from now. Capped by plan: 7 days on free, 365 days on basic, unlimited on pro.
gateDomainsNoRestrict the email gate to these domains, e.g. ["acme.com"]. An empty array clears the restriction. Requires the Pro plan.
neverExpireNoKeep the link alive permanently. Overrides expiryHours. Requires the Pro plan.
notifyOnViewNoEmail the owner when someone reads the document. Requires the Basic plan or higher.
requireEmailNoMake readers give an email address before they can read. Requires the Pro plan.
allowDownloadNoLet readers download the original PDF.

Output Schema

ParametersJSON Schema
NameRequiredDescription
sizeNoSize of the uploaded PDF in bytes.
uuidYesThe document's canonical UUID.
qr_urlYesPNG QR code for the share link. Public - no credentials needed to fetch it.
shortIdNoThe document's short share-URL alias.
fileNameNoThe document's display name.
shareUrlYesThe tracked share link to send to a reader.
warningsNoNon-fatal problems. The operation succeeded; these describe what could not be applied.
embed_codeYesReady-to-paste <iframe> that embeds the document.
totalPagesNo
appliedSettingsNoSettings that were applied.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark readOnlyHint false, so the description's 'Upload a PDF' is expected. It adds behavioral details beyond annotations: the share link is tracked, returns an iframe and QR URL, and settings can be applied in the same call. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, front-loaded with the core purpose and outcome. The third sentence about share settings is slightly redundant with the schema but reinforces that settings are applied in the same call; no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 17 parameters, full schema descriptions, and an output schema, the description provides essential orientation: source selection (path/url), output artifacts, and tracking. It does not explicitly state that at least one source is required or how to update/delete the share, but the annotation and schema richness cover most operational details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with all parameter descriptions present, so baseline 3 applies. The description only highlights 'path', 'url', and examples like 'passcode, expiry or download permission', which adds little over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Upload a PDF to EveryPage and get back a tracked share link, an embeddable iframe, and a QR code URL' – a specific action with a concrete resource and result. It distinguishes from sibling tools (list/get/update) by focusing on the share-creation action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Mentions 'Give either `path` (a PDF on this machine) or `url` (an https link to a PDF)' – clear usage instruction. Points to 'everypage_get_readership afterwards' as a follow-up, but does not explicitly name alternative share-management tools like update_file_settings or delete_file.

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 settingsA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesThe document: UUID, short link id, or a pasted share URL.
slugNoVanity link name on the owner's custom domain: lowercase letters, digits and hyphens. Requires the Pro plan.
pageToNoLast page readers may see. Set pageFrom and pageTo to 0 to clear the limit (clearing is never plan-gated).
pageFromNoFirst page readers may see (1-based). Pair with pageTo. Pages outside the window are never sent to the browser. Requires the Pro plan.
passcodeNoRequire this passcode to open the document. Requires the Basic plan or higher.
viewLimitNoBurn the link after this many views. 0 clears the limit. Requires the Basic plan or higher.
watermarkNoStamp the reader's identity across the pages. Requires the Pro plan.
askReceiptNoAsk readers to confirm they received the document. Requires the Basic plan or higher.
viewerModeNoHow the document is presented: standard scroll, page-turning flipbook, swipe, or magazine spread.
expiryHoursNoExpire the link this many hours from now. Capped by plan: 7 days on free, 365 days on basic, unlimited on pro.
gateDomainsNoRestrict the email gate to these domains, e.g. ["acme.com"]. An empty array clears the restriction. Requires the Pro plan.
neverExpireNoKeep the link alive permanently. Overrides expiryHours. Requires the Pro plan.
notifyOnViewNoEmail the owner when someone reads the document. Requires the Basic plan or higher.
requireEmailNoMake readers give an email address before they can read. Requires the Pro plan.
allowDownloadNoLet readers download the original PDF.
clearPasscodeNoRemove the passcode so anyone with the link can read. Wins over passcode if both are given.

Output Schema

ParametersJSON Schema
NameRequiredDescription
fileYesThe document record after the change.
uuidYesThe document's canonical UUID.
qr_urlYesPNG QR code for the share link. Public - no credentials needed to fetch it.
shortIdNoThe document's short share-URL alias.
fileNameNoThe document's display name.
shareUrlYesThe tracked share link to send to a reader.
embed_codeYesReady-to-paste <iframe> that embeds the document.
appliedSettingsYesWhat changed.

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 linkA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesThe document the link belongs to: UUID, short link id, or a pasted share URL.
labelNoNew recipient name. An empty string clears it.
pageToNoLast page this recipient may see.
revokedNoTrue stops this recipient's link working; false restores it.
variantYesThe per-recipient link: its id, its short link id, or its exact recipient label.
pageFromNoFirst page this recipient may see (1-based).
allowDownloadNoOverride the document's download permission for this recipient only.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
variantYes
fileUuidYes

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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. 1 tool updatev1.0.0
    • Changedeverypage_get_readership5 fields changed
      • addedInput schema / properties / includeProofing
        Added 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"
        +}
      • addedOutput schema / properties / annotations
        Added value: +{
        +  "items": {
        +    "additionalProperties": true,
        +    "properties": {},
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / markTotals
        Added value: +{
        +  "additionalProperties": true,
        +  "properties": {},
        +  "type": "object"
        +}
      • addedOutput schema / properties / markViewers
        Added value: +{
        +  "items": {
        +    "additionalProperties": true,
        +    "properties": {},
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / pageMarks
        Added value: +{
        +  "items": {
        +    "additionalProperties": true,
        +    "properties": {},
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
  2. 15 tool updatesv0.1.0
    • First observedeverypage_account
    • First observedeverypage_create_variants
    • First observedeverypage_delete_file
    • First observedeverypage_delete_variant
    • First observedeverypage_get_file
    • First observedeverypage_get_readership
    • First observedeverypage_list_events
    • First observedeverypage_list_files
    • First observedeverypage_list_variants
    • First observedeverypage_list_webhooks
    • First observedeverypage_manage_webhook
    • First observedeverypage_replace_content
    • First observedeverypage_share_pdf
    • First observedeverypage_update_file_settings
    • First observedeverypage_update_variant

TDQS

A4.4/5.0
Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness5/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

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