heydecks
Your agent writes the content.
Community: Submitted by a user or imported; check the owner before granting accessOnlineNo sign-inGlobalFreeCan modify data
What it can do
- List Slide Templates: List every available slide template with its field schema (key, label, type, optional max length, allowed values). Use this BEFORE creating slides so you know what content shape
- List Brands: List every brand in the current user's workspace.
- List Decks: List every deck visible to the current user (their workspace + decks they collaborate on).
What data it sees
Do you need an account
No: the server works without sign-in
Your agent writes the content. heydecks turns it into a real deck: on brand, shareable, and exportable to PDF and PPTX, all from one call.
Slide creator MCP and API
Server tool list (34)
Raw names from tools/list. Only developers need these.
| list_slide_templates | List every available slide template with its field schema (key, label, type, optional max length, allowed values). Use this BEFORE creating slides so you know what content shape each template expects. Pass `verbose: true` to also receive the placeholder `defaults` for each slide (much larger payload). |
| list_brands | List every brand in the current user's workspace. |
| list_decks | List every deck visible to the current user (their workspace + decks they collaborate on). |
| get_deck | Fetch a full deck including every slide instance with its slide_type and content. |
| create_deck | Create a new empty deck (it ships with a title-cover and a CTA-close slide). Returns the created deck. Costs 100 credits, the same as building a deck on the dashboard or REST API; reading and editing the deck afterward is free. |
| append_slide | Add a slide to a deck. `slide_type` must come from list_slide_templates OR list_slide_types (custom blocks use `custom:<id>`). `content` must match the chosen template's field schema. By default the slide is appended at the end; pass `index` (0-based) or `after_slide_id` to place it elsewhere. Optional `notes` sets the slide's speaker notes. |
| add_slides | Add MANY slides to a deck in one call (the fastest way to build a deck you have already designed). `slides` is an ordered array of { slide_type, content, notes? }; each `slide_type` comes from list_slide_templates or list_slide_types (custom blocks use `custom:<id>`) and each `content` matches that template's field schema. By default the slides are appended at the end; pass `replace: true` to make this array the deck's COMPLETE slide list (this drops the placeholder cover/close that create_deck ships with, so include your own). |
| update_slide | Change an existing slide's content. Pass only the fields you want to change in `content`, they're merged on top of the current content. Optional `notes` sets the slide's speaker notes. |
| delete_slide | Remove a slide from a deck. |
| reorder_slides | Reorder a deck's slides. Pass `ordered_slide_ids` as the full set of slide ids in the new order. |
| update_deck | Update top-level deck metadata (title, slug, visibility, password, locale). Pass only the fields you want changed. |
| publish_deck | Make a deck publicly viewable at https://heydecks.com/d/<slug>. |
| unpublish_deck | Take a deck offline (revert it to draft). |
| delete_deck | Permanently delete a deck and all its slides. |
| get_brand | Fetch a single brand by id, including colors, typography, logos, locale, and tone. |
| create_brand | Create a new brand in the current workspace. By default it clones the active brand's tokens; pass `clone_from_brand_id` to seed from a specific brand. |
| update_brand | Patch a brand. Pass only the fields you want to change — colors / typography / logos / locale are deep-merged. |
| set_active_brand | Mark a brand as the workspace's active brand. New decks adopt its tokens by default. |
| delete_brand | Permanently delete a brand from the workspace. |
| extract_brand_from_url | Visit a public website with Cloudflare Browser Rendering, sample its colors / fonts / logos, and return an `ExtractedBrand` payload. Call create_brand or update_brand to persist the result. |
| list_images | List every hosted image URL referenced across the current workspace's decks. Useful for reusing previously-uploaded photos and logos. Inline `data:` URIs (embedded base64 blobs) are filtered out by default — pass `include_data_uris: true` to receive them as well (large payload). |
| list_slide_templates_saved | List the current workspace's *saved* slide templates (user-created reusable blocks). Distinct from list_slide_templates which returns the built-in catalog. |
| save_slide_template | Save a slide's content as a reusable template in the current workspace. `base_template_key` must match a built-in slide template; content must conform to that template's schema. |
| update_slide_template | Rename or update the content of a saved slide template. |
| delete_slide_template | Delete a saved slide template. |
| apply_slide_template | Append a previously-saved slide template to a deck. Equivalent to looking up the template, then calling append_slide with its content. |
| list_deck_versions | List the snapshot history for a deck — every save / publish / restore event with timestamp, author, and version number. |
| restore_deck_version | Roll a deck back to a prior snapshot. The current state is captured as a checkpoint first, so the restore is reversible. |
| list_slide_types | List every WORKSPACE-DEFINED custom slide type. Each entry has an id, name, description, the layout tree, the default content, and the derived list of field keys (for `content` shape on append_slide). Use `custom:<id>` as the slide_type on append_slide to insert one of these. |
| create_slide_type | Create a new custom slide type in the current workspace. Pass `layout` as the new tree shape (array of nodes — containers like `stack`/`row`/`grid` or leaves like `heading`/`paragraph`/`image`). Defaults seed the slide's initial content when added to a deck. |
| update_slide_type | Update an existing custom slide type. Pass only the fields you want changed. `layout` replaces the full tree; `defaults` replaces the full default content map. |
| delete_slide_type | Permanently delete a custom slide type. Decks that referenced it will display a fallback notice for that slide until edited. |
| send_test_email | Fire a sample invitation-style email to the given address. Used to preview the live email template; does not create any deck or collaborator row. |
| generate_image | Generate one or more AI images from a text prompt. Images are saved to your workspace image library and returned as public URLs you can drop into any deck image field. Costs 80 credits per image. |