Skip to main content
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.

Prerequisites

  • Sight AI team owner or admin
  • An MCP client that speaks Streamable HTTP and OAuth 2.1 with PKCE: Claude (web, desktop, mobile, Claude Code), ChatGPT, Cursor, VS Code, Windsurf, Gemini CLI and most others

MCP server

Sight AI exposes a single MCP endpoint for every team:
The server is stateless Streamable HTTP (JSON responses, no SSE stream) and speaks MCP protocol versions 2025-11-25, 2025-06-18, 2025-03-26 and 2024-11-05.

Connect from Claude

In Claude, open Customize → Connectors, choose Add custom connector and paste https://app.trysight.ai/mcp. Claude discovers OAuth on its own; sign in to Sight AI, pick the team and the sites, and approve. Claude Code: claude mcp add --transport http sight https://app.trysight.ai/mcp, then /mcp to sign in. Every tool shows under the connector’s Tool permissions with its title; read tools run without asking and write tools ask first.

Connect from ChatGPT

In ChatGPT, open Settings → Connectors, enable Developer mode, create a connector with https://app.trysight.ai/mcp/chatgpt and OAuth, then approve access on the Sight AI consent screen. ChatGPT reads the same read/write hints and confirms write actions before running them. /mcp/chatgpt serves the same tools as /mcp, with the two things ChatGPT expects: the tool list can be read before you link your account (each tool says it needs OAuth to run), and a tool your connection lacks a permission for answers with a prompt to reconnect instead of a transport error. Use /mcp everywhere else.

OAuth endpoints

An unauthenticated request to /mcp (or a tool call on /mcp/chatgpt) answers 401 with a WWW-Authenticate: Bearer challenge carrying resource_metadata and the scope the tools need, which is how clients find these endpoints without configuration. PKCE (S256) is required, the resource indicator (RFC 8707) is validated, and every authorization response carries iss (RFC 9207).

Register a client

Nothing to do for most clients:
  • Client ID Metadata Documents (the MCP spec’s preferred mechanism): Claude and ChatGPT identify themselves with an HTTPS URL as their client_id; the server fetches that document, checks it and uses its redirect URIs. The consent screen names the domain the document came from.
  • Dynamic Client Registration (RFC 7591): Cursor, Claude Desktop through mcp-remote, VS Code and others register a public client automatically when you connect.
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).
A pre-registered client is usable by your own team right away; the app review step only applies to apps other Sight AI customers will connect to.
Loopback redirect URIs (http://127.0.0.1/..., http://localhost/...) match any port at runtime, per RFC 8252 §7.3. One registered loopback URI covers every Cursor/Claude Desktop session, even though each one picks a random callback port.
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:
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.

How the server behaves

  • Instructions. initialize returns an instructions string your client gives the model: start with list_sites, which calls cost budget or credits, and that writes need the user’s go-ahead.
  • Titles. Every tool carries a title (for example get_seo_rankings is “Tracked rankings”), which clients show in their tool lists and permission screens.
  • Annotations. Every tool in tools/list carries readOnlyHint, destructiveHint, idempotentHint and openWorldHint, so clients can run reads without asking and confirm writes. Paid lookups (research_keywords, fetch_keyword_overview, explore_domain, suggest_seo_competitors, and the AI recommendations recommend_article_types / recommend_article_category) are not marked read-only: an uncached call spends the site’s daily lookup budget or the team’s credits. Writes that overwrite, delete, cancel or send email are marked destructive, as is article generation (it spends credits); additive writes that cost nothing (create a draft, add keywords, submit for indexing) are not.
  • Permissions. A tool the connection’s scopes do not cover answers 403 with WWW-Authenticate: Bearer error="insufficient_scope" and the full scope list; clients that follow the MCP step-up flow (Claude does) re-run consent and retry the call.
  • Validation. Arguments are checked against the tool’s schema before it runs: a missing siteId, an action outside the enum or a value of the wrong kind returns isError with the argument named and code: VALIDATION_ERROR.
  • Errors. A tool that fails returns a normal result with isError: true and text such as The site's daily lookup budget is used up (code: BUDGET_EXHAUSTED), so the model can read the reason and tell the user. The codes match the REST error codes. Unexpected server failures return Internal error. Calling a tool that does not exist is a JSON-RPC -32602 error.
  • Image generation is an app and agent feature; the MCP server does not offer generate_article_image. set_article_main_image sets a cover image from a URL.
  • Single-site access. When the credential is limited to one site, siteId can be left out and that site is used.
  • Plans. tools/list only lists the tools the team’s plan includes.

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

SEO module (analytics:read / seo:write, requires the SEO module)

Every tool takes siteId and mirrors the SEO REST endpoints: the same filters, bodies, action and kind values apply, and the same 402 MODULE_REQUIRED and 429 BUDGET_EXHAUSTED errors come back. Reads use analytics:read; paid lookups and writes use seo:write. Requires re-authorization if MCP was connected before the seo:write scope was added. Read (analytics:read), from stored snapshots, no paid lookups: Paid lookups (seo:write), each spends the site’s daily lookup budget unless cached: Write (seo:write). On the REST API these take an action (or kind for run_seo_check) matching the body below; over MCP every operation is a tool of its own, listed after the table. Over MCP the action-based tools above are not listed. Each operation is its own tool with only that operation’s arguments (the action / kind argument is gone); scopes, plan gating and rate limits are the registry tool’s:

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 — the team’s AI credit balance and usage this billing period (there are no per-article quotas)
  • 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 / comparison + 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). Articles generated over MCP get no AI cover image: open the article in Sight AI (Content → Articles) and use Generate image there, or set one from a URL with set_article_main_image
  • create_draft_article — create a blank draft to fill with update_article or edit_article_section
  • 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)
  • 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); each article spends AI credits. Like generate_article, no AI cover images over MCP
Authoring & batch workflows:

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
  • check_keywords — exact coverage check for up to 50 candidates against the full keyword list and existing articles; call it before recommending a keyword
  • list_keyword_groups — the site’s keyword groups with ids and counts
Write (keywords:write):
  • add_keywords — single keyword or bulk (comma/newline, max 100); dedupes existing slugs
  • manage_keywords — add (same as add_keywords, with groupName/groupId), assign_group (group keywords that already exist; the group is created if missing) and remove (keyword ids, keyword texts, or every keyword a filter covers: status such as no_article, groupId/groupName, source, search; dryRun: true counts and samples first). Reads and writes are separate tools on the MCP server.
Smart workflow:

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). Over MCP this is one tool per agent: run_search_opportunity_agent, run_ai_opportunity_agent, run_article_boost_agent, run_interlinking_agent, run_site_performance_agent, run_outreach_agent
Agent keys: article_creation, ai_prompt, article_boost, interlinking, site_performance, outreach
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 for the full setup guide.

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)

  • get_planner — read the planner: view is settings, scheduled (the CMS publish queue, each item with origin autopilot|manual), generation (upcoming Autopilot slots) or autopilot (health); startDate/endDate narrow the queue views
  • schedule_article — queue ready articles for a future CMS publish date
  • manage_planner — change the planner
    • Actions: update_settings, update_scheduled, remove_scheduled, clear_scheduled, clear_generation, plan_generation

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

Or starting from opportunities:
Or with an automation (agent):
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.
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.