DeckExtract

Download DocSend and Papermark decks as PDF or PPTX, including email-gated and protected links.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
65%
Naming quality
80%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~969Tokens (tool definitions)
~4.6 KBTypical response size
Moderate attention impact (0.76% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "deckextract": {
      "url": "https://deckextract.com/mcp"
    }
  }
}

Remote endpoints

https://deckextract.com/mcpstreamable-http

What it can do

Tool inventory

Tools (2)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟡deckextract(url, format, analyze, email, password, ...)

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` (requires a DeckExtract Pro account) 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.

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "description": "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."
    },
    "format": {
      "type": "string",
      "enum": [
        "pdf",
        "pptx"
      ],
      "description": "Output format (default 'pdf')"
    },
    "analyze": {
      "type": "boolean",
      "description": "If true, also return structured analysis of the deck (company, team, round, metrics, market, competition). Requires a DeckExtract Pro account."
    },
    "email": {
      "type": "string",
      "format": "email",
      "description": "Email to present to email-gated decks. If omitted, an ephemeral address is generated automatically when the deck requires one."
    },
    "password": {
      "type": "string",
      "description": "Passcode for passcode-protected decks"
    },
    "sessionId": {
      "type": "string",
      "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."
    },
    "otp": {
      "type": "string",
      "description": "The 6-digit verification code the deck emailed to the viewer (requires_email_otp step). Send together with otpSessionId."
    },
    "otpSessionId": {
      "type": "string",
      "description": "Resume token from a prior requires_email_otp reply. The parked session lives ~5 minutes; a wrong code returns a fresh token."
    }
  },
  "required": [
    "url"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "downloadUrl": {
      "type": "string",
      "description": "Temporary URL of the extracted deck"
    },
    "resourceUri": {
      "type": "string",
      "description": "MCP resource URI (deckextract://deck/...) to read the bytes via resources/read"
    },
    "format": {
      "type": "string",
      "enum": [
        "pdf",
        "pptx",
        "zip"
      ]
    },
    "sizeBytes": {
      "type": "integer"
    },
    "expiresAt": {
      "type": "string",
      "description": "ISO timestamp when the URL/resource expires"
    },
    "sourceUrl": {
      "type": "string"
    },
    "analysis": {
      "description": "Structured deck analysis (present when analyze=true succeeded)"
    },
    "analysisError": {
      "type": "string",
      "description": "Set when extraction succeeded but analysis could not be produced"
    }
  },
  "required": [
    "downloadUrl",
    "resourceUri",
    "format",
    "sizeBytes",
    "expiresAt",
    "sourceUrl"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢account_status

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.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "authenticated": {
      "type": "boolean",
      "description": "Whether the caller is signed in"
    },
    "plan": {
      "type": "string",
      "enum": [
        "anonymous",
        "free",
        "unlimited"
      ],
      "description": "'unlimited' is the Pro plan"
    },
    "isPro": {
      "type": "boolean"
    },
    "email": {
      "type": [
        "string",
        "null"
      ]
    },
    "monthlyUsage": {
      "type": "integer",
      "description": "Extractions used this calendar month"
    },
    "monthlyLimit": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "description": "Free-plan monthly cap; null when unlimited"
    },
    "remaining": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "description": "Extractions left this month; null when unlimited"
    }
  },
  "required": [
    "authenticated",
    "plan",
    "isPro",
    "monthlyUsage",
    "monthlyLimit",
    "remaining"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded2 tools
verifiedversion not recorded2 tools