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

# MCP Server

> Connect the hosted Kolaria MCP server to Claude, Cursor, ChatGPT, and other AI tools with OAuth or an API key, and bring your own MCP servers into Kolaria.

Kolaria runs a hosted MCP server at `https://mcp.kolaria.com/mcp` (streamable HTTP) so AI agents can work with your workspace directly. Connected agents can manage brand identities, generate and edit content, connect integrations, manage schedules, chats and skills, and run the full GEO surface: projects, prompts, competitors, scans, visibility, content briefs, agent readiness, and AI traffic.

This page covers two different things:

* **Kolaria's MCP server**: give an AI client (Claude, Cursor, ChatGPT, Codex, and others) access to Kolaria.
* **External MCP servers**: give Kolaria's chat agent access to your own tools by connecting servers under **Integrations > MCP Servers**.

## Authentication

The server accepts bearer credentials in the `Authorization` header. Two kinds work: an OAuth access token, or a Kolaria API key.

<Tabs>
  <Tab title="OAuth (recommended for interactive clients)">
    Use OAuth when a person is in the loop: Claude, Cursor, ChatGPT connectors, and any client that supports OAuth discovery. You add the server URL, the client opens a browser, you sign in to Kolaria and pick an organization, and the client stores the token.

    Clients discover everything from the protected resource metadata:

    ```text theme={null}
    https://mcp.kolaria.com/.well-known/oauth-protected-resource
    ```

    That document lists the authorization server (`https://oauth.kolaria.com`), the supported scopes, and the bearer method. The authorization server supports dynamic client registration, the authorization code flow with PKCE, and refresh tokens. The API mirrors the same metadata at `https://api.kolaria.com/.well-known/oauth-protected-resource` and `https://api.kolaria.com/.well-known/oauth-authorization-server`.

    An OAuth session acts as you, inside the organization you chose at sign-in, with the scopes granted on the consent screen. The scopes a client can request are:

    ```text theme={null}
    offline_access
    posts.read posts.write
    brand-identities.read brand-identities.write
    integrations.read integrations.write
    schedules.read schedules.write
    event-triggers.read event-triggers.write
    chats.read chats.write
    skills.read skills.write
    ```

    <Note>
      Access tokens are short-lived. Clients should include `offline_access` in the requested scope so they receive a refresh token; without it the connection drops when the access token expires and you have to sign in again.
    </Note>
  </Tab>

  <Tab title="API key (headless and CI)">
    Clients that do not support OAuth discovery, and unattended agents, can send a Kolaria API key instead:

    ```text theme={null}
    Authorization: Bearer klra_xxx
    ```

    A key carries exactly the scopes you picked when you created it, and it is bound to one organization. Create and manage keys under **API Keys** in the dashboard; see [Authentication](/api/authentication).

    <img src="https://mintcdn.com/zev-labs-10ea8e95/BbyXF_Nxq3zdoAyM/images/api/api-keys-light.webp?fit=max&auto=format&n=BbyXF_Nxq3zdoAyM&q=85&s=df3ac6cab021ffb2220c1b4e25a8b950" alt="Create an API key with read and write permissions for MCP" className="block dark:hidden" width="2284" height="1518" data-path="images/api/api-keys-light.webp" />

    <img src="https://mintcdn.com/zev-labs-10ea8e95/BbyXF_Nxq3zdoAyM/images/api/api-keys-dark.webp?fit=max&auto=format&n=BbyXF_Nxq3zdoAyM&q=85&s=679323274a1bfe521f214ef3908971ee" alt="Create an API key with read and write permissions for MCP" className="hidden dark:block" width="2284" height="1518" data-path="images/api/api-keys-dark.webp" />

    <Tip>
      Grant read and write access for the resources the client should manage. GEO tools need the GEO scopes (projects, GEO settings, prompts, competitors, scans, visibility, content briefs, agent readiness, AI traffic) and a plan that includes GEO.
    </Tip>
  </Tab>
</Tabs>

## Connect an AI client

### With OAuth

Add the server URL without any headers. The client detects the OAuth metadata and opens the sign-in flow.

<CodeGroup>
  ```bash Claude Code theme={null}
  claude mcp add --transport http kolaria https://mcp.kolaria.com/mcp
  ```

  ```json mcp.json (Cursor) theme={null}
  "kolaria": {
    "url": "https://mcp.kolaria.com/mcp"
  }
  ```

  ```json opencode.json theme={null}
  "kolaria": {
    "type": "remote",
    "url": "https://mcp.kolaria.com/mcp",
    "enabled": true
  }
  ```
</CodeGroup>

In ChatGPT, add a custom connector with the URL `https://mcp.kolaria.com/mcp` and complete the sign-in when prompted.

### With an API key

