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

# MCP server

> Connect AI coding agents to your Navattic workspace using the Model Context Protocol.

The Navattic MCP server gives AI coding agents — such as Claude Desktop, Cursor, VS Code Copilot, Windsurf, ChatGPT, and Codex — structured access to your workspace. Agents can read analytics, browse and build demos, manage Launchpad share links, and query personalization data, all scoped to your workspace.

<Frame>
  <img src="https://mintcdn.com/navattic-app/qyCBIgYm7Ylt8Sto/images/product_updates_may_2.png?fit=max&auto=format&n=qyCBIgYm7Ylt8Sto&q=85&s=ae9b69b1e56534e5350d91152ee17361" alt="Navattic MCP server connected to an AI coding agent" width="2400" height="1252" data-path="images/product_updates_may_2.png" />
</Frame>

<Note>
  The MCP server is available on the Base plan and above.
</Note>

## How it works

The Navattic MCP server supports two authentication methods depending on your AI client:

* **OAuth** (Claude Desktop, Claude Code, ChatGPT) — sign in to Navattic when prompted. No Personal Access Token required.
* **Bearer token** (Cursor, VS Code, Windsurf, Codex) — create a Personal Access Token and add it to your client's config file.

All operations are scoped to your workspace — agents cannot access data from other workspaces, even with a valid resource ID from another workspace.

<Tip>
  Go to **Settings** > **AI** > **MCP** in your workspace to find your MCP server URL and the full setup guide for every client in one place.
</Tip>

## Step 1: Create a Personal Access Token (bearer token clients only)

If you're using Cursor, VS Code, or Windsurf, you need a Personal Access Token. Skip this step if you're using Claude Desktop, Claude Code, or ChatGPT.

<Steps>
  <Step title="Go to MCP settings">
    Navigate to **Settings** > **AI** > **MCP** in your Navattic workspace.
  </Step>

  <Step title="Create a new token">
    Click **Manage personal access tokens**, then click **Create token**. Enter a name for the token (for example, "Cursor agent").
  </Step>

  <Step title="Select scopes">
    Choose the scopes your agent needs. Each scope grants access to a specific set of tools:

    | Scope               | What it allows                                                                      | Required role                               |
    | ------------------- | ----------------------------------------------------------------------------------- | ------------------------------------------- |
    | **Analytics**       | View demo performance, visitor data, and account engagement                         | Viewer or above                             |
    | **Demo Browsing**   | Browse projects, flows, and share links                                             | Viewer or above                             |
    | **Demo Building**   | Create flows, edit steps, configure CTAs                                            | Builder or above                            |
    | **Demo Management** | Rename and organize projects; create share links                                    | Builder or above                            |
    | **Demo Publishing** | Deploy and archive projects                                                         | Builder or above                            |
    | **Personalization** | View custom properties and visitor activity                                         | Viewer or above                             |
    | **Launchpad**       | Browse and manage Launchpad share links, interest flows, and recipient visitor data | Viewer or above (Launchpad workspaces only) |

    <Note>
      The **Launchpad** scope is only available in workspaces with Launchpad enabled and is only shown to users with the Launchpad app role. The scope picker will not display it otherwise.
    </Note>

    <Tip>
      Start with Analytics and Demo Browsing — these cover read-only operations. Add write scopes only if your agent needs to create or modify demos.
    </Tip>
  </Step>

  <Step title="Set an expiration">
    Choose a token lifetime: 7, 30, 60, 90, or 180 days. Tokens expire automatically; you'll need to create a new token when one expires.
  </Step>

  <Step title="Copy the token">
    After creating the token, copy it immediately. You won't be able to see it again.

    <Warning>
      Store your token securely. Anyone with the token can access your workspace within the granted scopes.
    </Warning>
  </Step>
</Steps>

## Step 2: Configure your MCP client

Connect your AI agent using the Navattic MCP server URL:

```
https://app.navattic.com/api/mcp
```

You can copy this URL from **Settings** > **AI** > **MCP** in your workspace. Use the instructions below for your client:

