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/mcpIncluded 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
| Tool | What it does |
|---|---|
generate_deck | Build a deck from a plain-English description. Takes prompt, and optionally brand_id and project_id. Costs credits. |
list_decks | The workspace's decks, most recent first. |
get_deck | One deck by id, with every slide: layouts, titles, bullets, notes, theme. |
list_brands | The workspace's brand kits, with their ids, palettes, and fonts. |
list_projects | The workspace's projects, with their instructions, brand, and what is in them. |
create_project | Create a project with standing instructions, so every deck in it follows them. |
list_files | The documents in the workspace, optionally just those in one project. |
read_file | The text of a document, so the agent can see what Preso will read before spending credits. |
get_credit_balance | The 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.