Use case4 min read2026-07-29

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.

How the agency workflow runs

  1. 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.
  2. 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.
  3. 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-report skill produces the full write-up if an agent is doing the drafting.
One client, one month, one loop
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.jsonl

Everything 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.

One line to install
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

FAQ

Direct answers to the questions this page raises.

No — and that's the design. AgentGEO returns the data; the report is whatever your template produces, under your brand, in your format. The geo-report skill drafts the narrative if you want an agent to do the first pass. What you'll never hit is a vendor logo you can't remove or a layout you can't change.

Count it: queries × engines × monthly runs = records = credits per client. A 30-query, 3-engine monthly report is 90 delivered records. Add your analysis time and margin on top — the data line of the COGS is fixed and public on the pricing page.

Yes. Keys and billing are workspace-level, not per-brand — client separation is your file and database structure. Usage-based billing means a paused client costs nothing while paused.

No — every plan is paid, and a workspace fetches nothing live until it has one. What costs nothing: the human-run audit, and ag_test_ keys, which return labelled demo records at zero credits — enough to build your report template before the first client run.

Keep reading

Where this page leads next.

Run these checks on your own brand

Two ways in. Send a URL and a person runs the fetches for you, free — or connect your agent over MCP, on a plan, and run them yourself. Either way you get the raw answers and their citations, never a score.