{"id":"1121b0a9-aca4-415c-9ebf-936662e9bcb4","slug":"docshare","kind":"mcp","name":"docshare","summary":"EveryPage tracked PDF links: upload, update and delete PDFs, variant links and webhooks.","owner":"CloudCorpRecords","repoUrl":"https://github.com/CloudCorpRecords/docshare","license":"MIT","licenseTier":"permissive","trust":"community","stars":0,"match":null,"fewStars":true,"format":"mcp","createdAt":"2026-11-05T00:23:14.000Z","addedAt":"2026-11-05T20:06:05.410Z","logoUrl":"https://avatars.githubusercontent.com/u/95189389?u=8e277e1a24ff84ae7b49c89e6897fa44178a5c34&v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["files-documents"],"tags":[],"runtime":"node","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-11-05T21:21:36.702Z","sample":false,"url":"https://conduits.dev/tools/docshare","language":"TypeScript","transports":["stdio"],"install":{"npm":"@reneturcios/docshare"},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"# docshare\n\nHand someone a PDF and actually know what happened to it.\ndocshare talks to EveryPage: you upload a document once,\nshare the tracked link it gives back, and from then on every\nopen, download, and email-gate completion is recorded\nagainst that link — or, with variants, against the exact\nrecipient you sent it to.\n\nThere are fifteen tools. Sharing and lifecycle:\n`everypage_share_pdf` uploads a PDF from a local path or an\nhttps URL and can apply its share settings in the same\ncall; `everypage_list_files` and `everypage_get_file`\nbrowse what you have shared; `everypage_update_file_settings`\nchanges the passcode, expiry, download permission, viewer\nmode, email gate, view limit, page range, or slug;\n`everypage_replace_content` swaps the PDF behind a live\nlink while the link and its history stay put; and\n`everypage_delete_file` trashes a document, or purges it\nfor good when you ask for that explicitly.\n\nReadership: `everypage_get_readership` reports who read a\ndocument, how far they got, and where they dropped off,\nwhile `everypage_list_events` streams recent views,\ndownloads, or captured leads behind a polling cursor you\ncarry from one call to the next (a cursor only works for\nthe stream type it came from).\n\nVariants and webhooks: `everypage_create_variants` makes\none tracked link per named recipient, `everypage_list_variants`,\n`everypage_update_variant`, and `everypage_delete_variant`\nmanage them (including GDPR redaction of a recipient's\nname), `everypage_list_webhooks` and `everypage_manage_webhook`\nlook after webhook endpoints and their delivery health,\nand `everypage_account` shows the connected account, its\nplan, and what that plan allows.\n\nA file argument is forgiving about form: paste the UUID,\nthe short link id, or the full share URL — `/embed/` links\nand links carrying `?via=` work too. Uploads are checked\nbefore they leave the machine: the bytes must start with\nthe PDF magic `%PDF-`, and a PDF fetched from an https URL\nis downloaded without your EveryPage key, which is only\never sent to EveryPage itself.\n\n## Configuration\n\n```bash\nexport EVERYPAGE_API_KEY=\"...\"            # required\nexport EVERYPAGE_BASE_URL=\"https://everypage.co\"   # optional override\nexport EVERYPAGE_READ_ONLY=\"true\"         # optional: read tools only\n```\n\nWithout `EVERYPAGE_API_KEY`, every tool fails with\n`EVERYPAGE_API_KEY is not set` before any request is made.\nWith `EVERYPAGE_READ_ONLY=true`, only the seven read tools\n(`everypage_list_files`, `everypage_get_file`,\n`everypage_get_readership`, `everypage_list_events`,\n`everypage_list_variants`, `everypage_list_webhooks`,\n`everypage_account`) are listed, and calling any other\ntool is refused.\n\n## CLI\n\nEach tool is a subcommand taking one JSON argument string:\n\n```bash\nnpx @reneturcios/docshare everypage_share_pdf '{\"source\":\"./deck.pdf\",\"settings\":{\"requireEmail\":true}}'\nnpx @reneturcios/docshare everypage_list_events '{\"type\":\"view\",\"limit\":20}'\nnpx @reneturcios/docshare everypage_create_variants '{\"file\":\"https://everypage.co/s/abc123?via=email\",\"labels\":[\"Ana\",\"Ben\"]}'\nnpx @reneturcios/docshare --version\n```\n\nOutput is the tool's result text (normally the upstream\nJSON). Exit codes: `0` on success, `1` on a runtime error\n(including a validation or upstream failure), `2` on a\nusage error.\n\n## MCP server\n\n```bash\nnpx -y @reneturcios/docshare mcp\n```\n\nMCP client config:\n\n```json\n{\n  \"mcpServers\": {\n    \"docshare\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@reneturcios/docshare\", \"mcp\"],\n      \"env\": { \"EVERYPAGE_API_KEY\": \"...\" }\n    }\n  }\n}\n```\n\n## Docker\n\n```bash\ndocker run -i -e EVERYPAGE_API_KEY=... ghcr.io/cloudcorprecords/docshare\ndocker run --rm -e EVERYPAGE_API_KEY=... ghcr.io/cloudcorprecords/docshare everypage_account '{}'\n```\n\n## Development\n\n```bash\nnpm install\nnpm run build   # tsc -> dist/\nnpm test        # tsx --test test/*.test.ts (fake fetch + fake file reader, no network)\nnpm run dev     # run the CLI from source\n```\n\n## License\n\nMIT — Copyright (c) 2026 Rene Turcios\n"}