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

# MCP Setup

> Connect Cursor or Claude Desktop to Sight AI via OAuth

<Note>
  This page covers **Sight AI's outbound MCP server** — connecting external clients *to* Sight AI. To pull data *from* third-party apps *into* Sight AI Agent and Automations, see [MCP Connectors](/integrations/mcp-connectors).
</Note>

## Prerequisites

* Sight AI team owner or admin
* MCP client that supports OAuth 2.1 + PKCE (Cursor, Claude Desktop)

## MCP server

Sight AI exposes a single MCP endpoint for every team:

```
https://app.trysight.ai/mcp
```

## OAuth endpoints

| Resource           | URL                                                              |
| ------------------ | ---------------------------------------------------------------- |
| OAuth metadata     | `https://app.trysight.ai/.well-known/oauth-authorization-server` |
| Protected resource | `https://app.trysight.ai/.well-known/oauth-protected-resource`   |

## Register a client

Cursor and Claude Desktop can register automatically via OAuth Dynamic Client Registration (RFC 7591) when you connect — no manual setup required.

You can also pre-register a public client from the dashboard if your MCP client requires a stable `client_id`:

1. Sign in as a team owner or admin.
2. Go to **Integrations → Sight AI API → OAuth apps**.
3. Click **Create OAuth client**, give it a recognizable name, and add a loopback redirect URI such as `http://127.0.0.1/oauth/callback` (or `cursor://anysphere.cursor-mcp/oauth/callback` for Cursor). Leave **Server-side app** unchecked — MCP clients are public clients that authenticate with PKCE only.
4. Copy the generated `client_id` if your MCP client requires a static client (see below).