<Tabs>
  <Tab title="ChatGPT">
    ChatGPT uses OAuth — no Personal Access Token needed.

    <Steps>
      <Step title="Open ChatGPT settings">
        Open ChatGPT on the web → your profile → **Settings** → **Connectors**.
      </Step>

      <Step title="Enable developer mode">
        Open **Advanced** and enable **Developer mode**.
      </Step>

      <Step title="Create a connector">
        Go to **Connectors** → **Create**.
      </Step>

      <Step title="Add the Navattic MCP URL">
        Enter a name, choose **OAuth**, and paste the Navattic MCP URL: `https://app.navattic.com/api/mcp`.
      </Step>

      <Step title="Authorize">
        Click **Create**, then sign in to Navattic when prompted.
      </Step>
    </Steps>
  </Tab>

  <Tab title="Claude Desktop">
    Claude Desktop uses OAuth — no Personal Access Token needed.

    <Steps>
      <Step title="Open Claude Desktop settings">
        In Claude Desktop, go to **Settings** → **Connectors**.
      </Step>

      <Step title="Add a custom connector">
        Click **+ Add custom connector**.
      </Step>

      <Step title="Enter the Navattic MCP URL">
        Paste `https://app.navattic.com/api/mcp` and click **Add**.
      </Step>

      <Step title="Authorize the connection">
        Claude Desktop will open a Navattic authorization page. Sign in and grant access.
      </Step>
    </Steps>

    <Accordion title="Alternative: edit the config file manually">
      If you prefer to configure Claude Desktop by editing the config file directly, add the following to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS):

      ```json theme={null}
      {
        "mcpServers": {
          "navattic": {
            "url": "https://app.navattic.com/api/mcp",
            "headers": {
              "Authorization": "Bearer YOUR_TOKEN"
            }
          }
        }
      }
      ```

      Replace `YOUR_TOKEN` with the Personal Access Token you created in Step 1. Restart Claude Desktop after saving.
    </Accordion>
  </Tab>

  <Tab title="Claude Code">
    Claude Code uses OAuth. Run this command in your terminal:

    ```bash theme={null}
    claude mcp add --transport http navattic https://app.navattic.com/api/mcp
    ```

    Then run `/mcp` in your Claude Code session and select **navattic** to authenticate.

    <Accordion title="Alternative: add to settings.json manually">
      Add to `~/.claude/settings.json`:

      ```json theme={null}
      {
        "mcpServers": {
          "navattic": {
            "type": "url",
            "url": "https://app.navattic.com/api/mcp",
            "headers": {
              "Authorization": "Bearer YOUR_TOKEN"
            }
          }
        }
      }
      ```

      Replace `YOUR_TOKEN` with the Personal Access Token you created in Step 1.
    </Accordion>
  </Tab>

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

    ```toml theme={null}
    [mcp_servers.navattic]
    url = "https://app.navattic.com/api/mcp"
    bearer_token_env_var = "NAVATTIC_TOKEN"
    ```

    Then set the environment variable in your shell (or add it to your shell profile):

    ```bash theme={null}
    export NAVATTIC_TOKEN=your_token_here
    ```

    Replace `your_token_here` with the Personal Access Token you created in Step 1.
  </Tab>

  <Tab title="Cursor">
    Add to `~/.cursor/mcp.json`:

    ```json theme={null}
    {
      "mcpServers": {
        "navattic": {
          "url": "https://app.navattic.com/api/mcp",
          "headers": {
            "Authorization": "Bearer YOUR_TOKEN"
          }
        }
      }
    }
    ```

    Replace `YOUR_TOKEN` with the Personal Access Token you created in Step 1.
  </Tab>

  <Tab title="VS Code">
    Add to your VS Code settings (the `mcp` section):

    ```json theme={null}
    {
      "servers": {
        "navattic": {
          "type": "http",
          "url": "https://app.navattic.com/api/mcp",
          "headers": {
            "Authorization": "Bearer YOUR_TOKEN"
          }
        }
      }
    }
    ```

    Replace `YOUR_TOKEN` with the Personal Access Token you created in Step 1.
  </Tab>

  <Tab title="Windsurf">
    Add to `~/.codeium/windsurf/mcp_config.json`:

    ```json theme={null}
    {
      "mcpServers": {
        "navattic": {
          "serverUrl": "https://app.navattic.com/api/mcp",
          "headers": {
            "Authorization": "Bearer YOUR_TOKEN"
          }
        }
      }
    }
    ```

    Replace `YOUR_TOKEN` with the Personal Access Token you created in Step 1.
  </Tab>
