The dashboard is fine for ongoing monitoring. It is the wrong tool for a first-time client report. You need to set up a brand, add topics, write prompts, run them across four LLMs, scan the site, and pull the numbers into a deck. That is twenty clicks before you have anything to say.
The MCP server now covers the full setup-and-run loop. With Claude Code on top of it, the same job is a conversation. One prompt, a few minutes, a finished report.
Here is the workflow.
What changed in the MCP server
Until this week the AEO Copilot MCP server was read-only: list brands, pull results, fetch insights. Useful for asking Claude about a brand that already existed in your account. Useless for onboarding a new one.
The latest version adds the write side:
Combined with the existing get_insights, get_results, and get_recommendations, that is everything the dashboard does, exposed as tools an AI agent can call.
The server is open source: github.com/sofianbettayeb/aeo-copilot-mcp.
Install
If you already have Claude Code, one command:
Get the key at Settings → API. It starts with aeo_.
For Claude Desktop, edit claude_desktop_config.json:
Restart and you are connected.
The workflow: client URL to report
Open Claude Code. Paste this:
> I want to run a baseline AI visibility audit for a new client. Their website is https://acme.com. They sell project management software for engineering teams. Main competitors are Linear, Jira, and Asana. Use the AEO Copilot MCP to: 1) create the brand, 2) create five topic clusters that match how their buyers search (comparison, jobs-to-be-done, evaluation), 3) write 5 prompts per topic, the prompts should focus on listing the best options 4) run a technical scan, 5) run the prompts across all four LLMs, 6) wait for results, then summarise visibility, sentiment, top competitors, and the three highest-priority recommendations.
Claude calls the tools in order. create_brand first, then five create_topic calls, then five add_prompts calls, then scan_brand and run_brand_prompts in parallel. Once the runs complete it pulls get_insights and get_recommendations and writes the summary.
The whole loop runs in a few minutes of wall time. Most of that is the LLMs answering the prompts; the orchestration itself is seconds.
What you get back
A short brief, in conversation, structured the way you would write it yourself:
- Visibility score: 23% across all engines, weakest on Perplexity (11%)
- Sentiment: 62% neutral, 24% positive, 14% negative
- Competitive share: 18% (vs Linear 41%, Jira 22%, Asana 19%)
- Top three fixes: missing schema markup, no llms.txt, three topics under 30% visibility
Copy it into a doc, drop in screenshots from the dashboard, send.
What the report actually looks like
Here is a real one. Generated through the workflow above for Webflow, then laid out in a 6-page client-ready PDF by Flowsultants.
!Cover page: Webflow AI Visibility Baseline, composite score and executive scorecard
!Engine breakdown: ChatGPT, Claude, Perplexity, Google AIO with topic performance table
!3-step engagement plan and gap-prompts appendix
Open the full report (PDF, 6 pages) →
What this delivers for clients
Four things a client sees in 90 seconds, without you having to explain anything:
- A composite score with the math shown. Visibility 60%, technical readiness 25%, sentiment 15%. No black-box "AI score". Every input is visible and challengeable.
- A per-engine breakdown. Strong on ChatGPT and Claude, invisible on Google AIO. The fix list writes itself.
- A gap-prompts appendix. Every tracked prompt where the brand is missing in 0 or 1 of 4 engines, with the specific competitors winning each one. This is the page they keep open during the call.
- A 3-step engagement plan. Meet → Discovery → Project, with deliverables on each. Closes the report on a decision, not a vibe.
The whole document is generated from a single Claude Code conversation plus a layout template. Same workflow, swap the brand name, you have the next client report.
Why this is useful
Three reasons it changes how I run the first call with a new prospect.
It is concrete, not hypothetical. Most "AI visibility" pitches lean on industry-wide stats: "25% of search traffic is moving to LLMs by 2026." True, but it is not the prospect's number. The report is the prospect's number. 40% mention rate, 9% share of voice against five named competitors, 12 specific prompts where their brand is missing. The conversation moves from "should we care about this" to "what do we do about these twelve prompts."
It takes less than an hour. Setup is one Claude Code prompt. Execution runs in the background while the LLMs answer. Layout is a template. End to end, from "I want to look at this client" to "I have a finished PDF in my hand," is roughly forty-five minutes. That is the difference between an agency that can offer a baseline audit during the discovery call and one that schedules a second meeting to "come back with numbers."
It is an API, so automation has no ceiling. Every step in the workflow is a tool call. That means you can wrap it in a slash command (/audit https://newclient.com), schedule it to re-run weekly for ongoing monitoring, pipe results into Slack the moment a competitor's share-of-voice shifts, or generate twenty industry baselines overnight as cold outreach assets. The MCP is the surface; the workflow is whatever you build on top.
What to know before using it
A few honest considerations.
It is a starting point, not a final answer. The auto-generated prompts cover the obvious buyer questions. They will miss niche positioning, regional language, and the specific objections your client's sales team hears every week. Treat the first report as 70% complete; the last 30% is human editing.
The fastest path to value is using it as a baseline. Run the report on day one, then run it again in 30 days. The delta is the deliverable, not the absolute numbers. Visibility went from 23% to 38% on Topic A; Topic B did not move. That is what justifies the engagement.
You still need a layout. The MCP gives you data and prose. Turning it into a client-facing document is a 30-minute step in a tool of your choice (Figma, Notion, custom HTML template). Once you build the template, the marginal cost per report is zero.
How I use it
I run it before every discovery call. Not afterwards, not "we will send you a report next week." Before. The report is the meeting.
Open with the composite score and the trend line. Does the brand have a pulse in AI search at all? Then the engine breakdown: which LLMs are giving them oxygen and which are not. Then the competitor share of voice: five named competitors, their numbers. That last page is where the room goes quiet, because the prospect has not seen those numbers before, and they are usually losing.
That silence is the discovery call doing its job. The proposal that follows almost writes itself.
A note on prompt design
The auto-generated prompts are a starting point, not the final list. Claude does a reasonable job inferring buyer intent from a URL plus an industry, but it does not know the client's positioning, regional focus, or specific objections.
After the first run, look at the results. Find a topic where the brand should rank but does not. Add three to five sharper prompts under that topic and run again with run_brand_prompts, scoped via the optional topicId parameter so you only re-run the part you changed.
Where this is heading
The next pieces in the API are the industry indexes, which are brand-agnostic: track every entity cited across a category, not just one brand. Useful for pitches where the prospect has not picked a horse yet, or for the discovery phase before there is even a website to audit. They are already in the MCP server. There is a separate post on those.
For now: install the MCP, point Claude Code at a client URL, see how short the loop gets.
Get your API key →