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

# Connect AI Assistants to LanderLab MCP

> Connect Claude, Cursor, Windsurf, Manus, or any MCP-compatible AI assistant to LanderLab. Manage landers, analytics, leads, and A/B tests using plain English.

## MCP Server

Connect AI assistants to LanderLab via the [Model Context Protocol](https://modelcontextprotocol.io). Manage landing pages, analytics, leads, and A/B tests from Claude, Cursor, Windsurf, Manus, or any MCP-compatible client.

```text theme={null}
https://api.landerlab.dev/api/v2/mcp
```

API key auth · 30+ tools · Works everywhere

## Overview

The LanderLab MCP server gives AI assistants the ability to list landers, pull analytics, publish and unpublish pages, manage leads, run A/B tests, and more on your behalf. Instead of switching between your AI tool and the LanderLab dashboard, your assistant handles it in one conversation.

**Who is this for?** Performance marketers, media buyers, and teams who want to manage their LanderLab account faster. Ask your AI assistant what you need in plain English and it calls the right API for you.

**How it works.** The MCP server exposes tools that your AI assistant can call during a conversation. When you say "list my landers in workspace 1," the assistant calls `landers_list` and returns the results. One server, one API key, and you are ready to go.

***

## Get Your API Key

Before connecting any client, you need an API key.

<Steps>
  <Step title="Open API Keys">
    Log in to [LanderLab](https://app.landerlab.io) and go to **Organization > API Keys**.
  </Step>

  <Step title="Create a new key">
    Click **Create** and copy the key immediately.
  </Step>
</Steps>

<Warning>
  The key is only shown once. If you lose it, create a new one.
</Warning>

Your key starts with `ll_live_` and looks like this:

```text theme={null}
ll_live_2f20699a_e632aa7ad57f532d2d3eca2b67d73930...
```

***

## Quick Connect

## Claude Code

<Steps>
  <Step title="Run the CLI command">
    Open your terminal and run:

    ```bash theme={null}
    claude mcp add --transport http landerlab \
      https://api.landerlab.dev/api/v2/mcp \
      --header "X-API-Key: ll_live_YOUR_KEY_HERE" \
      --header "Content-Type: application/json" \
      --header "Accept: application/json, text/event-stream"
    ```

    Replace `ll_live_YOUR_KEY_HERE` with your actual key.
  </Step>

  <Step title="Verify the connection">
    Type `/mcp` in Claude Code. You should see `landerlab` listed. Try asking "List my workspaces" to confirm.
  </Step>
</Steps>

## Claude Desktop

<Steps>
  <Step title="Open the config file">
    Find your `claude_desktop_config.json`:

    * **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
    * **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
  </Step>

  <Step title="Add the server">
    Add this to the file:

    ```json theme={null}
    {
      "mcpServers": {
        "landerlab": {
          "type": "http",
          "url": "https://api.landerlab.dev/api/v2/mcp",
          "headers": {
            "Content-Type": "application/json",
            "Accept": "application/json, text/event-stream",
            "X-API-Key": "ll_live_YOUR_KEY_HERE"
          }
        }
      }
    }
    ```
  </Step>

  <Step title="Restart Claude Desktop">
    Close and reopen the app. LanderLab tools will be available in your next conversation.
  </Step>
</Steps>

### ChatGPT (Custom GPT / MCP-Compatible Setup)

#### 1. Get your API key

In LanderLab:

* Go to **Organization → API Keys**
* Click **Create**
* Copy the API key immediately

Your key looks like:

```text theme={null}
ll_live_2f20699a_e632aa7ad57f532d2d3eca2b67d73930...
```

#### 2. Configure the MCP server

Use the following MCP endpoint:

```text theme={null}
https://api.landerlab.dev/api/v2/mcp
```

Required headers:

```text theme={null}
{
  "X-API-Key": "ll_live_YOUR_KEY_HERE",
  "Content-Type": "application/json",
  "Accept": "application/json, text/event-stream"
}
```

#### 3. Add it to your ChatGPT MCP client

If your ChatGPT environment supports MCP connections, add this configuration:

```text theme={null}
{
  "mcpServers": {
    "landerlab": {
      "type": "http",
      "url": "https://api.landerlab.dev/api/v2/mcp",
      "headers": {
        "Content-Type": "application/json",
        "Accept": "application/json, text/event-stream",
        "X-API-Key": "ll_live_YOUR_KEY_HERE"
      }
    }
  }
}
```

#### 4. Verify the connection

Once connected, you can use natural language prompts like:

* “List all my landers”
* “Show analytics for my top converting page”
* “Publish lander X”
* “Show all leads from workspace 1”
  ChatGPT will automatically call the appropriate LanderLab MCP tools behind the scenes.

## Cursor

<Steps>
  <Step title="Open the config file">
    Create or edit `.cursor/mcp.json` in your project root.
  </Step>

  <Step title="Add the server">
    ```json theme={null}
    {
      "mcpServers": {
        "landerlab": {
          "type": "http",
          "url": "https://api.landerlab.dev/api/v2/mcp",
          "headers": {
            "Content-Type": "application/json",
            "Accept": "application/json, text/event-stream",
            "X-API-Key": "ll_live_YOUR_KEY_HERE"
          }
        }
      }
    }
    ```
  </Step>

  <Step title="Restart Cursor">
    The LanderLab tools will appear in your next agent session.
  </Step>
</Steps>

## Windsurf

<Steps>
  <Step title="Open MCP settings">
    Go to **Windsurf Settings > MCP** or edit `~/.codeium/windsurf/mcp_config.json`.
  </Step>

  <Step title="Add the server">
    ```json theme={null}
    {
      "mcpServers": {
        "landerlab": {
          "type": "http",
          "url": "https://api.landerlab.dev/api/v2/mcp",
          "headers": {
            "Content-Type": "application/json",
            "Accept": "application/json, text/event-stream",
            "X-API-Key": "ll_live_YOUR_KEY_HERE"
          }
        }
      }
    }
    ```
  </Step>

  <Step title="Restart Windsurf">
    Reopen the editor and the tools will be available.
  </Step>
</Steps>

## Manus

<Steps>
  <Step title="Open MCP settings">
    In Manus, go to **Settings > MCP Servers** (or **Integrations > MCP**) and click **Add Server**.
  </Step>

  <Step title="Configure the server">
    Fill in the connection details:

    * **Name:** `landerlab`
    * **Transport:** `HTTP` (Streamable HTTP)
    * **URL:** `https://api.landerlab.dev/api/v2/mcp`

    Add the following headers:

    | Header         | Value                                 |
    | -------------- | ------------------------------------- |
    | `X-API-Key`    | `ll_live_YOUR_KEY_HERE`               |
    | `Content-Type` | `application/json`                    |
    | `Accept`       | `application/json, text/event-stream` |

    Replace `ll_live_YOUR_KEY_HERE` with your actual key.
  </Step>

  <Step title="Save and verify">
    Save the configuration. In a new Manus task, ask "List my LanderLab workspaces" to confirm the tools are available.
  </Step>
</Steps>

If Manus prefers a JSON-style configuration, use:

```json theme={null}
{
  "mcpServers": {
    "landerlab": {
      "type": "http",
      "url": "https://api.landerlab.dev/api/v2/mcp",
      "headers": {
        "Content-Type": "application/json",
        "Accept": "application/json, text/event-stream",
        "X-API-Key": "ll_live_YOUR_KEY_HERE"
      }
    }
  }
}
```

## ChatGPT

<Steps>
  <Step title="Open MCP settings">
    In ChatGPT, open **Settings > Connectors > MCP Servers** (or the MCP integrations area available in your workspace).
  </Step>

  <Step title="Add the server">
    Configure the MCP server with the following values:

    * **Name:** `landerlab`
    * **Transport:** `HTTP`
    * **URL:** `https://api.landerlab.dev/api/v2/mcp`

    Add these headers:

    | Header         | Value                                 |
    | -------------- | ------------------------------------- |
    | `X-API-Key`    | `ll_live_YOUR_KEY_HERE`               |
    | `Content-Type` | `application/json`                    |
    | `Accept`       | `application/json, text/event-stream` |

    Replace `ll_live_YOUR_KEY_HERE` with your actual key.
  </Step>

  <Step title="Save and verify">
    Save the configuration and start a new chat.

    Try prompts like:

    * "List my LanderLab workspaces"
    * "Show analytics for my top lander"
    * "Publish lander X"

    ChatGPT will automatically call the appropriate MCP tools.
  </Step>
</Steps>

If your ChatGPT environment supports JSON-based MCP configuration, you can also use:

````json theme={null}
{
  "mcpServers": {
    "landerlab": {
      "type": "http",
      "url": "https://api.landerlab.dev/api/v2/mcp",
      "headers": {
        "Content-Type": "application/json",
        "Accept": "application/json, text/event-stream",
        "X-API-Key": "ll_live_YOUR_KEY_HERE"
      }
    }
  }
}

## Other MCP Clients

Any client that supports the MCP HTTP transport can connect. Point it to:

```text
https://api.landerlab.dev/api/v2/mcp
````

Set these headers:

| Header         | Value                                 |
| -------------- | ------------------------------------- |
| `X-API-Key`    | Your `ll_live_...` key                |
| `Content-Type` | `application/json`                    |
| `Accept`       | `application/json, text/event-stream` |

***

## Tools Reference

Your organization is auto-resolved from the API key. No need to pass an organization ID.

### Read-Only

| Tool                  | Description                              |
| --------------------- | ---------------------------------------- |
| `workspaces_list`     | List all workspaces                      |
| `landers_list`        | List landing pages in a workspace        |
| `domains_list`        | List domains in a workspace              |
| `domains_list_global` | List all domains across the organization |
| `integrations_list`   | List configured integrations             |
| `leads_list`          | List leads for a lander                  |
| `leads_list_org`      | List leads across the organization       |
| `variants_list`       | List A/B test variants                   |
| `api_key_list`        | List API keys                            |
| `dashboard_get`       | Get visits, conversions, and leads stats |
| `analytics_graphs`    | Get graph data for a lander              |
| `analytics_stats`     | Get detailed stats for a lander          |
| `analytics_reports`   | Generate reports for a lander            |
| `reporting_get`       | Run multi-lander reporting               |
| `editor_load`         | Load HTML and settings for a variant     |

### Mutations

| Tool                         | Description                         |
| ---------------------------- | ----------------------------------- |
| `lander_publish`             | Publish a landing page              |
| `lander_unpublish`           | Unpublish a landing page            |
| `editor_save`                | Save HTML content for a variant     |
| `editor_save_settings`       | Save variant settings               |
| `variants_set_weights`       | Set A/B test traffic split          |
| `variants_enable`            | Enable a variant                    |
| `variants_disable`           | Disable a variant                   |
| `leads_update`               | Update a lead                       |
| `leads_delete`               | Delete a lead                       |
| `leads_update_org`           | Update a lead (org-level)           |
| `leads_delete_org`           | Delete a lead (org-level)           |
| `lander_integration_enable`  | Enable an integration on a lander   |
| `lander_integration_disable` | Disable an integration on a lander  |
| `lander_integration_delete`  | Remove an integration from a lander |
| `integration_create`         | Create an org-level integration     |
| `api_key_revoke`             | Revoke an API key                   |
| `api_key_update`             | Update an API key                   |

Full schemas and parameters: [API documentation](https://api.landerlab.dev/api/v2/docs)

***

## Authentication

The MCP server uses **API key authentication**. Pass your key in the `X-API-Key` header. The setup instructions above handle this automatically.

Your key is tied to your organization. Every tool call uses it to identify your account and resolve permissions. No OAuth flow, no tokens to refresh.

To revoke a key, go to **Organization > API Keys** in LanderLab or use the `api_key_revoke` tool.

***

## Example Prompts

Once connected, just talk to your AI assistant in plain English:

> **"List all my landers and their status"** Calls `landers_list` and returns page names, URLs, and publish status.

> **"Show me analytics for lander X over the last 7 days"** Calls `analytics_stats` with the date range and returns visits, conversions, and leads.

> **"Unpublish lander X"** Calls `lander_unpublish` to take the page offline.

> **"Set A/B test weights to 70/30 for lander X"** Calls `variants_set_weights` to adjust traffic distribution between variants.

> **"Show me all leads from workspace 1"** Calls `leads_list` and returns lead data for that workspace.

***

## Troubleshooting

**401 Unauthorized** - The API key is missing, invalid, or revoked. Make sure the `X-API-Key` header is set and the key starts with `ll_live_`.

**Not Acceptable** - The `Accept` header must include both `application/json` and `text/event-stream`. The setup instructions from this guide already set this. This error usually shows up when testing with curl or a custom client.

**FORBIDDEN: endpoint not accessible via API key** - That specific tool has not been opened to API key auth yet. Contact [LanderLab support](mailto:support@landerlab.io) for help.

**Server not showing up** - Check that your config file is saved in the right location and the JSON is valid. Restart your AI tool after any config change.