</Tabs>

## Available tools

Once connected, your agent can see and call tools based on its token's scopes. Tools are only visible to the agent if the token has the corresponding scope — the agent won't see tools it can't use.

| Tool                                | Description                                                                                                                                                          | Scope           |
| ----------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------- |
| `list_demo_analytics`               | View engagement metrics for all active demos — views, visitors, engaged sessions, duration, CTA clicks, and click-through rate                                       | Analytics       |
| `list_visitors`                     | List visitors who have interacted with demos, with filtering by demo, company, location, device, and custom properties                                               | Analytics       |
| `list_accounts`                     | List company accounts with engagement metrics, with firmographic filtering by industry, employee count, revenue, and more                                            | Analytics       |
| `get_visitor`                       | Get a detailed profile for a specific visitor, including their 25 most recent sessions, conversion events, and demos viewed                                          | Analytics       |
| `get_account`                       | Get a detailed profile for a specific company account, including visitors, demos viewed, and total engagement duration                                               | Analytics       |
| `list_projects`                     | List all projects in the workspace                                                                                                                                   | Demo Browsing   |
| `get_project`                       | Get details and flows for a specific project. Note: no longer returns Launchpad or archived share links — use `get_share_link` or `get_launchpad_share_link` instead | Demo Browsing   |
| `get_share_link`                    | Get details for a specific project share link by ID                                                                                                                  | Demo Browsing   |
| `get_flow_document`                 | Read a flow's draft document — returns each step with its index, id, buttons, beacons, triggers, and an entity\_tag used to safely apply edits                       | Demo Browsing   |
| `list_flow_captures`                | List the captures available to anchor new or edited steps in a flow                                                                                                  | Demo Browsing   |
| `get_workspace_knowledge`           | Get the workspace's product context, go-to-market context, and brand voice                                                                                           | Demo Browsing   |
| `create_flow`                       | Create a new flow within a project                                                                                                                                   | Demo Building   |
| `update_step_content`               | Update the text content displayed in a step                                                                                                                          | Demo Building   |
| `rename_step`                       | Change the name of a step                                                                                                                                            | Demo Building   |
| `insert_step`                       | Insert a new step at a specific position in the flow                                                                                                                 | Demo Building   |
| `remove_step`                       | Delete a step from the flow                                                                                                                                          | Demo Building   |
| `move_step`                         | Reorder a step by moving it from one position to another                                                                                                             | Demo Building   |
| `set_step_appearance`               | Set the visual style of a step (modal or tooltip)                                                                                                                    | Demo Building   |
| `set_step_backdrop`                 | Toggle the backdrop overlay on a step                                                                                                                                | Demo Building   |
| `set_step_backdrop_style`           | Set the backdrop intensity (light, medium, or heavy)                                                                                                                 | Demo Building   |
| `set_step_modal_position`           | Set the position of a modal step                                                                                                                                     | Demo Building   |
| `set_step_tooltip_position`         | Set the position of a tooltip step                                                                                                                                   | Demo Building   |
| `update_button_text`                | Change the text on an existing button                                                                                                                                | Demo Building   |
| `set_button_appearance`             | Set the visual style of a button                                                                                                                                     | Demo Building   |
| `reorder_buttons`                   | Reorder buttons within a step                                                                                                                                        | Demo Building   |
| `append_dialog_button`              | Add a new button to a step                                                                                                                                           | Demo Building   |
| `delete_step_button`                | Remove a button from a step                                                                                                                                          | Demo Building   |
| `set_button_action_type`            | Set the action type for a button (next step, URL, etc.)                                                                                                              | Demo Building   |
| `set_button_action_go_to_step`      | Configure a button to navigate to a specific step                                                                                                                    | Demo Building   |
| `set_button_action_url`             | Configure a button to open a URL                                                                                                                                     | Demo Building   |
| `set_button_new_tab`                | Set whether a button's URL opens in a new tab                                                                                                                        | Demo Building   |
| `set_nav_button_text`               | Update the text on the Next or Back navigation button                                                                                                                | Demo Building   |
| `set_hide_navigation`               | Show or hide the navigation bar on a step                                                                                                                            | Demo Building   |
| `set_back_button`                   | Show or hide the back button on a step                                                                                                                               | Demo Building   |
| `set_next_button`                   | Show or hide the next button on a step                                                                                                                               | Demo Building   |
| `set_has_navigation_buttons_global` | Set navigation button visibility across all steps in a flow                                                                                                          | Demo Building   |
| `append_beacon`                     | Add a beacon highlight to a step                                                                                                                                     | Demo Building   |
| `delete_beacon`                     | Remove a beacon from a step                                                                                                                                          | Demo Building   |
| `update_beacon_position`            | Reposition a beacon on a step                                                                                                                                        | Demo Building   |
| `delete_all_beacons`                | Remove all beacons from a step                                                                                                                                       | Demo Building   |
| `append_trigger`                    | Add a click trigger to a step                                                                                                                                        | Demo Building   |
| `delete_trigger`                    | Remove a click trigger from a step                                                                                                                                   | Demo Building   |
| `delete_all_triggers`               | Remove all click triggers from a step                                                                                                                                | Demo Building   |
| `add_video`                         | Add a video to a step                                                                                                                                                | Demo Building   |
| `remove_video`                      | Remove the video from a step                                                                                                                                         | Demo Building   |
| `append_voiceover`                  | Add a voiceover to a step                                                                                                                                            | Demo Building   |
| `update_voiceover_text`             | Update the voiceover script for a step                                                                                                                               | Demo Building   |
| `delete_voiceover`                  | Remove the voiceover from a step                                                                                                                                     | Demo Building   |
| `update_presenter_notes`            | Add or update presenter notes for a step                                                                                                                             | Demo Building   |
| `delete_presenter_notes`            | Remove the presenter notes from a step                                                                                                                               | Demo Building   |
| `update_escape_view_content`        | Update the content shown in the exit/escape view                                                                                                                     | Demo Building   |
| `append_escape_view_button`         | Add a button to the exit view                                                                                                                                        | Demo Building   |
| `delete_escape_view_button`         | Remove a button from the exit view                                                                                                                                   | Demo Building   |
| `set_complete_button`               | Show or hide the completion button in the exit view                                                                                                                  | Demo Building   |
| `set_complete_button_text`          | Set the text on the completion button                                                                                                                                | Demo Building   |
| `set_presenter_mode`                | Enable or disable presenter mode for a flow                                                                                                                          | Demo Building   |
| `set_presenter_notes_feature`       | Enable or disable the presenter notes feature for a flow                                                                                                             | Demo Building   |
| `rename_project`                    | Rename a project                                                                                                                                                     | Demo Management |
| `archive_project`                   | Archive a project (affects live demo URLs)                                                                                                                           | Demo Publishing |
| `list_custom_properties`            | View custom properties configured for personalization                                                                                                                | Personalization |
| `get_launchpad_share_link`          | Get details of a Launchpad 1-1 share link, including recipient and visitor data                                                                                      | Launchpad       |
| `create_launchpad_share_link`       | Create a new 1-1 Launchpad share link for a specific recipient                                                                                                       | Launchpad       |
| `list_launchpad_share_links`        | List all Launchpad 1-1 share links in the workspace, with recipient and engagement data                                                                              | Launchpad       |
| `get_interest_flow`                 | Get a specific Launchpad interest flow by ID                                                                                                                         | Launchpad       |
| `search_interest_flows`             | Search Launchpad interest flows by name or description                                                                                                               | Launchpad       |
| `search_projects`                   | Search projects by name or description                                                                                                                               | Launchpad       |

