Agents & MCP
The Prezent Platform API ships with a first-class Model Context Protocol (MCP) server, so AI agents can create and convert presentations as a tool call instead of writing custom HTTP code. Two ways to use it:
- Hosted remote MCP at
https://mcp.myprezent.com/mcp— OAuth 2.1, no install needed; works with Claude.ai Custom Connectors. - Local stdio server via
pip install prezent-mcp-server— drop a config snippet into Claude Desktop, Cursor, Cline, Continue, or Zed and the tools appear in your agent's tool list.
The same tools (presentation creation, poster creation, status, download, template conversion, theme discovery, feedback) are exposed in both modes. The MCP server wraps the documented REST API — anything you can do through the API, an agent can do through MCP.
Distributed as the prezent-mcp-server package (see SDKs &
Client Libraries for
install).
Quick start — hosted MCP (Claude.ai)
The fastest path. Zero install.
- In Claude.ai, open Settings → Custom Connectors → Add custom connector.
- MCP server URL:
https://mcp.myprezent.com/mcp - Click Connect. Claude.ai redirects through Prezent's OAuth login — sign in with your Prezent account.
- The Prezent tools (
create_presentation,convert_template, etc.) are now available in any Claude.ai chat.
That's it — your Prezent API key is fetched server-side from your Prezent account, so you don't paste it into Claude.
Quick start — local stdio (Claude Desktop / Cursor / Cline / Continue / Zed)
For locally-running agents and IDE integrations.
1. Install the server
pip install prezent-mcp-server
Requires Python 3.10+.
2. Get a Prezent API key
Contact your Customer Success Manager. The key is a Bearer token of the
form pzbk_.... Set it as an environment variable.
3. Add the server to your agent's MCP config
- Claude Desktop
- Cursor
- Cline / Continue
- Zed
Edit ~/Library/Application Support/Claude/claude_desktop_config.json
(macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"prezent": {
"command": "prezent-mcp-server",
"env": {
"PRESENTATION_API_TOKEN": "pzbk_your_key_here"
}
}
}
}
Restart Claude Desktop. The Prezent tools appear under the 🔌 plug icon in the chat input.
In Cursor, open Settings → Features → Model Context Protocol → Add new MCP server:
{
"mcpServers": {
"prezent": {
"command": "prezent-mcp-server",
"env": {
"PRESENTATION_API_TOKEN": "pzbk_your_key_here"
}
}
}
}
In your cline_mcp_settings.json (or Continue's ~/.continue/config.json
mcpServers section):
{
"mcpServers": {
"prezent": {
"command": "prezent-mcp-server",
"env": {
"PRESENTATION_API_TOKEN": "pzbk_your_key_here"
}
}
}
}
In Zed's settings.json, under context_servers:
{
"context_servers": {
"prezent": {
"command": {
"path": "prezent-mcp-server",
"args": [],
"env": {
"PRESENTATION_API_TOKEN": "pzbk_your_key_here"
}
},
"settings": {}
}
}
}
4. Verify
In a fresh chat, ask the agent:
"Which Prezent templates can I use?"
The agent should invoke get_accessible_templates and return your
company's themes.
Available tools
All tools target the Prezent Platform API. Async tools (presentation,
poster, template-conversion) return a callback_id that the agent
resolves via the matching check_*_status tool.
Presentation and template tools
| Tool | Purpose | Sync / Async |
|---|---|---|
create_presentation | Start a presentation generation job. Accepts a prompt, optional template id, files / web links / historical context. Returns a callback_id. | Async |
check_presentation_status | Poll the status of a create_presentation job. Returns slides, extracted images, theme/audience metadata when complete. | Sync |
download_presentation_tool | Download the final .pptx (or .pdf) for a completed presentation. | Sync |
send_reaction_feedback | Like/dislike a generated presentation. | Sync |
send_text_feedback | Submit free-text feedback on a presentation. | Sync |
convert_template | Start a Template Converter job that applies a target brand template to an uploaded deck. Returns a callback_id. | Async |
check_template_converter_status | Poll a Template Converter job. | Sync |
send_template_converter_reaction_feedback | Like/dislike a conversion. | Sync |
send_template_converter_text_feedback | Submit free-text feedback on a conversion. | Sync |
get_accessible_templates | List the brand templates / themes the caller's company has access to. | Sync |
validate_template | Verify that a specific template id is accessible before kicking off a generation or conversion. | Sync |
Poster tools
Posters have their own create/edit/status/download tools, wrapping the Posters API. A poster is a single canvas, not a deck — so ask the agent for a poster explicitly, otherwise it will build a presentation.
| Tool | Purpose | Sync / Async |
|---|---|---|
create_poster | Start a poster generation job from a prompt. Accepts orientation, page size, template, language, export format, citation style, and grounding content (files / web links / text). Returns a callback_id. | Async |
edit_poster | Revise an existing poster from a plain-language instruction — content, layout, styling, or its template. Returns a new callback_id. | Async |
check_poster_status | Wait for a poster (or edit) to finish and return the download_url. Streams live progress to the agent while it waits. | Sync (blocking) |
download_poster | Get the download URL for a finished poster, optionally re-exported to a different format (pptx, pdf, png, jpg) without regenerating. | Sync |
The agent-facing flow is:
create_poster ──► check_poster_status ──► download_url
▲ │
edit_poster ─────────┘ (new callback_id) │
▼
download_poster (different file format)
Three rules an agent should follow, and which the tool descriptions enforce:
- Every follow-up change is an
edit_postercall, including switching the template ("use the corporate 2026 template"). Re-runningcreate_posterdiscards the existing poster and rebuilds from scratch. edit_postertakes no settings arguments — the entire request goes inprompt, in plain language. That is a deliberate mirror of the REST endpoint, which reuses the poster's stored configuration. See What an edit can change.- A different file format is not an edit. Use
download_posterwithexport_type— it re-exports the same canvas and is far cheaper than regenerating.
Poster tools reuse the shared file-upload, template, language, and
integration tools listed above — a file_id from validate_uploaded_file
works in either flow, and get_accessible_templates is the same
catalogue posters draw from.
Each tool is wired to the equivalent REST endpoint documented in the interactive API Reference — same response envelope, same error catalog, same rate limits, same annual usage quotas.
Authentication
The hosted MCP server (mcp.myprezent.com) and the local stdio server
authenticate the same calls differently:
| Mode | Flow |
|---|---|
| Hosted | OAuth 2.1 authorisation code + PKCE. Claude.ai redirects to Prezent's Cognito-backed login, gets an access token (Cognito id_token), and presents it as Bearer <token> on every /mcp call. The remote-server middleware exchanges that for the user's Prezent API key behind the scenes — the API key never leaves Prezent infrastructure. |
| Local stdio | Bearer token from the PRESENTATION_API_TOKEN environment variable, sent directly on every API call. |
Both modes ultimately hit the same Prezent Platform API endpoints described in this documentation. Auth, rate limits, error codes, and annual quotas behave identically.
Rate limits & quotas
Tool calls count against the same limits as direct API calls:
- Gateway throttle — 10 req/s, 5 burst, 1,000 req/day per key.
- Annual quotas — slide-generation (
create_presentation) and presentation-download (download_presentation_tool) consume the per-key annual quotas (default 50,000 / 1,000,000). - Poster downloads — each
download_postercall is a counted delivery against the key's poster download limit, including a re-export of a poster you already downloaded in another format. - Per-minute throttle — applied per company × category when configured.
See the Developer Guide → Usage quotas and rate limits for the full picture.
Discovery + interop
The hosted server implements the relevant MCP / OAuth interop standards:
- MCP transport: Streamable HTTP at
https://mcp.myprezent.com/mcp(current MCP-spec default; Server-Sent Events for streaming responses). - OAuth 2.1 authorisation server metadata:
GET https://mcp.myprezent.com/.well-known/oauth-authorization-server(RFC 8414). - Protected-resource metadata:
GET https://mcp.myprezent.com/.well-known/oauth-protected-resource(RFC 9728). - Dynamic client registration:
POST https://mcp.myprezent.com/oauth/register(RFC 7591). - Liveness:
GET https://mcp.myprezent.com/healthz.
Most agent clients (Claude.ai, Cursor, Cline) handle this discovery automatically when you give them the MCP server URL.
Package, issues, and roadmap
- Package:
prezent-mcp-serveron PyPI. - Issues / feature requests: contact your Customer Success Manager or Prezent API Support.
- Versioning: the MCP server tracks the OpenAPI contract version
(currently
1.0.0). New tools are additive; tool signatures don't change without a major-version bump.
Where to go next
- The interactive API Reference — every underlying endpoint with try-it-out forms.
- Getting Started — make your first raw HTTP call (useful for debugging what an MCP tool is doing).
- AutoGenerator — full request/response detail
for the presentation-creation flow that
create_presentationwraps. - Posters API — full request/response detail for the
flow the
create_poster/edit_postertools wrap, including the orientation and page-size catalogue. - Template Converter — full
request/response detail for
convert_template.