mcpField
D
docshare

docshare

Local
github.com/CloudCorpRecordsFiles & Storage0Updated 1w ago

About docshare

docshare is an MCP server and CLI for managing EveryPage tracked PDF links. It covers uploads, readership tracking, recipient-specific variants, and webhooks.

Key features

  1. 01Upload and replace PDFs
  2. 02Configure link access settings
  3. 03Track readership and events
  4. 04Manage recipient-specific variants
  5. 05Manage webhook endpoints

Use cases

  1. 01Share a PDF with a tracked link
  2. 02Review reader activity and drop-off
  3. 03Create links for named recipients
  4. 04Update or remove shared documents

MCP support

Exposes EveryPage PDF sharing, readership, variant, webhook, and account operations as tools for MCP clients. Read-only mode limits the available tools to seven read operations.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"cloudcorprecords-docshare": {
"command": "npx",
"args": [
"-y",
"@reneturcios/docshare"
]
}
}
}
Run commandnpx -y @reneturcios/docshare

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npm@reneturcios/docshare0.1.0
ocighcr.io/cloudcorprecords/docshare:0.1.0

Tools

15

Saved tool list · updated 1w ago

ParameterTypeRequiredDescription
sourcestringYesA local file path, or any https URL: for a URL, the server fetches the user-supplied address itself (without sending your EveryPage key) and uploads the bytes it returns. The bytes must start with the PDF magic %PDF-.
settingsobjectNoFileSettings fields to apply in the same call: viewerMode (standard|scroll|flipbook|swipe|magazine), password (empty string clears), allowDownload, requireEmail, notifyOnView, deleteAt (date-time), neverExpire, viewLimit (0 clears), gateDomains, gateFields, gateHeading, slug, watermark, pageRange.

Details

From the project README

docshare

Hand someone a PDF and actually know what happened to it. docshare talks to EveryPage: you upload a document once, share the tracked link it gives back, and from then on every open, download, and email-gate completion is recorded against that link — or, with variants, against the exact recipient you sent it to.

There are fifteen tools. Sharing and lifecycle: everypage_share_pdf uploads a PDF from a local path or an https URL and can apply its share settings in the same call; everypage_list_files and everypage_get_file browse what you have shared; everypage_update_file_settings changes the passcode, expiry, download permission, viewer mode, email gate, view limit, page range, or slug; everypage_replace_content swaps the PDF behind a live link while the link and its history stay put; and everypage_delete_file trashes a document, or purges it for good when you ask for that explicitly.

Readership: everypage_get_readership reports who read a document, how far they got, and where they dropped off, while everypage_list_events streams recent views, downloads, or captured leads behind a polling cursor you carry from one call to the next (a cursor only works for the stream type it came from).

Variants and webhooks: everypage_create_variants makes one tracked link per named recipient, everypage_list_variants, everypage_update_variant, and everypage_delete_variant manage them (including GDPR redaction of a recipient's name), everypage_list_webhooks and everypage_manage_webhook look after webhook endpoints and their delivery health, and everypage_account shows the connected account, its plan, and what that plan allows.

A file argument is forgiving about form: paste the UUID, the short link id, or the full share URL — /embed/ links and links carrying ?via= work too. Uploads are checked before they leave the machine: the bytes must start with the PDF magic %PDF-, and a PDF fetched from an https URL is downloaded without your EveryPage key, which is only ever sent to EveryPage itself.

Configuration

export EVERYPAGE_API_KEY="..."            # required
export EVERYPAGE_BASE_URL="https://everypage.co"   # optional override
export EVERYPAGE_READ_ONLY="true"         # optional: read tools only

Without EVERYPAGE_API_KEY, every tool fails with EVERYPAGE_API_KEY is not set before any request is made. With EVERYPAGE_READ_ONLY=true, only the seven read tools (everypage_list_files, everypage_get_file, everypage_get_readership, everypage_list_events, everypage_list_variants, everypage_list_webhooks, everypage_account) are listed, and calling any other tool is refused.

CLI

Each tool is a subcommand taking one JSON argument string:

npx @reneturcios/docshare everypage_share_pdf '{"source":"./deck.pdf","settings":{"requireEmail":true}}'
npx @reneturcios/docshare everypage_list_events '{"type":"view","limit":20}'
npx @reneturcios/docshare everypage_create_variants '{"file":"https://everypage.co/s/abc123?via=email","labels":["Ana","Ben"]}'
npx @reneturcios/docshare --version

Output is the tool's result text (normally the upstream JSON). Exit codes: 0 on success, 1 on a runtime error (including a validation or upstream failure), 2 on a usage error.

MCP server

npx -y @reneturcios/docshare mcp

MCP client config:

{
  "mcpServers": {
    "docshare": {
      "command": "npx",
      "args": ["-y", "@reneturcios/docshare", "mcp"],
      "env": { "EVERYPAGE_API_KEY": "..." }
    }
  }
}

Docker

docker run -i -e EVERYPAGE_API_KEY=... ghcr.io/cloudcorprecords/docshare
docker run --rm -e EVERYPAGE_API_KEY=... ghcr.io/cloudcorprecords/docshare everypage_account '{}'

Development

npm install
npm run build   # tsc -> dist/
npm test        # tsx --test test/*.test.ts (fake fetch + fake file reader, no network)
npm run dev     # run the CLI from source

License

MIT — Copyright (c) 2026 Rene Turcios

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.