Skip to main content
Glama

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.

Ownership verified
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

A4.2/5.0

Scored across 17 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count4/5

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.

Completeness3/5

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
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 tools
authoring_guideHow to write a Kadal DeckA
Read-onlyIdempotent
Inspect

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 featureA
Read-onlyIdempotent
Inspect

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 deckA
Read-onlyIdempotent
Inspect

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 sourceA
Read-onlyIdempotent
Inspect

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 analyticsA
Read-onlyIdempotent
Inspect

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 stateA
Read-onlyIdempotent
Inspect

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 roomA
Read-only
Inspect

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 decksA
Read-onlyIdempotent
Inspect

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 versionsA
Read-onlyIdempotent
Inspect

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

publish_deckHow to publish a deckA
Read-onlyIdempotent
Inspect

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 versionA
Destructive
Inspect

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 deckA
Idempotent
Inspect

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 settingsA
Idempotent
Inspect

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 asA
Read-onlyIdempotent
Inspect

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

    Related MCP Servers

    • A
      license
      A
      quality
      C
      maintenance
      MCP 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.
      2
      2
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Local-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 npm
      1
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      A 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
    Try in Browser

    Glama MCP Gateway

    Add one secure layer between your agents and this server.