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

# MCP Server

> Connect Claude, ChatGPT, and other AI apps to your SnowSEO data — ask about your SEO and let AI act on it, in plain English.

Connect your favorite AI app to SnowSEO and work with your SEO just by chatting. Instead of opening the dashboard, you can ask Claude, ChatGPT, or any AI assistant something like *"how are my tracked keywords doing this month?"* and get the answer straight from your SnowSEO account — and, for the actions you switch on, have it do the work too: *"track these five keywords for me."*

## What is the MCP server?

The **Model Context Protocol (MCP)** is an open standard that lets AI apps connect securely to outside services. The SnowSEO MCP server is how your AI app reaches your SnowSEO data — your keywords, rankings, topic clusters, Search Console stats, and more — so you can ask about them in normal conversation instead of switching between apps.

By default the connection is **read-only** — the app can view your data and answer questions, nothing more. You can also switch on specific **actions** per brand (like tracking keywords or managing existing articles) so the assistant can do them for you. You decide exactly what's allowed in **Settings → Integrations → MCP**, and every connected app follows those rules.

## What you can do

Once connected, just ask your AI app to:

* **Check your rankings** — see tracked keywords, what moved up or down, and trends over time
* **Research keywords** — get keyword ideas with search volume, competition, and AI suggestions for your brand
* **Review topic clusters** — see which clusters are gaining visibility and how they're performing
* **Look at your traffic** — Search Console clicks, impressions, CTR, GA4 visitors, and PostHog analytics
* **Review AI visibility** — inspect tracked prompts, model visibility, competitors, citations, and filters
* **Check your content** — article SEO scores, status, and recent team activity
* **Plan content** — get article title ideas, target keywords, outlines, and FAQ prompts for any topic
* **Read your brand setup** — audience, competitors, and brand profile
* **See your whole portfolio** — an org-level rollup of every brand's visibility, rankings, traffic, and open work
* **Review recommended next steps** — the ranked to-do list of what to fix, with how-to detail for each item

### …and take action for you

Switch these on per brand — they're **off by default** — and the assistant can also:

* **Track & untrack keywords** — start rank-tracking new keywords, or remove ones you no longer need
* **Track AI prompts** — add, refresh, update, or remove prompts from AI-visibility tracking
* **Organize topics** — create topic clusters and add keywords or prompts to them
* **Generate articles** — write a complete SEO article from a brief, or run it step by step (titles → outline → draft); this uses credits, so the assistant asks first
* **Manage content** — edit existing articles and schedule, publish, unpublish, or change public-feed visibility
* **Work your next steps** — start, snooze, dismiss, reopen, or mark next steps done, and refresh the list

