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 freeConnect 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.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 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
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. 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 freeFrequently asked questions
- How do I install the AgentGEO MCP server in Windsurf?
- Add an
agentgeoentry to~/.codeium/windsurf/mcp_config.jsonwithcommand: "npx"andargs: ["-y", "agentgeo-mcp", "--key", "ag_live_..."]. The package speaks MCP over stdio, has zero npm dependencies and needs Node.js 18+. Reload Windsurf andfetch_raw_answersbecomes 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 fullanswerText,sourceswith title, URL and position,fetchedAt,latencyMs,providerRecordIdand the rawproviderFields. 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 — whileag_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_modeandcopilot. Ask for one to six of them per call; the record shape is identical across all of them.
Keep reading