DeckExtract
Server Details
Download DocSend and Papermark decks as PDF or PPTX, including email-gated and protected links.
- Status
- Healthy
- Uptime
- 100.0% over 66 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 2 tools
The two tools have completely distinct purposes: one reports account/plan/quota metadata with no input, the other performs the extraction work. There is no plausible scenario where an agent would confuse them.
Both names are lowercase and readable, but conventions are mixed: `account_status` uses underscore-separated noun_phrase style while `deckextract` is a single unseparated compound with no verb. A consistent scheme would be `check_account`/`extract_deck` or `account_status`/`extraction_status`.
Two tools is thin for a server, though the extraction tool is deliberately rich (analyze mode, data rooms, OTP/resume flow). It sits on the borderline between minimal-and-sufficient and under-provisioned.
Extraction plus quota/plan status covers the core workflow, and the OTP/resume handling closes the main dead end. Gaps are minor: no way to list or re-retrieve past extractions, check the status of a long-running job, or cancel one.
Available Tools
2 toolsaccount_statusCheck your DeckExtract account statusARead-onlyIdempotentInspect
Returns the calling account's plan (free or Pro), whether it's signed in, and this month's extraction usage and remaining quota. Takes no input.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| plan | Yes | 'unlimited' is the Pro plan |
| No | ||
| isPro | Yes | |
| remaining | Yes | Extractions left this month; null when unlimited |
| monthlyLimit | Yes | Free-plan monthly cap; null when unlimited |
| monthlyUsage | Yes | Extractions used this calendar month |
| authenticated | Yes | Whether the caller is signed in |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so behavioral traits are covered. The description adds detail on what data is returned, which is useful but not beyond what annotations convey.
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, no redundant information. 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?
For a simple read-only tool with no parameters, good annotations, and an output schema, the description is adequately complete. It specifies the key returned fields.
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?
No parameters; schema coverage is 100%. Description confirms 'Takes no input,' matching the empty input schema. Baseline for 0 params is 4.
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?
Description clearly states the tool returns account plan, sign-in status, and usage/quota. Verb 'returns' and resource 'calling account's status' are specific. Sibling 'deckextract' is likely for a different purpose, so no confusion.
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?
Explicitly states it takes no input, implying it can be called freely. Does not explicitly state when not to use it, but context with sibling tool makes it clear this is for status checks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deckextractExtract a DocSend or Papermark deckAInspect
Extract a deck from a DocSend or Papermark sharing link. Returns a temporary download URL and a readable deckextract://deck/... resource for the PDF/PPTX (or a ZIP for data rooms — a DocSend Space or Papermark data room counts as one extraction like any other link). Pass analyze: true (part of DeckExtract for Funds) to also return structured deck data. Decks that email the viewer a verification step return resume tokens with retry instructions: fetch the emailed 6-digit code and retry with otp + otpSessionId (Papermark), or retry with url set to the emailed confirmation link + sessionId (DocSend). Typical extraction takes 15-90 seconds; the public API is rate limited to 5 extractions per IP per 30 minutes.
| Name | Required | Description | Default |
|---|---|---|---|
| otp | No | The 6-digit verification code the deck emailed to the viewer (requires_email_otp step). Send together with otpSessionId. | |
| url | Yes | The deck sharing link, e.g. https://docsend.com/view/... or https://papermark.com/view/... — on a requires_email_confirmation retry, pass the confirmation link from the verification email instead. | |
| No | Email to present to email-gated decks. If omitted, an ephemeral address is generated automatically when the deck requires one. | ||
| format | No | Output format (default 'pdf') | |
| analyze | No | If true, also return structured analysis of the deck (company, team, round, metrics, market, competition). Part of DeckExtract for Funds. | |
| password | No | Passcode for passcode-protected decks | |
| sessionId | No | Resume token from a prior requires_password or requires_email_confirmation reply. Echo it on the retry so the same viewer session is reused. | |
| otpSessionId | No | Resume token from a prior requires_email_otp reply. The parked session lives ~5 minutes; a wrong code returns a fresh token. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | Pages the source had no image for, in plain words (e.g. DocSend counts its own trailing sign-up prompt as a page) |
| format | Yes | |
| analysis | No | Structured deck analysis (present when analyze=true succeeded) |
| expiresAt | Yes | ISO timestamp when the URL/resource expires |
| sizeBytes | Yes | |
| sourceUrl | Yes | |
| downloadUrl | Yes | Temporary URL of the extracted deck |
| resourceUri | Yes | MCP resource URI (deckextract://deck/...) to read the bytes via resources/read |
| analysisError | No | Set when extraction succeeded but analysis could not be produced |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations covering only the safety profile (readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false), the description carries real additional weight: rate limit of 5 extractions per IP per 30 minutes, 15-90 second typical duration, ZIP output for data rooms, the ~5 minute parked-session lifetime, and the fact that a wrong code returns a fresh token. These are exactly the operational traits an agent cannot infer from structured fields. No contradiction with annotations — resource creation justifies readOnlyHint=false.
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?
Front-loaded with purpose, then progressively more conditional detail (analyze flag, verification flows, timing, rate limits) — a sensible information hierarchy. Some sentences are dense and parenthetical-heavy, but essentially every clause carries an actionable fact, so waste is minimal.
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?
An output schema exists, yet the description still sketches the return shape (download URL, deck resource, ZIP vs PDF/PPTX) without redundancy. All the gaps an agent would otherwise hit — authentication/verification retries, latency, throttling, data-room handling — are covered, leaving nothing material missing for an 8-parameter, 1-required 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 baseline is 3, but the description adds genuine semantics on top: it explains that `otp` must be sent together with `otpSessionId`, that `url` should be swapped for the emailed confirmation link on a DocSend retry, and that `sessionId` is echoed to reuse a viewer session. These pairing/substitution rules are not spelled out per-parameter in the schema.
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 first sentence names a specific verb and resource ('Extract a deck from a DocSend or Papermark sharing link') and immediately states what comes back (a temporary download URL plus a `deckextract://deck/...` resource). It is unmistakable against the only sibling, account_status, which is an unrelated account tool.
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 conditional guidance: use `analyze: true` only under DeckExtract for Funds, and branch on the verification step (fetch the emailed 6-digit code and retry with `otp`+`otpSessionId` for Papermark, or pass the emailed confirmation link as `url` with `sessionId` for DocSend). It never states when-not to use it or compares against account_status, but for a single-purpose extractor that context is largely self-evident.
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.
1 tool update
- Changed
deckextract1 field changed- added
Output schema / properties / noteAdded value: +{ + "description": "Pages the source had no image for, in plain words (e.g. DocSend counts its own trailing sign-up prompt as a page)", + "type": "string" +}
1 tool update
- Changed
deckextract1 field changed- changed
Input schema / properties / analyze / descriptionPrevious value: -"If true, also return structured analysis of the deck (company, team, round, metrics, market, competition). Requires a DeckExtract Pro account."New value: +"If true, also return structured analysis of the deck (company, team, round, metrics, market, competition). Part of DeckExtract for Funds."
1 tool update
- Changed
deckextract4 fields changed- added
Input schema / properties / otpAdded value: +{ + "description": "The 6-digit verification code the deck emailed to the viewer (requires_email_otp step). Send together with otpSessionId.", + "type": "string" +} - added
Input schema / properties / otpSessionIdAdded value: +{ + "description": "Resume token from a prior requires_email_otp reply. The parked session lives ~5 minutes; a wrong code returns a fresh token.", + "type": "string" +} - added
Input schema / properties / sessionIdAdded value: +{ + "description": "Resume token from a prior requires_password or requires_email_confirmation reply. Echo it on the retry so the same viewer session is reused.", + "type": "string" +} - changed
Input schema / properties / url / descriptionPrevious value: -"The deck sharing link, e.g. https://docsend.com/view/... or https://papermark.com/view/..."New value: +"The deck sharing link, e.g. https://docsend.com/view/... or https://papermark.com/view/... — on a requires_email_confirmation retry, pass the confirmation link from the verification email instead."
2 tool updates
- Added
account_status - Changed
deckextract1 field changed- changed
Input schema / properties / analyze / descriptionPrevious value: -"If true, also return structured analysis of the deck (company, team, round, metrics, market, competition). Requires a DeckExtract Pro API key in the Authorization header."New value: +"If true, also return structured analysis of the deck (company, team, round, metrics, market, competition). Requires a DeckExtract Pro account."
1 tool update
- Changed
deckextract7 fields changed- added
Input schema / properties / analyzeAdded value: +{ + "description": "If true, also return structured analysis of the deck (company, team, round, metrics, market, competition). Requires a DeckExtract Pro API key in the Authorization header.", + "type": "boolean" +} - added
Output schema / properties / analysisAdded value: +{ + "description": "Structured deck analysis (present when analyze=true succeeded)" +} - added
Output schema / properties / analysisErrorAdded value: +{ + "description": "Set when extraction succeeded but analysis could not be produced", + "type": "string" +} - changed
Output schema / properties / expiresAt / descriptionPrevious value: -"ISO timestamp when the URL expires"New value: +"ISO timestamp when the URL/resource expires" - changed
Output schema / properties / format / enumPrevious value: -[ - "pdf", - "pptx" -]New value: +[ + "pdf", + "pptx", + "zip" +] - added
Output schema / properties / resourceUriAdded value: +{ + "description": "MCP resource URI (deckextract://deck/...) to read the bytes via resources/read", + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "downloadUrl", - "format", - "sizeBytes", - "expiresAt", - "sourceUrl" -]New value: +[ + "downloadUrl", + "resourceUri", + "format", + "sizeBytes", + "expiresAt", + "sourceUrl" +]
1 tool update
- First observed
deckextract
Related MCP Connectors
- LinkjarOAuthcom.linkjar
Send PDFs, decks and HTML pages as branded, tracked links, and see who opened them.
Create polished slide decks from text or YouTube links in seconds. Fetch video transcripts to tran…
Share PDFs as trackable links and see who opened them, which pages they read and for how long.
Share PDFs as tracked links and see who read them, how far they got, and where they stopped.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI models to convert NotebookLM PDF exports into high-quality PowerPoint presentations with automatic watermark removal and vector graphics preservation. It provides automated tools for slide conversion, metadata management, and document processing via the Model Context Protocol.17MIT
- AlicenseAqualityCmaintenanceConvert HTML to PDF/PNG/WebP/PPTX slide carousels with 11 themes. For LinkedIn carousels, decks, Instagram posts, and infographics — Puppeteer-based pixel-perfect rendering.62MIT

mulmocast-visionofficial
AlicenseCqualityBmaintenanceEnables LLMs to automatically generate presentation slides from natural language instructions using 80+ business-oriented templates, with auto-save and PDF export.832,199 npm1AGPL 3.0- AlicenseAqualityFmaintenanceGenerate professional AI-powered presentations from a topic, raw text, or document file. Export to PPTX, PDF, image, or shareable link.51MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.