Skip to content

Publish from Claude Code, Cursor or Codex

Publish an HTML deck from an AI coding workflow, with workspace access and plan limits.

Lumdeck lets agents publish HTML or ZIP presentations through a remote MCP server or REST API. The hosted MCP endpoint is https://lumdeck.com/api/v1/mcp, using Streamable HTTP with a workspace API key. Browser-based MCP OAuth is not available.

Get ready

Use an existing workspace key, with only the scopes your workflow needs. On Pro and Team, editors can create and revoke their own keys in Settings → API & MCP; owners and admins can manage all workspace keys. Full workspace connection panels and configuration guides are premium features; the public examples below describe how a compatible client can use a key it already has. A workspace invitation does not require a separate payment method for each member.

Keep keys outside your deck, source control and chat messages. Set LUMDECK_API_KEY in your client's private environment or secret manager before starting the client. The examples contain a variable reference, not a usable key.

Claude Code

Run this from your terminal to register Lumdeck in your user configuration. Single quotes preserve the variable reference for Claude Code to resolve when it starts:

Shell
claude mcp add --transport http --scope user lumdeck https://lumdeck.com/api/v1/mcp --header 'Authorization: Bearer ${LUMDECK_API_KEY}'

Then open Claude Code and use /mcp to check the connection. Ask it to list your presentations first. Publishing needs presentations:write; creating a link also needs shares:write.

Cursor

Merge this entry into your user-level ~/.cursor/mcp.json. Cursor must inherit LUMDECK_API_KEY from the environment that launches it. Its ${env:NAME} syntax differs from Claude Code's ${NAME} syntax.

JSON
{
  "mcpServers": {
    "lumdeck": {
      "url": "https://lumdeck.com/api/v1/mcp",
      "headers": {
        "Authorization": "Bearer ${env:LUMDECK_API_KEY}"
      }
    }
  }
}

Check the server in Cursor's MCP settings and review tool approvals before publishing. Other clients must support remote Streamable HTTP and a Bearer authorization header; a client that only supports browser OAuth cannot use this integration.

Publish and check the result

  1. Ask the agent to publish your finished HTML or ZIP using publish_presentation.
  2. Read the validation result. The same upload restrictions apply as in the browser.
  3. Open the returned presentation and test navigation, assets and interactions.
  4. Create the intended share link and verify its protection before sending it.
  5. Use upload_version for later changes so links following the current version keep working.

Free limits allow 2 active keys and 10 API publishes a day; Pro allows 5 and 100; Team allows 25 and 1,000. Storage, size, deck count and trial restrictions still apply. Existing Free keys remain subject to those limits; upgrading unlocks the in-app key management and configuration experience. Keep your originals: version retention is 3 on Free, 20 on Pro and all versions on Team.

Connection errors do not mean a deck was published. Check the endpoint, key scopes and workspace status; 401 means the key is missing or invalid, while 403 can mean insufficient scope or role. Never paste a real key into a support ticket.

Client syntax checked 17 October 2026 against Claude Code's MCP documentation (opens in a new tab) and Cursor's MCP documentation (opens in a new tab). See plan limits, slide events, and the OpenAPI specification.

Last updated: 17 October 2026.

Still stuck?

Write to us. A person reads every message and replies by e-mail.