{
  "markdown": "# geo-tool-check\n\n[![npm](https://img.shields.io/npm/v/geo-tool-check?color=a8e06a&label=npm)](https://www.npmjs.com/package/geo-tool-check)\n[![CI](https://github.com/geo-tool-com/geo-tool-check/actions/workflows/ci.yml/badge.svg)](https://github.com/geo-tool-com/geo-tool-check/actions/workflows/ci.yml)\n[![MCP Registry](https://img.shields.io/badge/MCP_Registry-io.github.shufflethis%2Fgeo--tool--check-7736ad)](https://registry.modelcontextprotocol.io/v0/servers?search=geo-tool-check)\n[![Node](https://img.shields.io/node/v/geo-tool-check?color=a78bfa)](https://www.npmjs.com/package/geo-tool-check)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n\n**Is this page readable for AI search?** One command answers it: crawler\naccess, structure, and citability for ChatGPT, Perplexity, Claude, and\nGoogle AI — scored 0–100 with concrete findings.\n\n```bash\nnpx geo-tool-check example.com\n```\n\n![Real run against www.geo-tool.com/en: 91/100 Excellent, 2047 words in 231 ms — directAnswers 25/25, structure 14/20, schemaMarkup 15/15, citations 12/15, multimedia 5/5, platformSpecific 20/20; one finding: no table for comparison questions](docs/assets/cli-demo.png)\n\n**Everything runs on your machine.** No account, no API key, no telemetry —\nnothing is ever sent to geo-tool.com. The score is computed by the same engine\nas the free [website audit on geo-tool.com](https://www.geo-tool.com), so the\nnumber here matches the number there.\n\n- **npm:** [`geo-tool-check`](https://www.npmjs.com/package/geo-tool-check) —\n  Node 18+, zero runtime dependencies\n- **MCP registry:**\n  [`io.github.shufflethis/geo-tool-check`](https://registry.modelcontextprotocol.io/v0/servers?search=geo-tool-check)\n  (stdio server, ships in the package)\n- **Hosted MCP, no install:** `https://www.geo-tool.com/mcp` (Streamable\n  HTTP) · manifest\n  [`/.well-known/mcp.json`](https://www.geo-tool.com/.well-known/mcp.json)\n- **Docs:** [Copy-paste examples](examples/) ·\n  [Getting started](docs/getting-started.md) · [CLI reference](docs/cli.md) ·\n  [GitHub Actions](docs/github-actions.md) ·\n  [How scoring works](docs/scoring.md) · [FAQ](docs/faq.md) ·\n  [Troubleshooting](docs/troubleshooting.md) ·\n  [Architecture](docs/architecture.md)\n\n## When to use it\n\n- _\"Is example.com readable for AI search?\"_ — full 0–100 score with findings\n- _\"Which AI crawlers does my robots.txt block?\"_ — GPTBot, OAI-SearchBot,\n  ClaudeBot, PerplexityBot, Google-Extended and more, each with what blocking\n  it costs you\n- _\"Why doesn't my pricing page show up in ChatGPT answers?\"_ — the findings\n  name what is missing (direct answer, structure, schema, evidence)\n- _\"Is this draft worth citing?\"_ — `check_citability` scores a text passage\n  with no network request at all\n- _Gate a deploy_ — `--min-score 70` turns the score into an exit code\n\n**Not** for measuring whether AI answers actually mention your brand — that\nis a different measurement: the hosted\n[geo-tool.com workspace](https://www.geo-tool.com) checks real ChatGPT,\nPerplexity, and Gemini answers for your buying-intent questions daily.\n\n## Quick start\n\n| I want to…                              | Run                                                     |\n| --------------------------------------- | ------------------------------------------------------- |\n| Score a page                            | `npx geo-tool-check example.com`                        |\n| See which AI crawlers robots.txt blocks | `npx geo-tool-check example.com --crawlers`             |\n| Gate a deploy in CI                     | `npx geo-tool-check https://example.com --min-score 70` |\n| Get machine-readable output             | `npx geo-tool-check example.com --json`                 |\n| Use it from an AI agent (MCP)           | `npx geo-tool-check --mcp` — [setup guide](docs/mcp.md) |\n\n## Use it from an AI agent (MCP)\n\nAlmost every MCP client accepts this block\n([per-client setup](docs/mcp.md), [config files to copy](examples/mcp/)):\n\n```json\n{\n  \"mcpServers\": {\n    \"geo-tool-check\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"geo-tool-check\", \"--mcp\"]\n    }\n  }\n}\n```\n\nClients that speak Streamable HTTP to remote servers can skip the install and\nuse the hosted endpoint instead — same tools, rate-limited, fetches run\nthrough geo-tool.com's infrastructure rather than your machine:\n\n```bash\nclaude mcp add --transport http geo-tool https://www.geo-tool.com/mcp\n```\n\nThe three tools, identical in both variants:\n\n| Tool                 | Arguments                  | What it answers                                                           |\n| -------------------- | -------------------------- | ------------------------------------------------------------------------- |\n| `check_ai_readiness` | `url`, optional `lang`     | Full 0–100 readiness score with per-category breakdown and findings       |\n| `check_ai_crawlers`  | `url`, optional `lang`     | Which AI crawlers (GPTBot, OAI-SearchBot, ClaudeBot, …) robots.txt blocks |\n| `check_citability`   | `content`, optional `lang` | How quotable a draft passage is — no network request at all               |\n\n## Claude Code plugin\n\nInstall once:\n\n```\n/plugin marketplace add geo-tool-com/geo-tool-check\n/plugin install geo-tool-check@geo-tool\n```\n\nThen check any page with one command — works immediately, no restart needed:\n\n```\n/geo-tool-check example.com\n```\n\n## FAQ\n\n**How do I check whether ChatGPT can read my website?**\n`npx geo-tool-check example.com`. Two things must be true: robots.txt must\nnot block OpenAI's crawlers, and the content must exist in the plain HTML —\nChatGPT's crawlers do not execute JavaScript.\n\n**Does robots.txt really affect AI visibility?**\nIt can end it. `Disallow: /` for GPTBot means OpenAI's systems never see\nyour content. The checker flags blocked **scored** crawlers separately from\ntraining-only bots, because the consequences differ.\n\n**Why does a JavaScript-rendered page score poorly?**\nBecause AI crawlers see what `curl` sees. If content only exists after\nclient-side rendering, models find an empty shell — the low score **is** the\nfinding. Fixes: SSR, static generation, or prerendering.\n\n**Do I need an llms.txt file?**\nOptional and cheap. Google states it does not use it; several AI tools read\nit. The check detects a real one and ignores SPA catch-all fakes.\n\n**Does geo-tool-check upload my content anywhere?**\nNo. Every fetch goes from your machine to the target site — never to\ngeo-tool.com. The build fails if a bundle would try.\n\nMore: [full FAQ](docs/faq.md).\n\n## Honest limits\n\nNode runs no JavaScript — and neither do GPTBot, ClaudeBot, or PerplexityBot.\nA client-rendered page that scores low here **is the finding, not a\nmeasurement gap**. To compare the crawler's view against the rendered page,\nuse the [browser extension](https://www.geo-tool.com/en/ext-report).\n\nThis checker measures whether a page **can** be read and cited. Whether AI\nsystems actually mention your brand in real answers is a different\nmeasurement: the hosted [geo-tool.com workspace](https://www.geo-tool.com)\nchecks real AI answers (ChatGPT, Perplexity, Gemini) for your buying-intent\nquestions daily.\n\n## Links\n\n- npm: [geo-tool-check](https://www.npmjs.com/package/geo-tool-check)\n- MCP Registry:\n  [io.github.shufflethis/geo-tool-check](https://registry.modelcontextprotocol.io/v0/servers?search=geo-tool-check)\n- Browser extension:\n  [geo-tool-com/geo-tool-extension](https://github.com/geo-tool-com/geo-tool-extension)\n- Smithery:\n  [tracktronaut/geo-tool-check](https://smithery.ai/server/tracktronaut/geo-tool-check)\n- Docs: [geo-tool.com/en/developers](https://www.geo-tool.com/en/developers)\n\n## License\n\nMIT. Built by [track by track GmbH](https://www.geo-tool.com).\n",
  "bytes": 7718,
  "sha": "09969dadbee443ac77b47d7abc02c7895fa9073326880ddb09fffc422a858bfc",
  "repo_slug": "shufflethis/geo-tool-check",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_shufflethis_geo_tool_check_15ca12a7/readme"
}