How a check works
What cited, position and the delta mean, which engines are asked, and the shape of every response.
One check, four engines
One check sends your prompt to four AI engines at the same time, each with web search on. Every engine answers with the pages it cited. You are cited when a cited page's host is your domain or a subdomain of it; position is that page's place in the engine's citation list. Every host that is not yours is counted as cited instead, ranked by how many engines chose it.
Because each engine builds its citation list differently, read a position against the same engine over time rather than against another engine.
Each engine gets 20 seconds. One that does not answer is reported as timed out, the others still come back, and the timeout is not charged. The whole call returns in under 25 seconds.
The delta
The result is stored under your key. The next check with the same domain and the same prompt (case and punctuation ignored) returns a delta: per engine, cited before and now, position before and now. Nothing runs on a schedule; if you want a weekly check, have your agent or a cron job call it.
history returns your past checks for a domain, newest first, and is free. Call it before re-checking to see whether a fresh check is worth the credits.
Page audit
audit_page fetches one URL and grades its structured data and answer structure. It is hygiene, not the lever: being readable is necessary, being cited is the goal.
What comes back
Every call, over REST or MCP, returns the same three parts: a one-line summary your agent can repeat, the full data, and what the call cost. A check, cut short:
{
"summary": "ttsensei.com cited by 2 of 4 engines that answered (perplexity #2, openai #3). Not cited by claude, gemini. Since 7 days ago: openai #5 → #3; claude dropped you.",
"data": {
"domain": "ttsensei.com",
"prompt": "best table tennis blade for beginners",
"engines": [
{ "engine": "perplexity", "status": "ok", "cited": true, "position": 2, … },
…
],
"citedInstead": [
{ "host": "www.tabletennisdaily.com", "engines": ["perplexity", "openai", "gemini"] }
],
"delta": { "firstCheck": false, "perEngine": [ … ] },
…
},
"credits": { "charged": 12, "remaining": 188 }
}On a free call charged is 0 and remaining is null. The full response for every call, field by field, is in the API reference.
Engines
Perplexity, ChatGPT, Claude and Gemini, each with web search enabled. Google organic rank and AI Overview presence are separate calls (google_rank). Per-engine notes on how citations are read are on /engines.
GET /me lists the engines this server can ask right now, and check_visibility accepts an engines list if you want fewer than four.