AI Visibility agent

Five numbers from Claude and GPT-6 Sol every morning, beside yesterday’s and the 7-day pool.

The questions a buyer types into an AI assistant are answered with a handful of names and a handful of sources. Whether yours is among them changes week to week, and nobody is told.

Running on our own company since Oct 15, 2026 · Claude · GPT-6 Sol · Risk: Low. Everything on this page is public; there is nothing to sign in for.

Goes inA probe question, the 20 frozen buyer questions, two command-line sessions that can do nothing but search the web (Claude Opus 5 and GPT-6 Sol), the vendor dictionary, and the previous readout
Comes outOne summary a day beside the previous readout’s and the 7-day pool: retrieved, mentioned, cited, agency named, the two control brands; its run record for the public log; and, on Fridays, a line in the weekly report
Human stepThe answers the scorer flags are read before they count, and our own count leaving zero is read in the answer’s text before it is published. The agent never changes a page
Runs onA machine you control: Node, the Claude Code CLI and the Codex CLI, each signed in to its own subscription. No browser

Tasks and outputs

What it takes on

Probe the sessions

Asks each engine what the measuring session can see: its tools, its folder, any instructions, files or connectors. A session that sees anything but the question stops the run before a single question is asked.

A clean probe, or a failed record

Ask the 20 questions

Asks each frozen buyer question once to Claude Opus 5 and once to GPT-6 Sol, from an empty, neutrally named folder, and keeps each answer with its sources and the search results the engine saw.

40 answers, kept on the machine

Score and summarise

Matches every answer against the brand’s spellings, its domain and the vendor dictionary, then writes the five numbers beside the previous readout’s and the 7-day pool, with the run record at the top of the same file.

analysis.json and summary.md

Who it is for: Teams whose buyers now ask Claude or ChatGPT for a shortlist, and who want to know every morning whether their pages turned up in the engine’s search, whether their name and site made it into the answer, which agencies did instead, and whether a change is theirs or the engine’s.

How we use it: We measured claw-world.app in two deep rounds of 200 answers each, on 2026-09-28 and 2026-10-12: ClawWorld was mentioned in 0 of 200 and cited in 0 of 200, both times. In the second round the control brands Profound and Peec each lost about ten mentions on Claude, so the engine itself had moved; three vendors entered Claude’s answers on the strength of their own articles; and none of the eleven pages we had published since late September was cited once. From mid-October 2026 it asks the same 20 questions every morning. Radar, our hosted monitor, runs its own nightly scans of most of these questions against the same two model families through a different OpenAI path; its numbers and this agent’s are not the same series and are not compared.

.agents/skills/ai-visibility/SKILL.mdDefinitions table of the skill

What each number is counted to

01Retrieved: answers whose search results listed a claw-world.app page, cited or not. A page has to be found before it can be cited, so this is the earliest number to move. The two deep rounds did not record search results.

02Mentioned: answers whose text names ClawWorld, Claw World or claw-world.app. A Las Vegas arcade is also called Claw World, so a hit is read in context before it counts.

03Cited: answers whose list of sources includes claw-world.app.

04Agency named: answers that name at least one done-for-you agency from the vendor dictionary, other than us. That place in the answer is the one we compete for, not the mention of any tool.

05Controls: answers naming Profound, and answers naming Peec. When both move together, the engine moved; a change in our numbers alone is ours.

06The noise band: at one answer a question a day, a control brand moving by three answers is noise. Week-on-week change is read from the 7-day pool of 280 answers. The only reading that is never noise is our own count leaving zero, and that one is read in the answer’s text before it is published.

07Counts are added, never rates averaged. A discarded answer leaves the denominator; a readout with no valid answer is not measured, not zero. A change to the questions, the dictionary or a definition moves the definitions version, and two versions are never set side by side.

Read from the skill fileEvery summary names the readout it is compared to and the dates of its 7-day pool

The rules the agent’s output is written to, from the file named above. This site prints no example output; what the agent has shipped is in its run log.

Workflow

How a run goes, step by step

Pick a step to see what goes in, what comes out, and where a person is involved.

Step 1 of 6

Probe