You turn each one on or off in **Settings → Integrations → MCP** — see [Control what AI can do](#control-what-ai-can-do).

***

## Connect your AI app

This is the easy way and works on **any SnowSEO plan**. You add SnowSEO as a "connector" inside your AI app, sign in through your browser once, and you're done — there's no key to copy or paste.

The server URL is the same everywhere:

```
https://mcp.snowseo.com/mcp
```

<Tip>
  AI apps occasionally rename these menus as they update, so the exact wording may differ slightly — but the flow is always the same: find where the app adds a **custom connector** (or **MCP server**), paste the URL above, and approve the SnowSEO sign-in.
</Tip>

### Claude (Desktop & web)

1. Open Claude and go to **Settings → Connectors**.
2. Click **Add custom connector** *(this needs a paid Claude plan — Pro, Max, Team, or Enterprise)*.
3. Give it a name like **SnowSEO** and paste the server URL: `https://mcp.snowseo.com/mcp`
4. Click **Add**, then **Connect**. Claude opens the SnowSEO sign-in page in your browser — sign in and click **Allow**.
5. SnowSEO now appears in your connectors. Start a chat and ask away.

### ChatGPT

ChatGPT calls custom MCP connectors **apps**, and you add them through Developer mode *(available on paid ChatGPT plans)*.

1. In ChatGPT, open **Settings → Apps**, then **Advanced**, and turn on **Developer mode**. This is what lets you add custom connectors.
2. Back on the **Apps** screen, click **Create app**.
3. In the **New App** dialog, give it a **Name** like **SnowSEO**. Under **Connection**, keep **Server URL** selected and paste `https://mcp.snowseo.com/mcp`.
4. Set **Authentication** to **OAuth**.
5. Tick **"I understand and want to continue"** on the risk notice, then click **Create**.
6. Sign in to SnowSEO and approve access. The app is now available — turn it on in a chat and ask about your SEO.

### Other apps & assistants

Most MCP-capable apps follow the same pattern. Find where the app adds a **custom connector** or **MCP server**, paste `https://mcp.snowseo.com/mcp`, and approve the SnowSEO sign-in in your browser. No API key needed.

### Which brand am I connecting?

Your connection is tied to your **SnowSEO user session**, not one fixed brand. The assistant should call `list_teams` first, let you choose the brand/team you mean, and pass that `teamId` to team-scoped tools. Tool permissions are still managed per brand in **Settings → Integrations → MCP**.

***

## Example prompts

Once you're connected, try asking:

| What you want       | Just ask                                                                              |
| ------------------- | ------------------------------------------------------------------------------------- |
| Check your rankings | *"Using SnowSEO, how are my tracked keywords doing this month?"*                      |
| Spot movers         | *"Which of my keywords dropped in ranking recently?"*                                 |
| Review clusters     | *"Summarize my topic clusters and which are gaining visibility."*                     |
| See your traffic    | *"Show my Search Console clicks and impressions for the last 28 days."*               |
| Find new keywords   | *"Give me keyword ideas about remote team productivity."*                             |
| Check your content  | *"What are the SEO scores on my latest articles?"*                                    |
| Write an article    | *"Write an article titled 'Best tools for remote teams' in my Productivity cluster."* |

<Note>
  Some questions chain together automatically — ask about a topic cluster and a good assistant will list your clusters first, then dig into the one you mean.
</Note>

***

## Developer setup (CLI & editors)

Building with an AI coding tool? The same server works from the command line and code editors. These use the same browser sign-in (OAuth) on any plan.

### Claude Code

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

Then run `/mcp`, pick **snowseo**, and choose **Authenticate** to sign in. Add `--scope user` to use it in every project, or `--scope project` to share it with your team in a checked-in `.mcp.json`.

### Cursor, VS Code, Windsurf & other editors

Open your client's MCP config (usually a `.mcp.json` or `mcp.json` file) and add the server with **no** auth header:

```json theme={null}
{
  "mcpServers": {
    "snowseo": {
      "type": "http",
      "url": "https://mcp.snowseo.com/mcp"
    }
  }
}
```

On first connect the client opens the SnowSEO sign-in page in your browser. Approve it once and you're connected.

<Note>
  Field names differ a little between clients (Windsurf uses `serverUrl` instead of `url`; VS Code's top-level key is `servers`). The flow is the same — point it at the URL with no auth header and let the client handle sign-in.
</Note>

<Accordion title="Client only supports stdio? Use the mcp-remote bridge">
  Some clients can only launch local commands. Bridge to the remote server with [`mcp-remote`](https://www.npmjs.com/package/mcp-remote) (needs [Node.js](https://nodejs.org)) — it handles the browser sign-in for you:

  ```json theme={null}
  {
    "mcpServers": {
      "snowseo": {
        "command": "npx",
        "args": ["mcp-remote", "https://mcp.snowseo.com/mcp"]
      }
    }
  }
  ```
</Accordion>

***

## What the assistant can access

These are the tools the app uses behind the scenes. Call `list_teams` first to choose a brand, then pass the returned `teamId` to team-scoped tools. **Read** tools are **on by default** (you can switch any off per brand); **actions** stay **off until you switch them on** per brand.

**Read** *(on by default):*

| Tool                            | What it returns                                                                                                                            |
| ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| `list_teams`                    | Teams this user can access and their team IDs                                                                                              |
| `brands_overview`               | Org-level portfolio read: per-brand AI visibility, domain rating, open next steps, tracked prompts/keywords, Search/Traffic, plus org KPIs |
| `list_integrations`             | Sanitized integrations grouped by dashboard section for a team                                                                             |
| `keyword_research`              | Keyword ideas with search volume, competition, and CPC                                                                                     |
| `suggest_keywords`              | AI keyword suggestions from a website + brand context                                                                                      |
| `rank_tracking_keywords`        | All tracked keywords with current position and trend                                                                                       |
| `rank_tracking_top_keywords`    | Best-performing tracked keywords, with period comparison                                                                                   |
| `rank_tracking_keyword_changes` | Keywords that improved, dropped, newly ranked, or were lost                                                                                |
| `rank_tracking_keyword_history` | Position history for a specific keyword over time                                                                                          |
| `topic_clusters_list`           | All topic clusters with counts, visibility, and trend                                                                                      |
| `topic_cluster_detail`          | One cluster's keyword/prompt performance and competitors                                                                                   |
| `gsc_traffic_stats`             | Search Console clicks, impressions, CTR, and position                                                                                      |
| `gsc_top_pages`                 | Search Console top pages                                                                                                                   |
| `gsc_search_queries`            | Search Console top queries                                                                                                                 |
| `gsc_page_changes`              | Search Console page performance changes                                                                                                    |
| `gsc_countries`                 | Search Console country breakdown                                                                                                           |
| `gsc_devices`                   | Search Console device breakdown                                                                                                            |
| `gsc_pages_for_keyword`         | Search Console pages ranking for one keyword                                                                                               |
| `bing_traffic_stats`            | Bing Webmaster Tools clicks, impressions, CTR, and position                                                                                |
| `bing_top_pages`                | Bing Webmaster Tools top pages                                                                                                             |
| `bing_search_queries`           | Bing Webmaster Tools top queries                                                                                                           |
| `bing_backlinks`                | Bing Webmaster Tools backlink summaries                                                                                                    |
| `ga_overview`                   | GA4 users, pageviews, and sessions by day with comparison                                                                                  |
| `ga_traffic_overview`           | GA4 total users, pageviews, and sessions with comparison                                                                                   |
| `ga_pages`                      | GA4 page performance                                                                                                                       |
| `ga_sources`                    | GA4 source and referral-source breakdowns                                                                                                  |
| `ga_channels`                   | GA4 traffic channels                                                                                                                       |
| `ga_countries`                  | GA4 country breakdown                                                                                                                      |
| `ga_devices`                    | GA4 device-category breakdown                                                                                                              |
| `ga_browsers`                   | GA4 browser breakdown                                                                                                                      |
| `ga_operating_systems`          | GA4 operating-system breakdown                                                                                                             |
| `ga_campaigns`                  | GA4 campaign performance                                                                                                                   |
| `ga_engagement`                 | GA4 engagement metrics                                                                                                                     |
| `ga_user_type`                  | GA4 new vs returning user split                                                                                                            |
| `ga_filter_values`              | GA4 analytics filter values                                                                                                                |
| `posthog_overview`              | PostHog users, pageviews, and sessions by day                                                                                              |
| `posthog_page_counts`           | PostHog page-level visitor counts                                                                                                          |
| `posthog_pages`                 | PostHog page performance                                                                                                                   |
| `posthog_sources`               | PostHog source and referral-source breakdowns                                                                                              |
| `posthog_channels`              | PostHog traffic channels                                                                                                                   |
| `posthog_countries`             | PostHog country breakdown                                                                                                                  |
| `posthog_devices`               | PostHog device-category breakdown                                                                                                          |
| `posthog_browsers`              | PostHog browser breakdown                                                                                                                  |
| `posthog_operating_systems`     | PostHog operating-system breakdown                                                                                                         |
| `posthog_campaigns`             | PostHog campaign performance                                                                                                               |
| `posthog_avg_duration`          | PostHog average session duration                                                                                                           |
| `posthog_user_type`             | PostHog new vs returning user split                                                                                                        |
| `posthog_filter_values`         | PostHog analytics filter values                                                                                                            |
| `ai_visibility_overview`        | AI visibility dashboard sections, prompt table, and prompt detail                                                                          |
| `ai_visibility_brand`           | AI visibility summary for one brand or competitor                                                                                          |
| `ai_visibility_filters`         | AI visibility platforms, countries, competitors, and prompt filters                                                                        |
| `ai_visibility_models`          | Available AI visibility models and active state                                                                                            |
| `cms_articles`                  | Articles with status, SEO scores, and metadata                                                                                             |
| `get_article`                   | Full article detail by slug                                                                                                                |
| `generate_titles`               | SEO-friendly article title ideas for a topic cluster                                                                                       |
| `generate_keywords`             | Ranked target keywords for an article title (optionally from competitor pages)                                                             |
| `generate_prompts`              | FAQ-style reader questions to guide an article's structure                                                                                 |
| `find_competitor_sources`       | Competitor articles on a topic, found by web search, to inform planning                                                                    |
| `generate_outline`              | Structured, type-specific article outline from a title and keywords                                                                        |
| `generate_internal_links`       | Most relevant existing articles to link to from a new article                                                                              |
| `generation_status`             | Whether an article is currently generating and how far along it is                                                                         |
| `article_internal_links`        | Outbound internal links for one article                                                                                                    |
| `team_internal_links`           | All stored internal links for a team                                                                                                       |
| `article_audit`                 | Latest cached article audit                                                                                                                |
| `article_audit_history`         | Cached article audit history                                                                                                               |
| `activity_feed`                 | Recent team activity across the platform                                                                                                   |
| `brand_settings`                | Brand profile, audience, competitors, and colors                                                                                           |
| `next_steps`                    | Recommended next steps for a team, ranked by priority (or resolved wins)                                                                   |
| `next_steps_detail`             | How to fix one next step: fix steps, best practices, impact, and AI prompts                                                                |

**Actions** *(off until you switch them on in Settings → Integrations → MCP):*

| Tool                            | What it does                                                                          |
| ------------------------------- | ------------------------------------------------------------------------------------- |
| `track_keywords`                | Start rank-tracking one or more keywords                                              |
| `untrack_keywords`              | Remove one or more keywords from rank tracking                                        |
| `track_prompts`                 | Add one or more prompts to AI-visibility tracking                                     |
| `refresh_tracked_prompt`        | Refresh one tracked prompt and its region variants                                    |
| `update_tracked_prompts`        | Update prompt text, enabled, branded, or pinned state                                 |
| `delete_tracked_prompts`        | Delete one or more tracked prompts                                                    |
| `delete_prompt_responses`       | Delete selected responses from a tracked prompt                                       |
| `ai_visibility_fan_out_queries` | Generate AI visibility query variations                                               |
| `update_ai_visibility_model`    | Enable or disable one AI visibility model                                             |
| `create_topic_cluster`          | Create a new topic cluster                                                            |
| `add_keywords_to_topic`         | Attach a keyword to a topic cluster (optionally tracking it)                          |
| `add_prompts_to_topic`          | Attach or create prompts on a topic cluster                                           |
| `generate_article`              | Write a complete SEO article from a brief in one step (outline + draft). Uses credits |
| `create_article`                | Create a draft article from a pre-built outline (no content generated)                |
| `start_article_generation`      | Write the content for an existing draft article. Uses credits                         |
| `update_article`                | Edit an existing article draft                                                        |
| `set_article_public_feed`       | Show or hide an article on the public feed                                            |
| `schedule_article`              | Schedule an existing article to publish to a connected CMS                            |
| `unschedule_article`            | Remove pending scheduled publishing from existing articles                            |
| `publish_article`               | Publish existing articles to connected CMS providers                                  |
| `unpublish_article`             | Unpublish articles from connected CMS providers                                       |
| `delete_article`                | Delete an existing SnowSEO article                                                    |
| `next_steps_start`              | Move a recommended next step into the in-progress state                               |
| `next_steps_mark_done`          | Mark a recommended next step as done                                                  |
| `next_steps_reopen`             | Return a next step to the open to-do list                                             |
| `next_steps_dismiss`            | Dismiss a next step so it leaves the list                                             |
| `next_steps_snooze`             | Hide a next step for a number of days                                                 |
| `next_steps_refresh`            | Recompute a team's next steps from the latest data                                    |

<Note>
  **Not every endpoint in the [API reference](/docs/api-reference/introduction) is available as an MCP tool.** Long-running or background operations are left out because an assistant won't wait on a single call — for example, a full [Website Audit](/docs/api-reference/endpoints/website-audit) runs as a crawl job that can take minutes, so it stays in the dashboard and REST API only. The tools above are the complete set an AI app can use.
</Note>

<Note>
  Tools are documented here at the conceptual level — there is currently **no per-tool parameter reference**. Each tool maps to a `/v3` endpoint, so consult the matching [API reference](/docs/api-reference/introduction) page for exact inputs. Authentication is **OAuth 2.1 only** today; there is no API-key path for the MCP server.
</Note>

***

## Technical details

| Property          | Value                                                               |
| ----------------- | ------------------------------------------------------------------- |
| **Endpoint**      | `https://mcp.snowseo.com/mcp`                                       |
| **Transport**     | Streamable HTTP (`POST`)                                            |
| **Auth**          | OAuth 2.1 *(any plan)* — browser sign-in, no key to copy            |
| **Brand context** | User-scoped OAuth; team-scoped tools use `teamId` from `list_teams` |
| **Access**        | Read by default; optional write actions you enable per brand        |

The server is a thin, **stateless proxy** over the [Developer API](/docs/api-reference/introduction): every tool call maps to a `/v3` endpoint, and nothing is stored — your credentials are forwarded per request and team-scoped calls carry the selected `teamId`.

***

## Control what AI can do

You're always in charge of what a connected app can do. In the dashboard, open **Settings → Integrations → MCP** to see every tool grouped into **Reading your data** and **Taking actions**, each with an on/off switch.

* **Reads are on by default** — viewing your SEO data is safe.
* **Actions are off by default** — switch on only the ones you want the assistant to perform for you.
* Rules are **per brand**, and **every** app connected to that brand (Claude, ChatGPT, Cursor…) follows them — flip a switch and it applies everywhere on the next request.
* Only **admins and owners** can change these; other teammates can view them.

Turning a tool off hides it from the assistant completely, so it can't see or call it. Each brand has its own rules — to manage a different one, switch your active brand in the dashboard first.

### Permission API

The same per-brand allow/deny matrix is available over the REST API — the dashboard settings screen is a thin client over these two routes, and the MCP server enforces the resulting state per brand on every request.

`GET /v3/settings/mcp`

Team-scoped (`teamId`), any **member**. Returns the full tool catalog with, for each tool, its `name`, `label`, `description`, `group` (`read` or `write`), `default` state, and effective `state` for the brand — plus `canManage` (whether the caller may edit) and `brandId`.

`PATCH /v3/settings/mcp`

Team-scoped, **team admins/owners only** (members can read the matrix but not change it). Body: `permissions`, a map of tool `name` → `"allow"` | `"deny"` (deltas only; values matching a tool's default are cleared). Reads default to `allow` and writes default to `deny`. Returns the updated catalog in the same shape as the GET route.

***

## Troubleshooting

<AccordionGroup>
  <Accordion title="Do I need a paid plan?">
    No — connecting an AI app works on **any SnowSEO plan**. You just add the connector and approve access in your browser.
  </Accordion>

  <Accordion title="I can't find where to add a connector in my app.">
    The menu differs per app: in **Claude** it's **Settings → Connectors → Add custom connector**; in **ChatGPT** it's **Settings → Apps → Advanced → Developer mode**, then **Create app**. Most apps only allow custom connectors on **paid** plans.
  </Accordion>

  <Accordion title="It used the wrong brand.">
    Ask the assistant to call `list_teams` and use the `teamId` for the brand you mean. You do not need to reconnect just to switch brands.
  </Accordion>

  <Accordion title="The assistant can't do something (like tracking a keyword).">
    That action is probably switched **off** for this brand. Open **Settings → Integrations → MCP**, turn it on under **Taking actions**, and ask again — new actions are off by default. (Some actions also use credits or need a specific plan.)
  </Accordion>

  <Accordion title="The app shows empty data for a keyword.">
    Make sure it's a keyword you actually **track** (ask for `rank_tracking_keywords` to see them), and that the brand has Google Search Console connected. Untracked keywords have no history to show.
  </Accordion>

  <Accordion title="The connection won't authenticate.">
    Re-run the sign-in step and approve access in the browser window. Make sure your client uses the **streamable-http** transport and that it didn't cache an expired session — removing and re-adding the connector forces a fresh sign-in.
  </Accordion>
</AccordionGroup>
