White-label GEO reports for agencies
Clients have started asking their agencies a new question: "what does ChatGPT say about us?" A GEO report — who the AI engines name, who they cite, how that moved this month — is the deliverable that answers it. The agency problem is producing that report under your own brand, for twenty clients, without twenty dashboard subscriptions. The data-layer answer: fetch each client's raw records through one API, run one report template over them, and put your logo on the output. AgentGEO has no end-client surface at all — there is nothing to white-label because there was never a vendor UI in the deliverable to begin with.
Read this page with an AI
The unit of work is one client's month: a fixed query set, fetched on schedule, reduced to the four numbers clients actually read — mention rate, share of voice, citation share, and what changed — with the answer excerpts as receipts.
Get a free AI-visibility audit → · Read the docs → — No card, no account.
Get my free auditHow the agency workflow runs
- One workspace, per-client query sets. Keep each client's queries in a file next to their brand and competitor list. Twenty clients is twenty files and one loop — not twenty logins.
- Fetch on the reporting cadence. A monthly run of 30 queries × 3 engines is 90 records per client — 90 credits, a knowable line on your COGS that prices the retainer. Failed fetches cost zero.
- Render your template. Compute the numbers from the stored records and lay them out in your house style — a PDF, a Notion page, a slide. The
geo-reportskill produces the full write-up if an agent is doing the drafting.
while read -r query; do
curl -s https://api.agentgeo.org/v1/fetches \
-H "Authorization: Bearer $AGENTGEO_KEY" \
-H "Content-Type: application/json" \
-d "{\"query\": \"$query\", \"surfaces\": [\"chatgpt\", \"perplexity\", \"gemini\"]}" \
--max-time 200 \
| jq -c --arg q "$query" '.answers[] | {q: $q, engine: .surfaceKey, answer: .answerText, sources}'
done < clients/acme/queries.txt >> clients/acme/2026-07.jsonlEverything downstream reads that JSONL: this month's numbers, the diff against last month's file, and the quoted answer lines that make the report credible. When a client asks where a number came from, the answer is a line in a file you keep — not "the tool said so".
Put the answer excerpts in the report. "Perplexity's top answer names you second, after Northwind — here's the sentence" lands harder with clients than any chart, and it's sitting in answerText already.
Let your agent draft it
Over MCP, the geo-report skill — one of eight shipped in agentgeo-mcp — takes a brand, fetches the set, computes the metrics and drafts the narrative in one run. An account manager's edit pass turns it into the deliverable; the agent did the fetching and the arithmetic.
claude mcp add agentgeo -- npx -y agentgeo-mcp --key ag_live_...Alternatives
Some GEO dashboards sell agency tiers with white-label exports — workable if their template is your template and per-seat-per-client math clears your margin. The structural difference: their export is the ceiling of what you can deliver, while raw records make the report format yours to evolve. Client wants a Looker page instead of a PDF? Same records, different renderer. The comparison pages lay out where dashboards genuinely win.
More use cases
Agencies typically pair the report with ongoing share-of-voice monitoring between cycles, or go further and embed AI visibility into their own client portal — see all use cases.
Pilot the report on one client — or on your own agency: Get a free AI-visibility audit →
Get my free audit