<Note>
  Loopback redirect URIs (`http://127.0.0.1/...`, `http://localhost/...`) match **any port** at runtime, per
  [RFC 8252 §7.3](https://www.rfc-editor.org/rfc/rfc8252#section-7.3). One registered loopback URI covers
  every Cursor/Claude Desktop session, even though each one picks a random callback port.
</Note>

The MCP server URL itself (for pointing your client) lives on **Integrations → MCP**.

## Authorize

In Cursor, add an MCP server pointing at `https://app.trysight.ai/mcp`. Cursor will discover OAuth, register a client automatically, and open the Sight AI consent screen where you pick your team, sites, and scopes.

If your client does not support dynamic registration, supply a pre-registered `client_id` from the dashboard:

```json theme={null}
{
  "mcpServers": {
    "sight-ai": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://app.trysight.ai/mcp",
        "--static-oauth-client-info",
        "{\"client_id\":\"YOUR_CLIENT_ID\"}"
      ]
    }
  }
}
```

The client initiates OAuth 2.1 with PKCE, you'll be redirected to Sight AI to sign in, pick the team, and approve scopes, and the token is then returned to your MCP client.

## Available MCP tools (v1)

Sight AI MCP now mirrors most of the REST v1 Developer API. Tools are grouped by workflow.

### Sites & analytics (`analytics:read`)

* `list_sites` / `get_site`
* `get_search_overview` / `get_search_timeseries` / `get_search_queries` / `get_search_pages` / `get_search_article_performance`
* `get_ai_visibility_summary` / `get_ai_visibility_trends` / `get_ai_visibility_mentions` / `get_ai_visibility_citations` / `get_ai_visibility_competitors`

### Opportunities (`opportunities:read`)

* `list_opportunities` — filter by `source` (ai/search/all) and `status` (e.g. pending)
* `get_opportunities_readiness` — pipeline warmup status

### Articles

Read (`articles:read`):

* `list_articles` — filter by `status` (draft, generating, ready, failed)

* `get_article` — full article body, SEO fields, target keyword, and status

* `get_article_limits` — monthly quota check before generating

* `get_article_images` — list hero/thumbnail/inline images for an article

* `fetch_url_content` — crawl a public URL (title, headings, body) for rewrite workflows

* `get_writing_guide` — pipeline writing playbook for listicle / step-by-step / explainer + business context

* `recommend_article_types` — recommend an article type per keyword

* `recommend_article_category` — recommend a CMS category from keyword/title

* `list_article_authors` — list Webflow/WordPress authors for batch assignment

* `project_interlinks` — estimate interlink-automation output for a given cron + end date

Write (`articles:write`):

* `generate_article` — start async generation from a keyword (poll `get_article` until `ready`)
* `create_draft_article` — create a blank draft (counts against quota)
* `update_article` — edit title, HTML body, SEO fields, slug, and summary (status is not exposed)
* `edit_article_section` — surgical body edits: append/replace a section or rewrite the intro
* `refresh_seo_title` / `refresh_seo_meta` — AI SEO rewrites (rate-limited)
* `generate_article_image` — AI cover image (requires billed image access)
* `set_article_main_image` — set/clear the hero image from a URL
* `create_article_batch` — queue 1–100 articles through the full pipeline (author round-robin, categories, interlinking focus)

Authoring & batch workflows:

```
# Rewrite an existing page
fetch_url_content → get_writing_guide → create_draft_article → edit_article_section → update_article → sync_article

# Plan a batch
recommend_article_types → list_article_authors → create_article_batch
```

### Keywords (`keywords:read` / `keywords:write`)

Keyword pipeline tools for Autopilot and manual generation workflows.

Read (`keywords:read`):

* `list_keywords` — paginated list with pipeline status; filter `status: no_article` for generation candidates
* `get_keyword` — lookup by `keywordId`, exact `keyword` text, or `slug`
* `get_keywords_summary` — totals, counts by status, and planning recommendations
* `manage_keywords` actions `list`, `get`, `summary` — unified alternative to the dedicated tools

Write (`keywords:write`):

* `add_keywords` — single keyword or bulk (comma/newline, max 100); dedupes existing slugs
* `manage_keywords` action `add` — same as `add_keywords`

Smart workflow:

```
get_keywords_summary → list_keywords (status: no_article) → add_keywords
  → generate_article → get_article (poll) → update_article → sync_article
```

### Agents & Automations (`agents:read` / `agents:write`)

* `list_agents` / `list_agent_runs`
* `update_agent` — toggle or tune an agent
* `run_agent` — on-demand run (rate-limited, agent must be active)

Agent keys: `article_creation`, `ai_prompt`, `article_boost`, `interlinking`, `site_performance`, `outreach`

<Note>Automations are included on Pro/Advanced and metered in AI credits. The v1 REST/MCP agent endpoints operate on the agent configuration store; custom automations from the UI are not yet exposed on the v1 API. See [Automations](/automations/overview) for the full setup guide.</Note>

### CMS & integrations (`integrations:read` / `integrations:write`)

Requires re-authorization if MCP was connected before these scopes were added.

* `list_integrations` — connected CMS/platform integrations and which one is active
* `get_cms_status` — active CMS, sync eligibility, and manual-only integrations (Framer)
* `get_article_sync_status` — per-platform sync state for an article
* `sync_article` — push a **ready** article to the active CMS (WordPress, Webflow, Wix, Shopify, HubSpot, webhook)

### Planner (`planner:read` / `planner:write`)

* `schedule_article` — queue ready articles for a future CMS publish date
* `manage_planner` — settings, scheduled queue, reschedule/remove, autopilot health
  * Actions: `get_settings`, `update_settings`, `list_scheduled`, `update_scheduled`, `remove_scheduled`, `get_autopilot`

### Indexing & setup health (`indexing:read` / `indexing:write`)

* `submit_sitemap_gsc` — submit the configured sitemap URL to Google Search Console
* `get_gsc_status` — GSC connection, property, and sync state
* `submit_article_indexnow` — submit one article URL to IndexNow (after CMS sync)
* `get_indexnow_status` — IndexNow verification + optional URL lookup
* `get_account_health` — composite setup troubleshooting (CMS, GSC, IndexNow, autopilot, blockers)

### Outreach inbox (`inbox:read` / `inbox:write`)

Requires Outreach Agent license. Contains contact PII (emails, names, message bodies).

* `list_inbox` — conversation list with latest preview; filter by `status` (`unread`, `open`, `awaiting_human`, etc.)
* `read_message` — full conversation thread + opportunity context + agent reasoning
* `get_inbox_unread_count` — unread thread/total counts
* `mark_conversation_read` — clear unread state on a thread
* `reply_to_message` — send a human reply (requires Outreach email setup)
* `update_conversation_status` — resolve, decline, reopen, pause, or resume AI
* `take_over_conversation` — hand `awaiting_human` threads to the Outreach Agent

### End-to-end content workflow

```
list_sites → get_keywords_summary → list_keywords (status: no_article)
  → add_keywords (optional) → get_article_limits → generate_article
  → get_article (poll) → update_article (optional)
  → refresh_seo_title (optional) → get_cms_status → sync_article
```

Or starting from opportunities:

```
list_sites → get_opportunities_readiness → list_opportunities
  → get_article_limits → generate_article → get_article (poll)
  → refresh_seo_title (optional) → get_cms_status → sync_article
```

Or with an automation (agent):

```
list_agents → run_agent → list_agent_runs → sync_article
```

<Warning>
  Articles must be in **ready** status with a title and body before `sync_article` succeeds. Framer is manual-export only — use the Sight AI UI to export.
</Warning>

<Note>
  Rate limits: article generation (10/day per team), SEO refresh (20/hr), agent runs (5/hr per site), keyword adds (100/hr per site). AI credit affordability is enforced via the credits system when enforcement is on.
</Note>