Starts one session per engine with the flags the measurement uses and asks what it can see. Claude Code runs in safe mode, with no settings sources, no MCP servers and WebSearch as its only tool; Codex runs with apps, plugins, the browser and computer use switched off.

Goes in

The two CLIs, each signed in to its own subscription

Comes out

A clean or dirty verdict, and the probe’s answers on the machine

Where a person steps in

None when it is clean. A dirty probe means no measurement that day: the record is marked failed at the probe step, and a person finds what leaked in.

Step 2 of 6

Ask

Asks the 20 questions once each to both engines, from an empty folder outside the user profile with a name that means nothing. Each answer is one file, so a run that is cut short resumes where it stopped; a usage limit pauses it for 15 minutes rather than counting as a failure.

Goes in

questions.json and the two sessions

Comes out

40 answer files, kept on the machine and never committed: each carries the account the question was asked from

Where a person steps in

None. A run that cannot finish all 40 records the answers it has, and the denominator says so.

Step 3 of 6

Score

Matches each answer by string against the brand’s spellings, its domain and the vendor dictionary: is the domain in the search results, is the name in the text, is the domain among the sources, which vendors are named. Flags the answers that mention the machine (a folder, a user name, an email) or our name.

Goes in

The answer files, brand.json, vendors.json, and review.json when it exists

Comes out

analysis.json

Where a person steps in

None at this step; the flagged answers go to the review.

Step 4 of 6

Summarise

Writes the five numbers beside the previous readout of the same kind, and the 7-day pool beside the 7 days before it, then the counts by question, by vendor and by cited domain, and the flagged answers by position. Opens the file with the run record: the numbers, the steps so far, and room for the narrative.

Goes in

This readout’s analysis and the previous ones

Comes out

summary.md: counts and positions, never the text of an answer

Where a person steps in

None.

Step 5 of 6

Review the flagged answers

A judgement session reads each flagged answer and records keep or discard, and for a hit on our name whether it is us or the arcade. The scorer and the summary run again with those verdicts. The session never asks an engine anything: it carries the whole repository, and what it asked would not be a measurement.

Goes in

The flagged answers and the agent’s changes table

Comes out

review.json, the record’s narrative, a re-scored summary

Where a person steps in

When the session cannot tell, the record waits for a person.

Step 6 of 6

Report

On Fridays, puts the week’s 7-day pool into the weekly report with one sentence of judgement. The whole summary is not pasted; the report is for reading.

Goes in

summary.md

Comes out

One line in the weekly report, on Fridays

Where a person steps in

A person reads the report.

Before you start

What you’ll need to bring

Company material

Your brand’s spellings and domain, the agencies and tools you compete with, and two control brands big enough to show when an engine moves.

Source material

Twenty questions a buyer of what you sell would ask an AI assistant, without your name in them, frozen once written. The agent asks them; it writes nothing on your site.

Platform account

A Claude subscription with the Claude Code CLI signed in, and a ChatGPT subscription with the Codex CLI signed in under its own CODEX_HOME. The questions spend their quota, 20 calls each a day. No password handed over.

Run environment

A machine with Node.js, the two CLIs and an agent runner that follows a written workflow. We use Claude Code. The sandbox folder sits outside your user profile; no browser is kept open.

Guides and files

Set it up yourself

The setup guide, and the files the agent is built from. You run it in your own environment, with your own accounts.

Open · no account neededA Claude Code skill (markdown instructions and the definitions table) plus six Node scripts: the isolated engine sessions, the scorer, one round of questions, the analysis, the summary and the review verdicts. Not packaged for public download yet — the setup guide below describes what they do; the managed tier runs it for you today.
Setup guide
  1. 01

    Runtime

    • Node.js 20 or later, for the six scripts.
    • An agent runner that follows a written workflow, for the judgement step — we use Claude Code. It runs after the scripts and never asks an engine anything itself.
  2. 02

    Browser setup

    • None. Both engines are asked through their command-line tools; nothing in this agent opens a browser.
  3. 03

    Account setup

    • A Claude subscription with the Claude Code CLI signed in, and a ChatGPT subscription with the Codex CLI signed in under its own CODEX_HOME, kept apart from the profile you use day to day.
    • Both runs spend that subscription’s quota: 20 calls each a day at this size. Nothing else is billed.
  4. 04

    Configuration

    • questions.json: the frozen questions, written the way a buyer would ask them and without your name. Changing one starts a new series.
    • vendors.json: the vendor dictionary, each name with its spellings and whether it is a done-for-you agency or a tool, and the control brands.
    • brand.json: your brand’s spellings, your domain, and the phrases that mark an answer as talking about the machine it was asked from.
    • The sandbox folder: outside your user profile and with a name that means nothing, because the folder name reaches the model through the system prompt. Our first attempt used aeo-measure-20q; three of thirteen Claude answers treated the asker as someone building an AEO tool, and the whole round was discarded.
  5. 05

    First run

    • Run --probe first and read what each engine lists: tools, folder, instructions, connectors. Anything beyond the question and web search is a leak to close before you measure.
    • Run one round.
    • Read every flagged answer before you trust a count.
