getdeck

160+ finished slide layouts and 41 themes your agent can search, fetch and build a deck from

Should I use this

Quality & Safety

A
Description quality
96%
Schema completeness
77%
Naming quality
97%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (1)

  • LOWTool 'get_theme' description lacks action verbin get_theme

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,398Tokens (tool definitions)
~1.2 KBTypical response size
Moderate attention impact (1.09% 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": {
    "getdeck": {
      "url": "https://getdeck.dodraft.studio/api/mcp"
    }
  }
}

Remote endpoints

https://getdeck.dodraft.studio/api/mcpstreamable-http
https://getdeck.co/api/mcpstreamable-http

What it can do

Tool inventory

Tools (7)

🟒 Read-only🟑 WriteπŸ”΄ Deleteβšͺ Unknown
🟒list_layouts(category, query, limit, since)

Search or filter the layout catalog to find a specific layout. Returns metadata only, no HTML. Also the tool for "what is new", "any new layouts?", "what got added since last month" - pass `since` and it returns only what landed after that date. If the user asked for a whole deck rather than one slide, call suggest_deck first instead of this.

Input Schema

{
  "type": "object",
  "properties": {
    "category": {
      "type": "string"
    },
    "query": {
      "type": "string"
    },
    "limit": {
      "default": 30,
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 150
    },
    "since": {
      "description": "ISO date (YYYY-MM-DD). Only layouts added after it. Use for \"what is new\" questions; if the user gave no date, a month back is a sensible default.",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒list_themes(mood, scheme)

Search or filter the theme catalog. Returns metadata and key colors only, not the full CSS.

Input Schema

{
  "type": "object",
  "properties": {
    "mood": {
      "type": "string"
    },
    "scheme": {
      "type": "string",
      "enum": [
        "light",
        "dark"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒get_layout(id, theme_id, lang)

Return one layout as a ready-to-use, self-contained document: HTML, theme CSS, and its slot definitions. Call this once the user knows which layout they want, or with ids returned by suggest_deck.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "theme_id": {
      "type": "string"
    },
    "lang": {
      "default": "ko",
      "description": "Language for slot hints and usage notes. Pass the language the user is writing in.",
      "type": "string",
      "enum": [
        "ko",
        "en"
      ]
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒get_theme(id)

Return one theme in full: its complete CSS and design tokens.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒get_starter_kit

Call this when joining several fetched layouts into one deck file. Requests like "merge these into one file", "bundle it as a deck", or "make it one HTML" mean this tool. Returns the base CSS, assembly rules, spacing tokens, and a viewport snippet for standalone viewing.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟑suggest_deck(purpose, slide_count, tone, deck_id, theme_id, ...)

Compose a deck and return a preview link the user can open in the browser right away. The user sees what the finished deck looks like without a single file being generated. Use this for requests like "make me a pitch deck", "I need a sales deck", "10 slides for an investor update", "put together a product overview", or "show me a deck outline" - anything where the user has a topic but has not picked layouts yet. ALSO use it when the user already has layouts in hand - "이 λ ˆμ΄μ•„μ›ƒλ“€ λͺ¨μ•„μ„œ 프리뷰 λ§Œλ“€μ–΄μ€˜", "combine these layouts into a preview", "μΆ”μ²œ 프리뷰 λ§Œλ“€μ–΄μ€˜", "show these together as a deck" - pass them as layout_ids and it returns ONE deck preview link for the whole set. Never answer that kind of request with a list of individual layout links: one deck preview is the deliverable. Returns one theme + a slide order + the preview link, plus a `clarify` question to put to the user so the composition and theme are their call, not a guess. Always pass the preview link through to the user verbatim, ask clarify.question with its options, and wait for the answer - then call this tool again with deck_id / theme_id as clarify.answer_with says. Do not start generating files while a clarify question is unanswered. Once it is settled, fetch each layout id with get_layout, then call get_starter_kit to join them into one deck.

Input Schema

{
  "type": "object",
  "properties": {
    "purpose": {
      "type": "string",
      "description": "The user's topic or goal, in their own words. e.g. \"startup pitch deck\", \"quarterly business review\""
    },
    "slide_count": {
      "default": 10,
      "description": "How many slides. If the user did not say, use the default of 10 rather than asking.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 30
    },
    "tone": {
      "description": "Desired mood. e.g. \"minimal\", \"bold\", \"warm\". Omit if the user did not mention one.",
      "type": "string"
    },
    "deck_id": {
      "description": "The composition the user picked from a previous call's clarify.options. Skips topic matching.",
      "type": "string"
    },
    "theme_id": {
      "description": "The theme the user picked from a previous call's clarify.options. Pass deck_id along with it.",
      "type": "string"
    },
    "layout_ids": {
      "description": "Layout ids the user or you already picked, in slide order. Skips topic matching and slide_count: the preview link is built from exactly these layouts.",
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "purpose"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒export_pptx(theme, slides)

Turn a deck into a downloadable .pptx file. Requests like "make it a PowerPoint", "PPT둜 λ½‘μ•„μ€˜", or "export this deck" mean this tool. Takes the layout ids and the text for each slot, and returns a signed download link. Coordinates come from our measurements, so the file matches what the gallery shows β€” but the boxes are fixed, so text longer than slots[].max_chars will be clipped.

Input Schema

{
  "type": "object",
  "properties": {
    "theme": {
      "description": "Theme id. Only measured themes work; omit to use the default.",
      "type": "string"
    },
    "slides": {
      "minItems": 1,
      "maxItems": 25,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "layout": {
            "type": "string"
          },
          "slots": {
            "description": "Slot id to text. Ids and their max_chars come from get_layout.",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {
              "type": "string"
            }
          }
        },
        "required": [
          "layout"
        ]
      },
      "description": "Up to 25 slides, in order."
    }
  },
  "required": [
    "slides"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded7 tools
verifiedversion not recorded7 tools
verifiedversion not recorded7 tools
verifiedversion not recorded6 tools