Skip to main content
Glama

Publish the deck

deck_publish

Builds and publishes an MDX slide deck to its Kadal Deck host with a live room, returning the URL and never signing in on its own.

Instructions

Build the deck and publish it to its Kadal Deck host (deck.kadal.cc by default) with a live room; returns the URL. Uses the login saved by kadal-deck login (or KADAL_DECK_TOKEN). If nobody is signed in it returns what the person must run — it never signs in by itself. The deck's editable source goes too (privately), so it can be quick-edited on the web. If the published deck moved since this folder last synced (a web or agent edit, a publish from another copy, a rollback — or the folder never synced), it does NOT publish: it returns {ok:false, reason:"diverged", head, next} — call deck_pull, settle any conflicts, deck_check, then publish again. Use force:true only when the person explicitly says to replace that version. While conflict markers are left it returns {ok:false, reason:"conflicts"}.

Input Schema

NameRequiredDescriptionDefault
dirNoDeck folder (contains deck.mdx). Absolute, or relative to the server's folder. Default: the server's folder.
slugNoURL slug (default: the folder name).
forceNoReplace edits made on the web since the last sync. Only when the person asks.
titleNo
sourceNofalse: don't upload the editable source (quick edit off; it sticks). true turns it back on.
showcaseNoList the deck in the public showcase (true) or take it out (false); omit to leave it.
workspaceNoWorkspace handle (default: the token's).

Output Schema

NameRequiredDescriptionDefault
okYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changedv0.8.1
    • addedInput schema / properties / force
      Added value: +{
      +  "description": "Replace edits made on the web since the last sync. Only when the person asks.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / showcase
      Added value: +{
      +  "description": "List the deck in the public showcase (true) or take it out (false); omit to leave it.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / source
      Added value: +{
      +  "description": "false: don't upload the editable source (quick edit off; it sticks). true turns it back on.",
      +  "type": "boolean"
      +}
    • removedOutput schema / properties / url
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / version
      Removed value: -{
      -  "type": "number"
      -}
    • changedOutput schema / required
      Previous value: -[
      -  "ok",
      -  "url",
      -  "version"
      -]New value: +[
      +  "ok"
      +]
  2. First observedv0.4.6

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds significant behavioral context beyond the annotations. It clarifies required authentication (local login/token usage), the persistence of editable source data, and detailed failure modes, such as the specific JSON returned during divergence (`{ok:false, reason:"diverged"}`).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

While the tool's complexity necessitates a longer definition, the information is front-loaded and logically structured. The first sentence establishes the primary goal, and subsequent paragraphs methodically cover prerequisites, safety checks, and edge cases in a clear sequence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is highly complete. It covers authentication, the primary happy path, the failure path (divergence/conflicts), and the behavior of specific high-impact flags (`force`). No essential operational details are missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite a high schema coverage (86%), the description provides crucial semantic constraints for key parameters. For instance, it strictly limits the use of `force:true` to explicit user requests and clarifies the consequence of the `source` flag (allowing 'quick-edits' or not).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool's purpose is to 'Build the deck and publish it' to a specific Kadal Deck host. It immediately defines the scope and the resulting artifact (a URL), making it distinct from simple 'create' or 'update' sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides extremely specific usage logic that dictates workflow when using other tools. It explicitly states that if a conflict or divergence exists, the agent MUST call `deck_pull` and `deck_check` before attempting to publish again. This level of procedural guidance is critical.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.