MCP2026-08-194 min read

AI Visibility MCP for n8n

In n8n, a workflow can pull the raw answers ChatGPT, Perplexity, Google AI Overviews, Google AI Mode, Copilot and Gemini actually give — no code, no scraper to maintain. Point the MCP Client Tool node at one server and an AI Agent step fetches answer text and citations as structured data; or call the REST endpoint from an HTTP Request node. One narrow tool: fetch_raw_answers. AgentGEO is the answer-access layer for AI agents. n8n gets raw records — no scores, no conclusions — and your workflow does the rest: diff the citations, post to Slack, append to a Sheet, alert when your domain drops out.

In n8n, the raw answers the six engines actually give become a workflow step. Wire the MCP Client Tool node into an AI Agent and it can call fetch_raw_answers; the answer text and every cited source come back as structured data your later nodes can diff, store or route. One MCP server, one deliberately narrow tool — and no browser to babysit on a schedule.

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

Start for free

Connect AgentGEO to n8n

In an AI Agent workflow, add an MCP Client Tool node and point it at the AgentGEO server over the command-line (stdio) transport — command npx, arguments -y agentgeo-mcp --key ag_live_...:

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

The stdio transport needs a runtime that can execute npx, so this path suits self-hosted n8n. Create your ag_live_ key in the quickstart — free tier, no credit card. Building the workflow first? An ag_test_ key always returns clearly labelled demo records at zero credits, so you can wire up and test the nodes before spending anything.

On n8n Cloud (or any runtime that can't spawn npx), skip MCP and use an HTTP Request node: POST https://api.agentgeo.org/v1/fetches with an Authorization: Bearer ag_live_... header and a JSON body. It returns the exact same records and works everywhere — the curl guide has the request shape.

Either path 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 build once it's connected

This is where n8n shines: the check runs itself. A few workflow recipes to start from (build them on an ag_test_ key, then swap to ag_live_ to go live):

  • Weekly six-engine sweep to Slack. Schedule Trigger → fetch your money queries across all six surfaces → format a citation table → Slack node. A standing visibility report with no dashboard to log into.
  • Competitor-domain watch to a Sheet. Cron → fetch your category query → filter sources[] for competitor hosts → append a dated row to Google Sheets. A longitudinal record that's yours.
  • Drop-out alert. Daily fetch of Perplexity for your main query → check whether ourdomain.com is still in sources[] → IF it isn't, send an email or Slack alert. Know the day you fall out of the answer.
  • AI Mode vs Overviews diff. Fetch google_ai_overview and google_ai_mode for the same query → diff the cited URLs → post what AI Mode adds.
  • New-content trigger. After you publish, fetch the target query across engines a week later → append the citation result so you can see whether the page earned its way in.
  • Agent-summarized digest. Feed the fetched records to an AI Agent node and have it write a plain-English 'what changed this week' summary before the Slack step.

Six engines, one contract: one call 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 in n8n it runs on a schedule while you sleep.

What the MCP server gives you

Deliberately thin — an answer-access layer for your workflow, not an analytics product bolted onto n8n.

  • 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 sweep is one more value in the surfaces array.
  • Structured `sources[]` — every citation with its title, URL and position, ready for downstream nodes to filter, diff or write to a Sheet. No links regexed out of prose.
  • Raw records only — no rankings, sentiment or visibility scores. The conclusions come from your workflow — a Function node, an AI Agent step, or your own logic.
  • 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 automation.
  • 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. Your workflow holds the logic and destinations; conclusions computed outside that context would be worth less than raw records you route yourself — that is the whole GEO data layer argument. So, honestly:

  • No dashboards, no scores, no recommendations engine. The records are the input; the report, the alert and the Sheet row are what your workflow builds from them.
  • Not instant — set generous node timeouts. Requests wait up to 180 seconds because live surfaces are slow: an AI Overview SERP round-trip runs 40–90s. Give the MCP or HTTP Request node enough timeout to let a multi-surface fetch finish.
  • Some fetches finish async. A slow chatbot scrape can exceed the sync budget and come back failed with a providerFields.snapshot_id; a follow-up call with that id and the same single surface redeems the finished answer without paying again (not valid for google_ai_overview) — worth a retry branch in a monitoring workflow.
n8n without AgentGEOn8n + AgentGEO
How answers get inA scraper node you build and maintainOne tool call or HTTP Request
CitationsParsed out of HTML per engineStructured sources[] — title, URL, position
FreshnessWhatever the last run scrapedFetched live, on your schedule
CoverageOne engine per scraperUp to six engines in one call
Cost of checkingProxy and browser upkeepOne credit per delivered record; failed = 0

AgentGEO is the answer-access layer, nothing more. The monitoring, the alerts and the reports you build on it in n8n are yours — running on your schedule, landing in your Slack and your Sheets, not locked in a vendor dashboard.

Prefer the REST API?

The HTTP Request path is the REST API: POST https://api.agentgeo.org/v1/fetches, the same endpoint the MCP server wraps. The curl guide shows the exact request, and the Python guide helps if a Code node does the heavy lifting — identical contract either way, so a Cloud workflow and a self-hosted one behave the same.

Who builds on this

Automation builders and marketing-ops folks who want GEO monitoring as a workflow, not a codebase. If your instinct for 'track how the six engines answer for our category' is a Cron trigger and a Slack node rather than a repo, n8n plus AgentGEO gets you a standing monitor in an afternoon. Try a single fetch first in the no-signup playground, or see how the approaches compare.

Ready to build your first GEO workflow? Start free → · Follow the 5-minute quickstart →

Start for free

Frequently asked questions

How do I add AgentGEO to an n8n workflow?
Two ways. In an AI Agent workflow, add an MCP Client Tool node using the command-line (stdio) transport with command npx and arguments -y agentgeo-mcp --key ag_live_.... Or, in any workflow, use an HTTP Request node to POST https://api.agentgeo.org/v1/fetches with a Bearer header and JSON body. Both return the same records.
Does it work on n8n Cloud?
The stdio MCP path needs a runtime that can spawn npx, which typically means self-hosted n8n. On n8n Cloud, use the HTTP Request node against POST https://api.agentgeo.org/v1/fetches instead — it needs no local process and returns the identical records, so every recipe on this page works either way.
What does fetch_raw_answers return in n8n?
One record per requested surface: surfaceKey, status (delivered or failed), the full answerText, sources with title, URL and position, plus fetchedAt, latencyMs, providerRecordId and the raw providerFields. It's structured JSON, so downstream nodes can filter sources[], diff runs or append rows without any parsing.
What does it cost to run on a schedule?
One delivered record costs one credit; failed records cost zero. The free tier needs no credit card, and paid usage is billed by consumption with a spend cap — so a daily multi-query, six-engine sweep has a predictable, capped cost and can't run away. ag_test_ keys return demo records at zero credits while you build the workflow.
Which AI engines can an n8n workflow query?
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. Request one to six per call; the record shape is identical across all of them, which is what makes the citation diffs clean.

Keep reading