why_not_cited
Why AI engines cite other pages instead of URL, and what to change.
POST https://geondex.com/api/v1/why-not-cited- Cost: 20 credits + a check if none in 24 h
- MCP tool:
why_not_cited - Auth:
Authorization: Bearer gx_…(see Authentication) - Try it: Open why_not_cited in the playground
check_visibility tells you that you are not cited; this tells you why and what to change. It reads your page next to the pages AI engines cite instead for PROMPT, finds the causes — no direct answer, a different spelling of the key name, missing facts, a conflict between sources, no date or source, or the engines citing a different page of yours — and returns paste-ready edits, most important first. Every finding quotes a page it actually read. Reuses a check of the same prompt from the last 24 hours; otherwise runs one first. 20 credits, plus the check's credits when a new check runs. Apply the edits, then call check_visibility again later: the stored delta shows whether it worked.
Not available on every deployment: returns 404 not_found when this server is not configured for it. GET /me lists what is configured.
Request
Request body (JSON)
domain·string· required — Your site, e.g. ttsensei.com (no scheme). 3–253 charactersprompt·string· required — The question a buyer asks an AI engine. 3–300 charactersurl·string· required — The page on your domain that should be cited for PROMPT. At most 2,048 characters. A full URLengines·("perplexity" | "openai" | "claude" | "gemini" | "grok")[]· optional — Engines for a fresh check. Default: all five. Ignored when a check of this prompt from the last 24 hours is reused. 1–5 items. Each one ofperplexity,openai,claude,gemini,grokmodels·object· optional — Model per engine. Default = the model the engine's free consumer app uses, or a fast model from the same provider where that one is too slow. perplexity: sonar (Perplexity default, 2 credits); openai: gpt-5.6-luna (ChatGPT Free default, 8 credits); openai: gpt-5.6-sol (ChatGPT Plus default, 64 credits); claude: claude-sonnet-5-5 (Claude Sonnet 5.5, current Sonnet, 15 credits, default); claude: claude-opus-5-5 (Claude Opus 5.5, 27 credits); gemini: gemini-3.5-flash (Gemini 3.5 Flash, low thinking, 16 credits, default); grok: grok-4.3 (Grok 4.3, fast, 16 credits, default)
Example request
curl -s https://geondex.com/api/v1/why-not-cited -H "Authorization: Bearer gx_YOUR_KEY" -H "content-type: application/json" -d '{"domain":"ttsensei.com","prompt":"what blade and rubbers does Truls Moregard use","url":"https://ttsensei.com/proplayers/moregard-truls"}'Response
200 with the envelope every tool returns: a one-line summary, the full data, and credits: { charged, remaining }. On a free call charged is 0 and remaining is null.
Fields of data
domain·stringprompt·stringurl·stringcheck·objectcheck.batchId·stringcheck.reused·boolean— A check of this prompt from the last 24 hours was reusedcheck.checkedAt·numbercheck.answered·string[]check.citedBy·string[]— Engines that cite URL itselfyourPage·objectyourPage.url·stringyourPage.title·stringyourOtherPagesCited·object[]— Other pages on your domain the engines cited for PROMPTyourOtherPagesCited[].url·stringyourOtherPagesCited[].engines·string[]compared·object[]compared[].url·stringcompared[].host·stringcompared[].engines·string[]compared[].fetched·booleancompared[].reason·string· optionalfindings·object[]— Most important first. Every evidence quote is verbatim from a fetched page.findings[].cause·"direct_answer" | "naming" | "missing_facts" | "source_conflict" | "freshness" | "wrong_page_cited" | "other"findings[].severity·"high" | "medium" | "low"findings[].finding·stringfindings[].evidence·object[]findings[].evidence[].url·stringfindings[].evidence[].quote·stringfindings[].edit·objectfindings[].edit.where·stringfindings[].edit.text·stringcredits·objectcredits.check·numbercredits.comparison·number
Example response
Real-shaped, checked against the output schema by a test. Long lists are shortened.
{
"summary": "https://ttsensei.com/proplayers/moregard-truls: cited by 0 of 5 engines (check from the last 24 hours reused). 4 fixes (3 high): The page names him \"Truls Möregård\", but the question and every cited page write \"Truls Moregard\".",
"data": {
"domain": "ttsensei.com",
"prompt": "what blade and rubbers does Truls Moregard use",
"url": "https://ttsensei.com/proplayers/moregard-truls",
"check": {
"batchId": "d7deef0b-952b-4925-be60-c91035f888cd",
"reused": true,
"checkedAt": 1790786692924,
"answered": [
"perplexity",
"openai",
"claude",
"gemini",
"grok"
],
"citedBy": []
},
"yourPage": {
"url": "https://ttsensei.com/proplayers/moregard-truls",
"title": "Truls Möregård — Equipment, World Rank & Profile | TTSensei"
},
"yourOtherPagesCited": [
{
"url": "https://ttsensei.com/news",
"engines": [
"perplexity"
]
}
],
"compared": [
{
"url": "https://sites.google.com/view/247tabletennis/equipment-list/male-players-equipment-list/truls-moregard",
"host": "sites.google.com",
"engines": [
"perplexity",
"claude",
"grok"
],
"fetched": true
},
{
"url": "https://pingsunday.com/truls-moregard-equipment/",
"host": "pingsunday.com",
"engines": [
"claude",
"grok"
],
"fetched": false,
"reason": "HTTP 403"
},
{
"url": "https://www.stigasports.com/en/players-teams-tt/truls-moregardh",
"host": "stigasports.com",
"engines": [
"perplexity",
"openai"
],
"fetched": true
},
{
"url": "https://tabletennisteacher.com/truls-moregard-equipment-and-profile/",
"host": "tabletennisteacher.com",
"engines": [
"perplexity",
"grok"
],
"fetched": true
}
],
"findings": [
{
"cause": "naming",
"severity": "high",
"finding": "The page names him \"Truls Möregård\", but the question and every cited page write \"Truls Moregard\".",
"evidence": [
{
"url": "https://ttsensei.com/proplayers/moregard-truls",
"quote": "Truls Möregård"
},
{
"url": "https://tabletennisteacher.com/truls-moregard-equipment-and-profile/",
"quote": "Truls Moregard Equipment and Profile"
}
],
"edit": {
"where": "title",
"text": "Truls Moregard (Möregårdh) Equipment 2026 — Blade & Rubbers"
}
},
{
"cause": "direct_answer",
"severity": "high",
"finding": "The setup appears only in a timeline far down the page; the cited pages answer in their first lines.",
"evidence": [
{
"url": "https://ttsensei.com/proplayers/moregard-truls",
"quote": "The Swedish Rocket Nation"
}
],
"edit": {
"where": "first paragraph",
"text": "Truls Moregard uses the STIGA Cybershape Carbon CWT Truls Edition (straight handle) with Helix Platinum XH 2.2 mm on both sides."
}
},
{
"cause": "source_conflict",
"severity": "high",
"finding": "Older cited pages still list DNA Platinum XH; your page has the newer Helix Platinum XH but never says why the sources differ.",
"evidence": [
{
"url": "https://tabletennisteacher.com/truls-moregard-equipment-and-profile/",
"quote": "DNA Platinum XH"
}
],
"edit": {
"where": "first paragraph",
"text": "He switched from DNA Platinum XH to Helix Platinum XH in 2025; older guides describe his 2023–2024 setup."
}
},
{
"cause": "freshness",
"severity": "medium",
"finding": "No visible date or source for the current setup.",
"evidence": [
{
"url": "https://ttsensei.com/proplayers/moregard-truls",
"quote": "Equipment timeline"
}
],
"edit": {
"where": "first paragraph",
"text": "Last verified 2026-09-30 against STIGA's official player page."
}
}
],
"credits": {
"check": 0,
"comparison": 20
}
},
"credits": {
"charged": 20,
"remaining": 4210
}
}Errors
Every error has the body {"error":{"code":"…","message":"…"}} and is not charged.
| HTTP | When |
|---|---|
400 | Bad input |
401 | Missing or invalid key |
402 | Out of credits |
404 | Tool not available on this server |
429 | Rate limited |
502 | Upstream failure |
Every error.code and what to do about it: Errors & rate limits.