MCP2026-08-194 min read

AI Visibility MCP for Windsurf

In Windsurf, Cascade can pull the raw answers ChatGPT, Perplexity, Google AI Overviews, Google AI Mode, Copilot and Gemini actually give — then chain the whole check in one flow. Ask once; Cascade fetches the answers, diffs the citations and edits the landing page, with the answer text and every cited source arriving as a tool result. One MCP server, one deliberately narrow tool: fetch_raw_answers. AgentGEO is the answer-access layer for AI agents. The MCP server hands Windsurf raw records — no scores, no conclusions — and Cascade runs the GEO analysis with your repo in context.

In Windsurf, the raw answers the six engines actually give are one Cascade request away: ask, and fetch_raw_answers returns the answer text plus every cited source as a tool result. One MCP server, one deliberately narrow tool — and Cascade's agentic flow chains the rest: fetch, diff, edit, all from a single prompt.

Get your free API key → · Read the quickstart → — Free tier, no credit card required.

Start for free

Connect AgentGEO to Windsurf

Windsurf configures MCP servers in JSON. Add an agentgeo entry to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "agentgeo": {
      "command": "npx",
      "args": ["-y", "agentgeo-mcp", "--key", "ag_live_..."]
    }
  }
}

The server is a zero-dependency npm package that speaks MCP over stdio (Node.js 18+). Create your ag_live_ key in the quickstart — free tier, no credit card. Trying the wiring first? An ag_test_ key always returns clearly labelled demo records at zero credits. Reload Windsurf, and fetch_raw_answers becomes an ability Cascade can call in a flow.

Each call returns one record per surface — the provider's answer, verbatim, with every source it cited as structured data (the full record also carries the raw providerFields):

{
  "surfaceKey": "perplexity",
  "status": "delivered",
  "answerText": "...",
  "sources": [
    { "title": "...", "url": "https://...", "position": 1 }
  ],
  "fetchedAt": "2026-08-19T09:12:04Z",
  "latencyMs": 8412,
  "providerRecordId": "..."
}

What to ask once it's connected

No arguments to memorize — describe the outcome and Cascade chains the steps (country defaults to US, language to en; say "in Spain, in Spanish" to change it). Asks that let one flow do the whole job:

  • "Fetch what ChatGPT and Perplexity answer for 'best email API for developers' and list which domains each cites."
  • "Run our homepage query across all six surfaces, diff the citation lists, and if ourdomain.com is missing from Gemini, edit the hero copy to answer the query head-on."
  • "Pull Perplexity's answer for our category, compare sources[] to geo-log.md, and open the docs page that lost its citation for editing."
  • "Diff google_ai_overview against google_ai_mode for 'best observability tools' and tell me what AI Mode adds."
  • "Fetch Copilot's answer for 'alternatives to our product' — are we in the answer text, or only the sources?"
  • "Sweep all six engines for our top query, then draft the landing-page changes that would earn the citations we're missing." One flow, fetch to fix.

Six engines, one contract: the same ask diffs citation sets across chatgpt, perplexity, gemini, google_ai_overview, google_ai_mode and copilot. Who gets cited, where, and who doesn't — that diff is the core of GEO/AEO analysis, and Cascade folds it into a flow that ends with the fix, not just the finding.

What the MCP server gives you

Deliberately thin — an answer-access layer for Cascade, not an analytics product bolted into your editor.

  • One narrow toolfetch_raw_answers posts to AgentGEO's API and returns the run envelope verbatim. Nothing else to learn, nothing else to break.
  • Six engines behind one contract — ChatGPT, Perplexity, Gemini, Google AI Overviews, Google AI Mode and Copilot with an identical record shape, so widening a check is one more word in the ask.
  • Structured `sources[]` — every citation with its title, URL and position, ready for Cascade to diff, count or grep against your domain. No links regexed out of prose.
  • Raw records only — no rankings, sentiment or visibility scores. The conclusions come from Cascade, with your repo and history in context.
  • Managed-scraper engine, maintained for you — under the hood the server talks to POST https://api.agentgeo.org/v1/fetches; keeping six collection paths healthy is AgentGEO's job, not a headless browser in your project.
  • Usage-based billing with a spend cap — one credit per delivered record, failed records cost zero, free tier with no credit card, never per-seat.

