geondex
Documentation

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

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 characters
  • prompt · string · required — The question a buyer asks an AI engine. 3–300 characters
  • url · string · required — The page on your domain that should be cited for PROMPT. At most 2,048 characters. A full URL
  • engines · ("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 of perplexity, openai, claude, gemini, grok
  • models · 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 · string
  • prompt · string
  • url · string
  • check · object
  • check.batchId · string
  • check.reused · boolean — A check of this prompt from the last 24 hours was reused
  • check.checkedAt · number
  • check.answered · string[]
  • check.citedBy · string[] — Engines that cite URL itself
  • yourPage · object
  • yourPage.url · string
  • yourPage.title · string
  • yourOtherPagesCited · object[] — Other pages on your domain the engines cited for PROMPT
  • yourOtherPagesCited[].url · string
  • yourOtherPagesCited[].engines · string[]
  • compared · object[]
  • compared[].url · string
  • compared[].host · string
  • compared[].engines · string[]
  • compared[].fetched · boolean
  • compared[].reason · string · optional
  • findings · 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 · string
  • findings[].evidence · object[]
  • findings[].evidence[].url · string
  • findings[].evidence[].quote · string
  • findings[].edit · object
  • findings[].edit.where · string
  • findings[].edit.text · string
  • credits · object
  • credits.check · number
  • credits.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.

HTTPWhen
400Bad input
401Missing or invalid key
402Out of credits
404Tool not available on this server
429Rate limited
502Upstream failure

Every error.code and what to do about it: Errors & rate limits.

On this page