heydecks

MCP

MCP Server

Connect Claude Desktop or Claude Code to heydecks. Build, edit, and publish decks in natural language.

The heydecks MCP server lets Claude (or any MCP-aware agent) create and edit decks in your workspace. The server lives at https://heydecks.com/mcp. Auth is a personal access token you generate in the dashboard. Every action runs as you — same workspace, same brands, same decks.

The endpoint speaks JSON-RPC 2.0 over HTTP. One POST per call (or a batched array). No SSE or long-polling.

#Mint a token

  1. Sign in — Go to heydecks.com and sign in.
  2. Create a token — Open Account settings → MCP access → New token. Name it (e.g. "Claude Desktop"), then copy the plaintext — it is shown once.
  3. Revoke when done — Revoke at any time from the same page. Revocation takes effect on the next call.

heydecks stores only sha256(token) plus an 8-character prefix for recognition. Tokens are scoped to your user — they never grant cross-workspace access.

#Connect Claude Desktop

Open Settings → Developer → Edit Config and paste:

claude_desktop_config.json

JSON
{
  "mcpServers": {
    "heydecks": {
      "transport": {
        "type": "http",
        "url": "https://heydecks.com/mcp",
        "headers": {
          "Authorization": "Bearer mcp_…your_token…"
        }
      }
    }
  }
}

Restart Claude Desktop. heydecks appears in the MCP servers panel.

#Connect Claude Code

Shell
claude mcp add --transport http heydecks https://heydecks.com/mcp \
  --header "Authorization: Bearer <token>"

Replace <token> with the plaintext from the dashboard.

#Tools

Start with generate_deck for one-shot creation. Use the fine-grained tools when you need explicit control over sections.

ToolPurpose
generate_deckstart hereOne-shot: turns a prompt (or pasted notes) into a complete deck. Returns the deck id and URL. Costs 10 credits.
list_section_templatesReturns every available template with its content field schema. Call before building sections manually so you know what shape each template expects.
list_brandsLists brands in your workspace — palette, typography, active flag.
list_decksLists your decks, slugs, status, and public URL (if published).
get_deckReturns a single deck with every section and its content.
create_deckCreates a new empty deck with a title cover and CTA close, ready to fill.
append_sectionAppends a section to a deck. template_key must come from list_section_templates; content must match that template's field schema.
update_sectionReplaces a section's content fields. Pass only the fields to change — merged on top of current content.
delete_sectionRemoves a section permanently.
reorder_sectionsReorders sections by passing the full list of section ids in the new order.
update_deckUpdates deck title, slug, visibility, password, locale, or brandId.
publish_deckMakes the deck live at https://heydecks.com/d/<slug>.
unpublish_deckReverts to draft. The public URL stops resolving.
delete_deckPermanently deletes a deck and all its sections.
get_brandFetches a single brand's full tokens.
create_brandCreates a new brand (clones tokens from active brand by default).
update_brandPatches a brand's colors, typography, logos, tone.
set_active_brandMarks a brand as the workspace default for new decks.
delete_brandPermanently deletes a brand.
extract_brand_from_urlVisits a public URL, samples its colors/fonts/logos, and returns an ExtractedBrand payload. Costs 5 credits.
list_imagesLists every hosted image URL referenced across your workspace's decks.
list_section_templates_savedLists your workspace's saved (reusable) section blocks.
save_section_templateSaves a section's content as a reusable block.
update_section_templateRenames or updates a saved block.
delete_section_templateDeletes a saved block.
apply_section_templateAppends a saved block to a deck.
list_deck_versionsSnapshot history for a deck — every save/publish/restore event.
restore_deck_versionRolls a deck back to a prior snapshot (current state is checkpointed first).
list_section_typesWorkspace-defined custom section types with their layout and field schema.
create_section_typeCreates a new custom section type.
update_section_typeUpdates a custom section type's layout or defaults.
delete_section_typePermanently deletes a custom section type.
send_test_emailFires the invitation email template to a given address — for previewing email designs.

#Example prompts

Try these with Claude after connecting:

"Create a deck about our Q3 product launch — include stats, a roadmap, and a CTA."

"List my section templates, then create a deck called 'Q3 review' with a title, three stats, a process flow, and a CTA. Publish it when done."

"Open the deck feature-tour, swap the testimonial for one from M. Müller, and republish."

For one-shot prompts, Claude calls generate_deck and returns a deck id and draft URL in a single step. For fine-grained control it calls list_section_templates first to learn the schemas, then creates, appends, and publishes in sequence.

#Security

  • Tokens are scoped to one user. Cross-workspace access is not possible.
  • The endpoint is bearer-only — Clerk browser sessions are ignored on /mcp.
  • All write tools enforce workspace ownership: a token can't edit a deck in another workspace even if it knows the deck id.
  • last_used_at is updated on every call so you can spot a leaked token in the dashboard.
  • Revoking a token via Account → MCP access sets revoked_at; the next call returns 401.

#Notes

  • generate_deck calls the Anthropic API inline and may take 10–60 seconds. Use a generous timeout in your MCP client.
  • Image fields take a URL. The server doesn't upload binary images — pass an https:// URL and the section will fetch it at render time.
  • Slugs are unique per workspace. If a slug clashes, the server auto-suffixes (-2, -3 …).
  • generate_deck costs 10 credits. extract_brand_from_url costs 5. All other tools are free.