Kadal Deck
Server Details
Build it. Rehearse it. Own the room. The hosted MCP server for Kadal Deck (deck.kadal.cc), which has your back for the whole talk, from the first idea to the last applause. Connect once with OAuth and your AI agent can list and inspect your decks, read a talk in progress (current slide, who is watching, polls and questions by votes), check analytics, change titles, visibility and passcodes, roll back versions, create share links, and quick-edit and publish decks through the web builder, with conflict-safe publishing that never overwrites newer work. Pair it with the local server (npx @kadal/deck mcp) to write, check and build decks on your machine. Open source.
- Status
- Healthy
- Uptime
- 100.0% over the last 24 hours
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- kadalcc/deck
- GitHub Stars
- 1
- Server Listing
- kadal-deck
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 17 tools
The descriptions are unusually good at boundary-drawing: nearly every tool explicitly names its nearest neighbour and says when to use that instead (get_deck vs get_deck_sync vs get_deck_stats vs get_live_room, list_versions vs get_deck_source, authoring_guide vs deck_reference). The main residual confusion is publish_deck, which despite its name publishes nothing (it returns CLI commands) and sits right next to publish_draft, which does publish; the authoring_guide/deck_reference pair is also a soft overlap.
Most tools follow a clear verb_noun snake_case pattern (get_deck, list_versions, create_share_link, update_deck, rollback_deck, start_quick_edit). Deviations are minor but real: media_search inverts to noun_verb, and authoring_guide, deck_reference and whoami are bare nouns with no action verb.
Seventeen tools is on the heavy side but each covers a distinct slice of a genuinely broad domain (authoring docs, deck reads, source, sync, versions, analytics, live room, media, publishing, sharing, identity). No tool looks redundant enough to drop; a couple of the read variants could arguably be folded into get_deck.
The surface covers read, publish, rollback, settings, share links, analytics and live state well, but it has a structural dead end: by design no tool writes slide content, so an agent that reads source to 'plan an edit' must hand off to a human in the builder or the local CLI. Delete/unpublish of a deck is also absent, leaving lifecycle coverage asymmetric.
Publisher details
- Operator
- Kadal · Publisher source
- Operator website
- https://deck.kadal.cc
- Vendor relationship
- First-party
- Documentation
- https://deck.kadal.cc/docs/ai-agents/
- Trust center
- https://deck.kadal.cc/docs/security/
- Restrictions
- Needs a Kadal Deck account (the free plan works). On connect you pick one workspace and can make the connection read-only; plan limits apply (private decks and the premium library need a paid plan). No custom OAuth app or admin approval needed.
Available Tools
17 toolsauthoring_guideHow to write a Kadal DeckARead-onlyIdempotentInspect
Return the guide to writing a Kadal Deck: how to shape a talk (one idea per slide, clicks, speaker notes, layouts, live audience components), the layouts and components at a glance, then the full MDX and click syntax. Use it once before drafting or editing a deck.mdx; use deck_reference instead to look up one component, layout or option in detail. Read-only, no arguments; the answer is long markdown, so fetch it once per session rather than per slide.
Inputs: no named parameters.
deck_referenceLook up a Kadal Deck featureARead-onlyIdempotentInspect
Look up what a deck can use — components with props, defaults and examples, layouts, backgrounds, themes, frontmatter keys, CLI commands — from the engine's own catalog (exact for @kadal/deck 0.12.0), plus the docs' guides. Use it to check a component or option before writing it; use authoring_guide instead for the overall how-to. Read-only. Pass one mode: nothing for an index of sections and guides, section (plus name for one entry), topic for a guide in full, or search for the best matches across both; if several are given, section wins, then topic. An unknown section, entry or topic is an error that lists the valid ones.
Inputs: name, topic, format, search, +1 more.
get_deckGet a deckARead-onlyIdempotentInspect
Fetch one deck's settings and shareable links (view, presenter, audience join, print, dashboard). Use it to hand someone a link or to check visibility, passcodes or showcase status before update_deck; use get_deck_stats for audience analytics, get_live_room for a talk in progress, list_versions for publish history, and get_deck_sync or get_deck_source for quick-edit state and file contents. Read-only.
Inputs: deck (required). Returns: id, slug, urls, title, +8 more
get_deck_sourceRead a deck's editable sourceARead-onlyIdempotentInspect
Read the text of a deck's editable files (deck.mdx, pages/, data/, drawings/…) as published in its live version or an earlier one. Use it to review, quote or summarise a deck's content or to plan an edit; this server has no tool that writes slides, so to change them use start_quick_edit (the person edits in the builder) or the CLI. Unpublished web edits live in the draft, not here — get_deck_sync says if there are any. Read-only. Fails for a version list_versions doesn't show, or one published without its source (a CLI older than 0.5, or --no-source).
Inputs: deck (required), version, max_bytes. Returns: version
get_deck_statsGet a deck's analyticsARead-onlyIdempotentInspect
Read a deck's accumulated audience analytics, trimmed to what the workspace's plan includes; level says which tier you got. views (Free): views and distinct viewers; slides (Starter): plus time per slide and past live sessions; full (Pro, Team): plus questions, reactions, exports and share-link hits. Use it for reporting after a talk; use get_live_room for what is happening right now. Read-only. Slides are keyed "h,v" (0-based column, row).
Inputs: deck (required). Returns: level
get_deck_syncGet a deck's sync stateARead-onlyIdempotentInspect
Check whether a deck can be quick-edited in the web builder and whether other work is in flight: the live version and where it came from, any web draft editing it (draft.dirty = unpublished changes, plus its builder link), and quickEdit — ready, needs-republish (publish once with kadal-deck 0.5+), no-source (published with --no-source) or disabled (nothing published, or too big for the browser; reason says which). Use it before start_quick_edit, and before publishing over a deck from the CLI so someone's unpublished web edits aren't replaced; use list_versions for the full history. Read-only.
Inputs: deck (required). Returns: quickEdit
get_live_roomRead the live roomARead-onlyInspect
Read a deck's live room as it is right now: whether a talk is live, the presenter's slide, the audience and where they are, raised hands and pace votes, questions (unanswered first, then most-voted), and poll, word-cloud, quiz and reaction tallies. Use it during or just after a talk — to summarise questions or report a poll; use get_deck_stats for history across past sessions. Read-only: it observes and never changes the room, but successive calls differ as the room moves. live is false when neither the presenter nor any viewer is connected.
Inputs: deck (required). Returns: live
list_decksList decksARead-onlyIdempotentInspect
List the decks in the connected workspace, most recently changed first, each with the same settings and links get_deck returns. Use it to find a deck's id or slug before any per-deck tool, or to survey the workspace; use get_deck instead when you already know the deck. Read-only. Returns every match in one response (no paging).
Inputs: search. Returns: decks, workspace
list_versionsList a deck's versionsARead-onlyIdempotentInspect
List a deck's published versions, newest first, with who published each, how (CLI, web builder, agent or rollback), what it was based on, and which one is live. Use it to pick a number for rollback_deck or get_deck_source, or to see who changed a deck when; use get_deck_sync instead to learn whether unpublished web edits are pending. Read-only. Only versions the plan retains are listed (usage.limits.versionsKept in whoami): each publish prunes the oldest, never the live one or one a draft is based on.
Inputs: deck (required). Returns: deck, versions
media_searchFind media for a slideARead-onlyIdempotentInspect
Search media a deck can use and get each result's ready MDX (paste it into the slide as it is), its credit and a preview URL. Use it whenever a slide wants an icon, emoji, meme or sticker, instead of writing a media URL yourself. Kinds: icon (every free Iconify set), emoji (Fluent, Noto, Noto Animated, Twemoji; set picks one), template (Imgflip's top meme templates and Kadal's own — replace only the captions' text), kadal (Kadal's own library: stickers, GIF loops, meme templates, illustrations, free to use in any Kadal deck), store (Kadal Store's shelf under the Kadal Deck licence: images, icons, stickers, illustrations, patterns and wallpapers — also as slide backgrounds via frontmatter — music, sound effects, video clips, and shaders as Pro backgrounds; storeKinds narrows it; keep each result's credit attributes), and sticker / gif / meme, which here return Kadal's items only. GIFs, stickers and finished memes from KLIPY are not searched by this server: KLIPY must be asked from the person's own machine, so use the local kadal-deck mcp server (media_search) or the web builder's Insert media for those. Read-only; an empty query lists popular or all items.
Inputs: kind (required), set, limit, query, +1 more.
publish_deckHow to publish a deckARead-onlyIdempotentInspect
Get the exact commands to build and publish a deck project to this workspace. This server can't build MDX, so it returns steps to run on the computer that has the project (or points to the local kadal-deck mcp server). Use it when the person wants to publish a new deck or a project's changes; use start_quick_edit then publish_draft instead for a small edit to a deck already published with its source, and update_deck for settings. Read-only: it publishes nothing.
Inputs: slug. Returns: docs, steps, workspace, localServer, +2 more
publish_draftPublish a builder draftAInspect
Publish a web-builder draft as its deck's next version (or as a new deck, for a draft started from scratch), live at once to everyone who opens it. Use it once the person has finished editing at the builder link from start_quick_edit; use rollback_deck to undo it afterwards. Needs decks:write (60 changes a minute). It never silently replaces newer work: if the deck was published since the draft's base version, nothing changes and you get ok: false, reason: "diverged" with next steps — have the person open the builder (it merges the newer version in), then call again. Also refused while the draft holds merge-conflict markers or when the plan's storage is full.
Inputs: draft (required), force. Returns: ok
rollback_deckRoll a deck back to an earlier versionADestructiveInspect
Serve an earlier version of a deck again, to everyone who opens it, at once. Use it to undo a bad publish, taking the number from list_versions; use update_deck instead for settings such as title or visibility. Needs decks:write (60 changes a minute). Nothing is deleted: the old content is republished as a NEW version (origin rollback), so each call adds a version and a rollback is undone by another rollback_deck to the version you left.
Inputs: deck (required), version (required). Returns: url, deck, version, previous, +1 more
start_quick_editStart a quick edit of a deckAIdempotentInspect
Open a deck for editing in the web builder: returns the draft already editing it, or one made now from the live version (created says which), and the builder link to give the person, who makes the edits there. Use it for a small content change to a published deck once get_deck_sync says quickEdit: ready; use publish_deck instead to publish a project from the CLI, and publish_draft afterwards to make the edits live. Needs decks:write (60 changes a minute). Changes nothing that viewers see, and calling it again reuses the draft, never resets it. Refused, with the reason, when the deck can't be quick-edited or the plan's builder allowance is used up.
Inputs: deck (required). Returns: rev, draft, builder, created, +1 more
update_deckChange a deck's settingsAIdempotentInspect
Change a deck's title, visibility, passcodes or showcase listing — only the fields you pass change — and return the deck as saved. Use it to control who can open an already published deck; it never changes slide content (start_quick_edit, or the CLI via publish_deck) or the version served (rollback_deck). Needs decks:write (60 changes a minute); applies to new visitors at once and is undone by calling it again, though passcodes are stored only as hashes and can't be read back. Refused, with the reason, when the plan doesn't include private decks, passcode visibility has no viewing passcode, or the showcase is asked for on a non-public deck.
Inputs: deck (required), title, showcase, visibility, +3 more. Returns: id, slug, urls, title, +8 more
whoamiWho am I connected asARead-onlyIdempotentInspect
Report who this connection acts for: the person, the one workspace they approved (handle, plan, role), the permissions granted, and the plan's limits beside current usage. Call it first in a session — to learn the workspace handle the CLI publishes to, whether write tools will work (decks:write in permissions), and what the plan allows (storage, versions kept, private decks, live audience size, analytics); use list_decks for the decks themselves. Read-only, no arguments. If the person was removed from the workspace or it was deleted, every tool fails with a message to reconnect.
Inputs: no named parameters. Returns: user, usage, dashboard, workspace, +1 more
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
Related MCP Connectors
List, share, upload, and manage Slideless HTML presentations from any MCP host.
Publishes what an AI made — a page, a markdown or PDF doc, or a whole site — to a live HTTPS link. Runs locally over stdio from the @drop2run/mcp npm package, or hosted at https://mcp.dropto.run/mcp for chats that connect by URL.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Build, deploy, and host full-stack web apps from any MCP client. DB, auth, storage, cron included.
Related MCP Servers
- AlicenseAqualityCmaintenanceMCP server for Deckrun — generate presentation PDFs, narrated videos, and audio from Markdown. Built for AI agents and IDEs. Free tier: no API key required — generate PDFs instantly. Paid tier: set DECKRUN_API_KEY to unlock video, audio, and account tools.22MIT
- AlicenseNot gradedqualityDmaintenanceLocal-first MCP server & CLI for authoring Bento decks (single-file PPT) with AI agents and live browser preview. Enables programmatic creation, editing, validation, and presentation of Bento HTML decks.26 npm1MIT
- AlicenseNot gradedqualityBmaintenanceEnables MCP-compatible agents to generate, edit, export, and preview AI slide decks through tool calls. Supports deck generation from topics or reference material, per-slide and deck-wide edits, and HTML export.2MIT
- AlicenseNot gradedqualityCmaintenanceA remote MCP server that lets a coding agent turn a plain-language idea into a real, shareable product — creating the project and data model, serving live API endpoints, deploying custom endpoints and server-side functions, and reading request and function logs. It handles sign-up, OAuth-backed access, and OpenAPI spec generation so people can open, sign into, and use the app the agent builds.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.