Your agent also has access to three workspace resources regardless of scopes:

* **Workspace overview** — current project count, member count, and plan type
* **Navattic concepts** — a reference guide to the Navattic data model (projects, flows, steps, share links)
* **Flow editing guide** — explains the read→edit loop, step and button locators, the entity\_tag concurrency token, and how index positions shift after structural changes

<Note>
  When using the flow editing tools, the agent must call `get_flow_document` first to read the current step indices and `entity_tag`. After any structural change — inserting, moving, or removing a step — step indices shift, so the agent re-reads the document before continuing. The `entity_tag` prevents conflicting edits.
</Note>

## Use cases

<AccordionGroup>
  <Accordion title="Analyze demo performance in your coding environment">
    Ask your AI agent questions about demo engagement and visitor behavior. For example: "Which of our demos got the most engagement last quarter?", "Who from Acme Corp has viewed our demos recently?", or "What companies are showing the most interest this month?" The agent uses the analytics tools to query your workspace data and present results directly in your editor.
  </Accordion>

  <Accordion title="Build demos programmatically">
    Use your agent to create new flows within an existing project. Describe the steps you want in natural language and let the agent structure and create them via `create_flow`. This is useful when building many similar demos or automating demo creation as part of a deployment workflow.
  </Accordion>

  <Accordion title="Browse your demo library">
    Ask the agent to list all projects and find specific demos by name or description. The `list_projects` and `get_project` tools give the agent access to your full workspace library, including flow structure and share links.
  </Accordion>

  <Accordion title="Automate demo maintenance">
    Use the agent to rename or archive projects as part of a release workflow. For example, archive old version demos automatically when a new version is deployed.
  </Accordion>

  <Accordion title="Manage Launchpad share links and track engagement (Launchpad)">
    Use the Launchpad tools to automate 1-1 share link creation and track which recipients have visited their demos. For example, ask the agent: "List all share links sent to prospects this week and show which ones have been viewed" using `list_launchpad_share_links` paired with `get_visitor`. You can also use `search_interest_flows` to find the right flow for a prospect before generating a personalized link with `create_launchpad_share_link`.
  </Accordion>

  <Accordion title="Edit a demo using AI">
    Use the Demo Building scope to read and update steps in an existing flow. The agent reads the flow document to get step indices and an entity\_tag, then applies edits — updating text, buttons, beacons, or voiceover — in sequence. After any structural change (inserting, moving, or removing a step), the agent re-reads the document because step indices shift. This makes it straightforward to apply consistent changes across many steps or flows at once.
  </Accordion>
