New: generate on-brand decks from the headless presentation API.Explore the API
Docs
MCP server

MCP server

Let Claude, or any MCP-aware agent, build on-brand decks as a tool call.

What it is

Preso ships a Model Context Protocol server. Point an MCP client at it and your agent can build presentations the same way you can: in your brand, grounded in your projects, spending your credits.

It speaks JSON-RPC over a single HTTP endpoint:

https://www.trypreso.com/api/v1/mcp

Included on Growth and above, and authenticated with the same API key as the REST API. Create one at Dashboard → Developers. The key is bound to a single workspace, so an agent can only ever touch that workspace's decks and brands.

Connect it to Claude

Add it to your MCP client's config. For Claude Desktop or Claude Code:

{
  "mcpServers": {
    "preso": {
      "type": "http",
      "url": "https://www.trypreso.com/api/v1/mcp",
      "headers": {
        "Authorization": "Bearer sk_live_your_key_here"
      }
    }
  }
}

Then just ask:

Build me an investor deck for our seed round, ten slides, confident and visual. Use the Acme brand.

The agent calls list_brands, finds Acme, calls generate_deck, and hands you back a link to open.

The tools

ToolWhat it does
generate_deckBuild a deck from a plain-English description. Takes prompt, and optionally brand_id and project_id. Costs credits.
list_decksThe workspace's decks, most recent first.
get_deckOne deck by id, with every slide: layouts, titles, bullets, notes, theme.
list_brandsThe workspace's brand kits, with their ids, palettes, and fonts.
list_projectsThe workspace's projects, with their instructions, brand, and what is in them.
create_projectCreate a project with standing instructions, so every deck in it follows them.
list_filesThe documents in the workspace, optionally just those in one project.
read_fileThe text of a document, so the agent can see what Preso will read before spending credits.
get_credit_balanceThe credit balance, and roughly how many decks are left in it.

An agent can therefore run the whole loop on its own: read the source document, create a project that remembers the client, and generate a deck grounded in both.

Brands and projects

generate_deck takes the same grounding the app does.

Pass a brand_id and the deck is designed in that brand. Leave it out and, if the workspace has exactly one brand kit, that one is used.

Pass a project_id and the deck inherits the project's standing instructions, its brand, and its files, so an agent building a deck inside a client project already knows the client. This is usually the difference between a generic deck and a useful one.

What it costs

A deck costs roughly 60 credits, about $0.60. Listing and reading are free.

If the workspace runs out, generate_deck returns a tool error saying so, rather than failing silently. Agents retry things; an agent that could quietly drive a balance negative would be an expensive agent. Call get_credit_balance first if you are about to build in bulk.

When it will not work

  • The key is revoked or wrong. HTTP 401, before any tool runs.
  • The plan does not include the API. HTTP 403. The MCP server is on Growth and above.
  • The workspace is paused. HTTP 403 with workspace_locked: a trial ended, or a payment failed. Fix it at Dashboard → Billing and the agent works again immediately.

Why an API key rather than OAuth

MCP's own spec prefers OAuth, and every client can also send a bearer token. A key you can create and revoke from the dashboard in one click is a much smaller thing to get wrong than an OAuth server, and it is revocable the instant an agent misbehaves. If that changes, the transport can change without touching the tools.