geondex
Documentation

MCP server

Install the Geondex MCP server in Claude Code, Cursor, VS Code, Windsurf, Codex, Claude Desktop or your own agent and ask five AI engines about your site.

Your agent can already write GEO advice and read robots.txt. It cannot ask Perplexity, ChatGPT, Claude, Gemini and Grok the same question and compare who they cite, and it cannot remember last month. That is what this server adds.

Install

Get a key on your account page. Every client sends it the same way: an Authorization: Bearer gx_… header on https://geondex.com/mcp. Replace gx_YOUR_KEY below with your key.

Claude Code

For every project on this computer (recommended), run once in your terminal:

claude mcp add --scope user --transport http geondex https://geondex.com/mcp --header "Authorization: Bearer gx_YOUR_KEY"

--scope user saves Geondex in your user config, so it works in every folder. For the current project only, leave --scope user out:

claude mcp add --transport http geondex https://geondex.com/mcp --header "Authorization: Bearer gx_YOUR_KEY"

Check it with claude mcp list, or type /mcp inside Claude Code.

Cursor

Add to .cursor/mcp.json in your project, or ~/.cursor/mcp.json for every project:

{
  "mcpServers": {
    "geondex": {
      "url": "https://geondex.com/mcp",
      "headers": { "Authorization": "Bearer gx_YOUR_KEY" }
    }
  }
}

VS Code (GitHub Copilot agent mode)

Add to .vscode/mcp.json. VS Code asks for the key once and stores it securely, so it never sits in the file:

{
  "inputs": [
    { "type": "promptString", "id": "geondex-key", "description": "Geondex API key", "password": true }
  ],
  "servers": {
    "geondex": {
      "type": "http",
      "url": "https://geondex.com/mcp",
      "headers": { "Authorization": "Bearer ${input:geondex-key}" }
    }
  }
}

Windsurf

Open the MCP settings in Cascade, choose to view the raw config, and add this to mcp_config.json:

{
  "mcpServers": {
    "geondex": {
      "serverUrl": "https://geondex.com/mcp",
      "headers": { "Authorization": "Bearer gx_YOUR_KEY" }
    }
  }
}

OpenAI Codex CLI

Put your key in the GEONDEX_API_KEY environment variable, then run once. Codex reads the key from the variable, so it never sits in a config file:

codex mcp add geondex --url https://geondex.com/mcp --bearer-token-env-var GEONDEX_API_KEY

Or add it to ~/.codex/config.toml by hand:

[mcp_servers.geondex]
url = "https://geondex.com/mcp"
bearer_token_env_var = "GEONDEX_API_KEY"

Claude Desktop

Claude Desktop reaches remote servers through a small local bridge (needs Node.js). Settings → Developer → Edit Config, then add to claude_desktop_config.json and restart:

{
  "mcpServers": {
    "geondex": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://geondex.com/mcp", "--header", "Authorization: Bearer ${GEONDEX_API_KEY}"],
      "env": { "GEONDEX_API_KEY": "gx_YOUR_KEY" }
    }
  }
}

On Windows, spaces inside "args" can break. Use this form instead:

"args": ["-y", "mcp-remote", "https://geondex.com/mcp", "--header", "Authorization:${GEONDEX_AUTH}"],
"env": { "GEONDEX_AUTH": "Bearer gx_YOUR_KEY" }

Your own agent on the OpenAI API

The Responses API calls remote MCP servers for you. Pass the key in the tool's headers:

curl https://api.openai.com/v1/responses -H "Authorization: Bearer $OPENAI_API_KEY" -H "content-type: application/json" -d '{"model":"gpt-5","tools":[{"type":"mcp","server_label":"geondex","server_url":"https://geondex.com/mcp","headers":{"Authorization":"Bearer gx_YOUR_KEY"},"require_approval":"never"}],"input":"Is example.com cited by AI engines for best example product?"}'

The same tool block works in the OpenAI Agents SDK as a hosted MCP tool.

ChatGPT

The ChatGPT app connects to MCP servers only through OAuth sign-in. It cannot send an API key, so Geondex does not work in ChatGPT yet. Use Codex, or the OpenAI API above.

Any other client, or raw HTTP

