DeckExtract
Download DocSend and Papermark decks as PDF or PPTX, including email-gated and protected links.
¿Debería usar esto?
Calidad y seguridad
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"deckextract": {
"url": "https://deckextract.com/mcp"
}
}
}Puntos de conexión remotos
https://deckextract.com/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (2)
🟡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.
Esquema de entrada
{
"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#"
}Esquema de salida
{
"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.
Esquema de entrada
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"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#"
}Comunidad
Evidencia