Files · 7

SKILL.md

Workflow · Markdown. The steps above and the definitions table, as the runner reads them.

Workflow

engines.mjs

Script · Node. The isolated sessions: the only place the two CLIs are started, with the flags that shut out everything but web search.

Script

score.mjs

Script · Node. The string-matching definitions: retrieved, mentioned, cited, a vendor named, the machine leaking into an answer.

Script

measure.mjs

Script · Node. One round of questions, one file per answer, resumable; --probe asks the probe question only.

Script

analyze.mjs

Script · Node. Scores a round into analysis.json, honouring the keep and discard verdicts in review.json.

Script

summarize.mjs

Script · Node. Writes summary.md beside the previous readout and the 7-day pool, with the run record this log reads at the top.

Script

review.mjs

Script · Node. Records keep or discard for an answer, and whether a hit on the name is us.

Script

Not packaged for public download yet. The guide on the left describes what each one does, step by step, so you can rebuild the setup; the Hosted and Fully managed tiers run them for you today.

Rather have us run it?

Hosted: your accounts in a cloud browser we run, and you review what goes out. Fully managed: we set the strategy and run the agents.

Good to know

Where it stops and asks for you

  • The probe is not clean. Something the measuring session should not see reached it: a new global MCP server, a CLI update that changed a default. No question is asked that day; the record is marked failed at the probe step.
  • A usage limit is hit. The run pauses 15 minutes and goes on. A run that still cannot finish records the answers it has, and the denominator is the number of valid answers, not 40.
  • Our name appears in an answer. The scorer flags it and the review reads it: the arcade called Claw World counts as someone else. A first hit of ours is read in the answer’s text before the record says we were mentioned.
  • A pinned model is retired. The run stops and the record says so. A person picks the replacement, the definitions version moves, and readouts of two versions are not compared.

Risk notice

What to watch for

  • Isolation can break silently: a new global MCP server, or a CLI update that changes a default. Every run probes first, and a dirty probe means no measurement that day, recorded as failed.
  • Name collision: a Las Vegas arcade is also called Claw World. A hit on the name is read in context before it counts.
  • A pinned model can be retired. The record says so, the definitions version moves, and readouts before and after are not compared.
  • Subscription limits: the questions share a quota with everything else on the account. A run that cannot finish its 40 answers records the ones it has, with the denominator to match.

FAQ

Questions about this agent

Why not read the numbers off Radar?

Radar is the hosted product: only our staff can start its scans, which run on the team’s own subscription with up to ten questions a brand. This agent is the one you can run yourself with two command-line tools and questions of your own, and every reader of the page can rebuild it. The two series are kept apart.

Why Claude and GPT-6 Sol, and not ChatGPT or Gemini?

The Codex CLI asks OpenAI’s model with a web search tool, which is not the answer chatgpt.com gives, so the page names the model. No measuring path here asks Gemini yet: an engine joins with a probe of its own, a column of its own and a history that starts the week it is added.

Today’s numbers jumped.

At one answer a question a day, a control brand moving by three answers is noise. Read the 7-day pool; if Profound and Peec moved with it, the engine moved.

Why are the answers themselves not published?

Each answer carries the account the question was asked from: the Claude session’s system prompt includes it and cannot be switched off. The answers stay on the machine; the summary quotes counts and positions, never the text.