What it doesn't do

The narrowness is the point. Cascade holds your repo, your positioning and your judgment; conclusions computed outside that context would be worth less than raw records analyzed inside it — that is the whole GEO data layer argument. So, honestly:

  • No dashboards. Records arrive as tool results; the report is whatever Cascade writes from them, committed in your repo.
  • No visibility scores or sentiment. Raw answerText and sources[] only — the judgment layer is deliberately left to your agent.
  • No recommendations engine. Cascade drafts fixes against your actual pages, which beats generic advice every time.
  • Not instant. Requests wait up to 180 seconds — live surfaces are slow. An AI Overview SERP round-trip runs 40–90s, and some chatbot scrapes exceed the sync budget entirely: those records come back failed with a providerFields.snapshot_id, and a follow-up call with that id and the same single surface redeems the finished answer without paying for a re-scrape (not valid for google_ai_overview). A flow that fetches several surfaces will pause on the slow ones.
Windsurf without AgentGEOWindsurf + AgentGEO MCP
How answers get inScreenshots pasted into CascadeA tool call inside the flow
CitationsRetyped by hand, positions guessedStructured sources[] — title, URL, position
FreshnessWhatever you last pastedFetched live, inside the flow
CoverageOne engine per browser tabUp to six engines in one call
From finding to fixSeparate manual stepsOne flow: fetch, diff, edit

AgentGEO is the answer-access layer, nothing more. The analysis Cascade runs on the records — the reports it writes, the pages it edits — is yours, versioned in your repo, not locked in a vendor dashboard.

Prefer the REST API?

The MCP server is a thin wrapper over the same endpoint your code can hit directly: POST https://api.agentgeo.org/v1/fetches. Script the sweep in Python or curl and you get the identical contract — same surfaces, same records, same credits — so a check born in a Cascade flow can graduate to CI unchanged.

Who builds on this

Developers working product sites and docs in Windsurf who want Cascade to own the whole loop. When one prompt can fetch how the six engines answer for your category, diff the citations and edit the page that's missing, the agentic flow is doing GEO work end to end instead of handing you a report to act on. Try it first in the no-signup playground, or see how the approaches compare.

Ready for your first six-engine sweep? Start free → · Follow the 5-minute quickstart →

Start for free

Frequently asked questions

How do I install the AgentGEO MCP server in Windsurf?
Add an agentgeo entry to ~/.codeium/windsurf/mcp_config.json with command: "npx" and args: ["-y", "agentgeo-mcp", "--key", "ag_live_..."]. The package speaks MCP over stdio, has zero npm dependencies and needs Node.js 18+. Reload Windsurf and fetch_raw_answers becomes an ability Cascade can call. Keys come from the onboarding quickstart.
What does fetch_raw_answers return in Windsurf?
One per-surface record for each engine you asked for: surfaceKey, status (delivered or failed), the full answerText, sources with title, URL and position, fetchedAt, latencyMs, providerRecordId and the raw providerFields. Records are returned unchanged — no rankings, sentiment or visibility scores are added.
Does my code or analysis leave my machine?
The analysis stays in Windsurf: raw answer records come in as tool results, and everything Cascade derives from them — diffs, reports, page edits — happens with your repo in context. What does go out is the query text itself: it is sent to AgentGEO's managed scrapers so they can fetch each engine's answer.
What does it cost to use with Windsurf?
One credit per delivered record; failed records cost zero. An ag_test_ key always returns clearly labelled demo records at zero credits — handy for verifying the install — while ag_live_ keys fetch real data. The free tier needs no credit card, and paid usage is billed by consumption with a spend cap, never per-seat.
Which AI engines can Windsurf query through this MCP?
Six: ChatGPT, Perplexity, Gemini, Google AI Overviews, Google AI Mode and Copilot — surface keys chatgpt, perplexity, gemini, google_ai_overview, google_ai_mode and copilot. Ask for one to six of them per call; the record shape is identical across all of them.

Keep reading