</AccordionGroup>

## Managing tokens

You can view all active tokens from **Settings** > **Workspace** > **Access Tokens**. From there you can:

* See each token's name, scopes, creation date, and expiration
* Revoke a token at any time — revocation takes effect immediately

When a token expires or is revoked, any agent using it will receive authentication errors until you update its configuration with a new token.

## Frequently asked questions

<AccordionGroup>
  <Accordion title="Can I create multiple tokens for different agents?">
    Yes. Create a separate token for each agent or environment, and name them to make revocation easier. For example, "Cursor - local dev" or "VS Code - production".
  </Accordion>

  <Accordion title="What happens if my token is compromised?">
    Revoke the token immediately from **Settings** > **Workspace** > **Access Tokens**. Then create a new token and update your agent configuration. The revoked token stops working as soon as you revoke it.
  </Accordion>

  <Accordion title="Can a Viewer-role user create a token with write scopes?">
    No. The scope picker automatically disables write scopes (Demo Building, Demo Management, Demo Publishing) for users with Viewer-only roles.
  </Accordion>

  <Accordion title="Does the agent see all my workspace data?">
    The agent can only access data within the scopes you selected when creating the token. All data is also restricted to your workspace — the agent cannot access data from other workspaces.
  </Accordion>

  <Accordion title="Why don't I see the Launchpad scope when creating a token?">
    The Launchpad scope is only available to workspaces with Launchpad enabled and only shown to users with the Launchpad app role. If you don't see it, confirm your workspace has Launchpad and that your account has the Launchpad role. Contact your workspace admin if you need access.
  </Accordion>

  <Accordion title="Do I need a Personal Access Token for Claude Desktop or Claude Code?">
    No. Claude Desktop, Claude Code, and ChatGPT authenticate via OAuth — you simply sign in to Navattic when prompted. Personal Access Tokens are only needed for Cursor, VS Code, and Windsurf.
  </Accordion>
</AccordionGroup>
