> ## Documentation Index
> Fetch the complete documentation index at: https://docs.trypekto.com/llms.txt
> Use this file to discover all available pages before exploring further.

# MCP setup

> Connect Pekto to Claude, ChatGPT, Codex, Cursor and other AI tools.

The Pekto MCP server lets AI tools that support the [Model Context Protocol](https://modelcontextprotocol.io) create presentations and carousels in your Pekto account, read and edit your projects, and schedule posts.

## Quick reference

* **Server URL:** `https://api.trypekto.com/mcp` (Streamable HTTP)
* **Sign-in:** Sign in with Pekto (OAuth 2.1). Your tool opens it the first time it calls Pekto
* **Credits:** each presentation or carousel uses 2.5 credits from your plan
* **No sign-in support?** Send an [API key](/authentication#api-keys) as `Authorization: Bearer pekto_live_…`

## Installation

<Tabs>
  <Tab title="Claude.ai and Claude Desktop">
    1. Open **Settings → Connectors** and click **Add custom connector**.
    2. Name it `Pekto` and set the remote MCP server URL to `https://api.trypekto.com/mcp`. Click **Add**.
    3. Click **Connect** next to Pekto, sign in, and choose **Allow**.
    4. In a new chat, ask for something: *"Make an 8-slide LinkedIn carousel from this post: …"*

    Connectors you add on claude.ai also appear in Claude Desktop.
  </Tab>

  <Tab title="Claude Code">
    ```bash theme={null}
    claude mcp add --transport http pekto https://api.trypekto.com/mcp
    ```

    Add `--scope user` to use Pekto in every project. Start `claude`, run `/mcp`, pick **pekto** and sign in in the browser window that opens.

    With an API key instead:

    ```bash theme={null}
    claude mcp add --transport http pekto https://api.trypekto.com/mcp \
      --header "Authorization: Bearer $PEKTO_API_KEY"
    ```
  </Tab>

  <Tab title="ChatGPT">
    1. In ChatGPT, open **Settings → Apps & Connectors → Advanced settings** and turn on **Developer mode**.
    2. Create a new app (connector), enter `https://api.trypekto.com/mcp` as the MCP server URL and choose **OAuth** for authentication.
    3. Sign in with Pekto and choose **Allow**.

    ChatGPT shows an inline card with the generation progress, the first slides and an **Open in Pekto** button. Menu names in ChatGPT change from time to time; if they don't match, see OpenAI's guide to connecting MCP servers.
  </Tab>

  <Tab title="Codex">
    Add the server to `~/.codex/config.toml`:

    ```toml theme={null}
    [mcp_servers.pekto]
    url = "https://api.trypekto.com/mcp"
    ```

    Then sign in:

    ```bash theme={null}
    codex mcp login pekto
    ```

    With an API key instead, add `bearer_token_env_var = "PEKTO_API_KEY"` to the same table and skip the login.
  </Tab>

  <Tab title="Cursor">
    Add Pekto to `~/.cursor/mcp.json` (or `.cursor/mcp.json` in a project):

    ```json theme={null}
    {
      "mcpServers": {
        "pekto": { "url": "https://api.trypekto.com/mcp" }
      }
    }
    ```

    Open **Cursor Settings → MCP**, click **Connect** next to pekto and sign in.
  </Tab>

  <Tab title="VS Code">
    Add Pekto to `.vscode/mcp.json`:

    ```json theme={null}
    {
      "servers": {
        "pekto": { "type": "http", "url": "https://api.trypekto.com/mcp" }
      }
    }
    ```

    Start the server from the file's **Start** link and sign in when prompted.
  </Tab>

  <Tab title="Other clients">
    Any MCP client that supports Streamable HTTP can connect to `https://api.trypekto.com/mcp`.

    * Clients with OAuth discover sign-in from `https://api.trypekto.com/.well-known/oauth-protected-resource/mcp` and register themselves.
    * Clients without OAuth can send `Authorization: Bearer pekto_live_…` with a key from **Settings → Developer**.

    The endpoint is stateless and accepts `POST` only.
  </Tab>
</Tabs>

## Using it

Once connected, just ask. The assistant uses Pekto when you mention it or ask for a deck or carousel.

<CodeGroup>
  ```text Carousel from a post theme={null}
  Turn this LinkedIn post into a 10-slide carousel for founders. Keep it punchy.
  <paste the post>
  ```

  ```text Pick a style theme={null}
  Make a 6-slide carousel about remote onboarding in Pekto's Minimal Serif theme.
  ```

  ```text Deck from an article theme={null}
  Make a 12-slide presentation for our sales team from this article: <paste>
  Audience: new account executives. Goal: they can pitch the feature on day one.
  ```

  ```text Your projects theme={null}
  Show my last five Pekto projects and rename the newest one to "Q4 kickoff".
  ```
</CodeGroup>

For the best result, give the assistant the full source text (not just a link), and say who it's for, what it should achieve and the tone. If one of those would change the result a lot and you haven't said it, the assistant asks one short question first.

Pekto generates the whole deck in one call and returns a link to the editable project. It doesn't regenerate to make small changes: open the link and edit, or ask the assistant to change a specific slide.

## Troubleshooting

<AccordionGroup>
  <Accordion title="Sign-in window doesn't open or fails">
    Remove and add the server again, make sure pop-ups are allowed, and sign in to [app.trypekto.com](https://app.trypekto.com) in the same browser first.
  </Accordion>

  <Accordion title="401 or 'Sign in to Pekto'">
    The token is missing or expired. Reconnect the app (or, with an API key, check it hasn't been revoked or expired in Settings → Developer).
  </Accordion>

  <Accordion title="403 insufficient_scope">
    The API key doesn't have the permission the tool needs. Create a key with that scope; see [Scopes](/authentication#scopes).
  </Accordion>

  <Accordion title="402 insufficient_credits">
    You don't have the 2.5 credits a generation needs. Top up or upgrade at [app.trypekto.com/subscription](https://app.trypekto.com/subscription).
  </Accordion>
</AccordionGroup>

More in [Troubleshooting](/troubleshooting) and [Errors](/errors).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.