If your client supports [`add-mcp`](https://www.npmjs.com/package/add-mcp), install the server with a header override:

```bash theme={null}
npx add-mcp https://mcp.kolaria.com/mcp --header "Authorization: Bearer $KOLARIA_API_KEY"
```

Or add the header to the client config by hand:

<CodeGroup>
  ```json opencode.json theme={null}
  "kolaria": {
    "type": "remote",
    "url": "https://mcp.kolaria.com/mcp",
    "enabled": true,
    "headers": {
      "Authorization": "Bearer YOUR_API_KEY"
    }
  }
  ```

  ```json mcp.json (Cursor) theme={null}
  "kolaria": {
    "url": "https://mcp.kolaria.com/mcp",
    "headers": {
      "Authorization": "Bearer YOUR_API_KEY"
    }
  }
  ```

  ```json claude.json theme={null}
  "kolaria": {
    "type": "http",
    "url": "https://mcp.kolaria.com/mcp",
    "headers": {
      "Authorization": "Bearer YOUR_API_KEY"
    }
  }
  ```
</CodeGroup>

### Local stdio server

The same server is published on npm as [`@kolaria/mcp`](https://www.npmjs.com/package/@kolaria/mcp) for clients that only speak stdio. It needs Node.js 20 or newer and an API key in `KOLARIA_API_KEY`:

```bash theme={null}
claude mcp add kolaria -- npx -y @kolaria/mcp
```

The hosted server is updated first; the npm package can lag behind it, so prefer the hosted URL when your client supports remote servers.

## Available tools

Tool names are exactly as the server registers them; some clients prefix them with the server name.

**Posts**

* `list_posts`
* `get_post`
* `update_post`
* `delete_post`
* `generate_post`
* `get_post_generation_status`

**Brand identities**

* `list_brand_identities`
* `get_brand_identity`
* `update_brand_identity`
* `delete_brand_identity`
* `generate_brand_identity`
* `get_brand_identity_generation_status`

**Integrations**

* `list_integrations`
* `create_github_integration`
* `delete_integration`

**Schedules**

* `list_schedules`
* `create_schedule`
* `update_schedule`
* `delete_schedule`

**Chats**

* `list_chats`
* `get_chat`
* `get_chat_by_external_channel`
* `create_chat`
* `post_chat_message`

**Skills**

* `list_skills`
* `get_skill`
* `create_skill`
* `update_skill`
* `delete_skill`

**GEO projects and settings**

* `list_projects`
* `get_project`
* `create_project`
* `update_project`
* `delete_project`
* `get_geo_settings`
* `update_geo_settings`

**GEO prompts and sequences**

* `list_geo_prompts`
* `create_geo_prompt`
* `update_geo_prompt`
* `delete_geo_prompt`
* `import_geo_prompts`
* `list_geo_sequences`
* `create_geo_sequence`
* `update_geo_sequence`
* `delete_geo_sequence`
* `run_geo_sequence`

**GEO competitors**

* `list_geo_competitors`
* `upsert_geo_competitor`
* `suggest_geo_competitors`
* `delete_geo_competitor`
* `import_geo_competitors`

**GEO scans and visibility**

* `create_geo_scan`
* `list_geo_scans`
* `get_geo_scan`
* `get_geo_visibility_overview`
* `get_geo_visibility_timeseries`
* `get_geo_prompt_results`
* `get_geo_competitor_share`
* `get_geo_language_share`
* `get_geo_competitor_detail`

**GEO content gaps and briefs**

* `list_geo_content_gaps`
* `list_geo_content_briefs`
* `plan_geo_content_brief`
* `get_geo_content_brief`
* `approve_geo_content_brief`

**Agent readiness**

* `get_geo_agent_readiness`
* `start_geo_agent_readiness_scan`

**AI traffic**

* `get_geo_traffic_overview`
* `get_geo_traffic_log`
* `list_geo_traffic_journeys`
* `get_geo_traffic_journey`
* `list_geo_traffic_pages`
* `get_geo_ingest_setup`
* `issue_geo_ingest_token`
* `rotate_geo_ingest_token`

**Feedback**

* `submit_feedback` sends a bug report, feature request, question, or praise to the Kolaria team. It needs no credentials. See [Agent feedback](/api/agent-feedback).

<Warning>
  `create_geo_scan`, `run_geo_sequence`, and `plan_geo_content_brief` use billed AI credits and can take minutes. The server instructs agents to confirm with you before starting them.
</Warning>

## Connect external MCP servers to Kolaria

This is the reverse direction: Kolaria's chat agent can use tools from MCP servers you run or subscribe to. Open **Integrations > MCP Servers** in the dashboard (or press `C` on that page) and add a server.

<Steps>
  <Step title="Describe the server">
    Give it a name, the server URL (for example `mcp.example.com/mcp`), and a short description of what tools or context Kolaria should use it for. The description helps the agent decide when to reach for the server.
  </Step>

  <Step title="Choose authentication">
    Pick one of three options:

    * **None** for public servers without credentials.
    * **API key** to send one or more custom headers, such as `Authorization: Bearer ...`.
    * **OAuth** to sign in with the server's own OAuth flow. Kolaria opens the authorization page in a popup.
  </Step>

  <Step title="Test and save">
    Kolaria tests the connection before saving and reports whether it could reach the server. With OAuth, the button reads **Connect & Authorize** and the server is saved once authorization completes.
  </Step>
</Steps>

After saving, Kolaria indexes the server's tools and shows the tool count on the server card. From the card you can refresh the tool index, enable or disable the server, reauthorize an expired OAuth grant, or delete it. Indexed tools are available to the Kolaria chat agent, which searches the index and activates the tools it needs for a conversation.

## Composio

If you want to use the Kolaria MCP server through [Composio](https://composio.dev/), upvote the request at [request.composio.dev/boards/tool-requests/posts/kolaria](https://request.composio.dev/boards/tool-requests/posts/kolaria). That helps the Composio team see demand for a Kolaria integration.

## Notes

* Prefer OAuth for personal clients so tokens rotate and can be revoked per session.
* Keep API keys in a server-side or local secret store; do not commit MCP config files that contain live bearer tokens.
* Revoke and replace a key immediately if it is exposed.
