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.
Read this page with an AI
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 a free AI-visibility audit → · Read the quickstart → - No card, no account.
Get my free auditConnect 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+). A live ag_live_ key comes with a plan. 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-07-15T09:12:04Z",
"latencyMs": 8412,
"providerRecordId": "..."
}What to ask once it's connected
No arguments to memorize - describe the outcome and Cascade chains the steps. Say "in Spain" and it passes country through (it defaults to US). Worth knowing: language only reaches Google AI Overviews, where it drives the search locale - the chatbot surfaces take a country and no language field. 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.comis missing from Gemini, edit the hero copy to answer the query head-on." - "Pull Perplexity's answer for our category, compare
sources[]togeo-log.md, and open the docs page that lost its citation for editing." - "Diff
google_ai_overviewagainstgoogle_ai_modefor '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 tool -
fetch_raw_answersposts 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 - one credit per run, failed runs cost zero, priced by usage rather than 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
answerTextandsources[]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
failedwith aproviderFields.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 forgoogle_ai_overview). A flow that fetches several surfaces will pause on the slow ones.
| Windsurf without AgentGEO | Windsurf + AgentGEO MCP | |
|---|---|---|
| How answers get in | Screenshots pasted into Cascade | A tool call inside the flow |
| Citations | Retyped by hand, positions guessed | Structured sources[] - title, URL, position |
| Freshness | Whatever you last pasted | Fetched live, inside the flow |
| Coverage | One engine per browser tab | Up to six engines in one call |
| From finding to fix | Separate manual steps | One 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. See where you stand first with the free audit, or see how the approaches compare.
Ready to see what the engines already say about you? Get a free audit → · Read the 5-minute quickstart →
Get my free audit