The endpoint speaks streamable HTTP and holds no session. Any client that can send a header works. For raw HTTP, your accept header must list both application/json and text/event-stream. Sending only one gets you a 406.

curl -X POST https://geondex.com/mcp -H "Authorization: Bearer gx_YOUR_KEY" -H "content-type: application/json" -H "accept: application/json, text/event-stream" -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Tools

ToolWhat it doesCost
check_visibilityAsk five AI engines whether your domain is cited, right now2–64 credits / engine, by model
why_not_citedWhy AI engines cite other pages instead of URL, and what to change20 credits + a check if none in 24 h
ai_answersThe full answer each AI engine gives to a prompt, with its sources2–64 credits / engine, by model
ai_mentionsReal AI answers that mention your brand or cite your site35 credits
ai_citationsThe pages and domains AI answers cite when they mention you35 credits
historyYour stored record of past checks for your domainFree
suggest_promptsBuyer-intent questions to check your domain against1 credit
google_rankGoogle position for a keyword, plus AI Overview presence1 credit
keyword_volumeMonthly search volume for up to 1,000 keywords1 / 10 keywords, min 20
ai_keyword_volumeMonthly AI search volume for up to 1,000 keywords1 / 10 keywords, min 5
keyword_ideasKeyword ideas for a seed phrase, with volume, difficulty and intent7 credits
ranked_keywordsThe keywords a domain ranks for on Google, by traffic7 credits
domain_overviewA domain's Google keywords, traffic and position spread3 credits
backlinksBacklinks, referring domains, authority rank and spam score7 credits
check_crawlersWhether robots.txt blocks the crawlers that cite youFree
audit_pageGrade one URL's structured data for AI citation1 credit
usageCredits left, spend per tool this cycle, and your recent callsFree

Response times: check_visibility and ai_answers up to 30 s, 45 s if a premium model is picked; ai_mentions and ai_citations up to 30 s; the other search-data calls, suggest_prompts and audit_page up to 10 s; check_crawlers up to 3 s; history and usage up to 2 s. keyword_volume takes up to 1,000 keywords in one call, and up to 200 keywords cost the same 20 credits, so send them together.

Each tool name links to its REST reference: the arguments are the same, and so is the JSON that comes back.

Three prompts to try

  1. Check ttsensei.com for "best table tennis blade for beginners" on all five engines and tell me who is cited instead of me.
  2. Suggest five buyer questions for aigregator.com, check each one, and list the engines where I am missing.
  3. Re-run last week's checks for ttsensei.com and tell me what changed. Then look up Google rank for the ones where I lost a citation.

What comes back

Every tool returns a one-line summary first, then the full JSON. Agents act on the line and read the JSON when they need detail:

ttsensei.com cited by 1 of 5 engines that answered (openai #3). Not cited by perplexity, claude, gemini, grok. Since 6 days ago: openai #5 → #3; claude dropped you.

position is a page's place in that engine's own citation list, so compare it over time for one engine rather than across two different engines.

Every field of every response is in the API reference — MCP returns the same JSON.

Errors

A bad or missing key is refused before any tool runs: HTTP 401 with a JSON-RPC error whose data.code is invalid_api_key. Over 1,000 requests a day on one key gets HTTP 429, data.code rate_limited, and a Retry-After header.

A tool that fails comes back as a normal tool result with isError: true and one line of text, code: message, using the same codes as the REST API. For example:

credits_exhausted: This call needs 57 credits; you have 5. Your free plan gives 500 credits a month — upgrade or buy a pack at https://geondex.com/account/billing.

A call that fails is not charged. The full list of codes is on Errors & rate limits.

Limits

Most tools return in under 25 seconds; check_visibility and ai_answers can take up to 45 seconds if a premium model is picked. An engine that does not answer within its model's timeout (30 seconds by default, 45 for a premium model) is reported as timed out and is not charged. Keys are limited to 1,000 requests a day. When credits run out you get a clear error with a link to upgrade or buy a pack; nothing is queued and nothing is charged automatically. Prices are on /pricing.

Prefer plain HTTP? The same sixteen calls are on the REST API. Want your agent to know how to use them well? Add the agent skills.

On this page