Tools Reference

Complete reference for all 9 GEO analysis tools available in Glippy MCP Server.

analyze_domain

Core

Run a comprehensive GEO readiness analysis on a domain. Checks robots.txt, llms.txt, homepage HTML (16 scoring categories), sitemap.xml, and security headers.

Parameters
ParameterTypeRequiredDescription
domainstringYesDomain to analyze (e.g., "example.com"). No https:// prefix.
max_pagesintegerNoPages to crawl (1-10). Default: 10.
render_modeenumNo"static" (default), "auto" (static with Chrome fallback on bot-block), or "chrome" (always Chrome). See Render Modes.
output_formatenumNo"text" (default) or "json". Use JSON to pass results to export_report.
Example
Analyze example.com for GEO readiness
Returns
  • Overall GEO score (0-100) with letter grade
  • Page type detection (article, product, homepage, etc.)
  • 16 category scores with pass/fail/warn checks
  • robots.txt analysis with AI crawler access
  • llms.txt presence and content preview
  • Sitemap discovery status

check_robots_txt

Check a domain's robots.txt specifically for AI crawler access rules. Reports which crawlers (GPTBot, ClaudeBot, etc.) are blocked or allowed.

Parameters
ParameterTypeRequiredDescription
domainstringYesDomain to check. No https:// prefix.
Example
Which AI crawlers are blocked on example.com?
AI Crawlers Detected

GPTBot, Google-Extended, CCBot, anthropic-ai, ClaudeBot, Bytespider, PerplexityBot, ChatGPT-User, AmazonBot, cohere-ai

See also

Auditing your own site? Make sure GlippyBot itself is allow-listed — see the GlippyBot crawler info & allow-list guide for the User-Agent string and robots.txt snippets.

check_llms_txt

Check if a domain has an llms.txt file — the emerging standard for providing context to LLMs about a site's purpose and content.

Parameters
ParameterTypeRequiredDescription
domainstringYesDomain to check. No https:// prefix.
Example
Does example.com have an llms.txt file?

get_geo_summary

Get a concise GEO readiness summary: overall score, grade, top 3 strengths, and top 3 issues. Use for quick assessments.

Parameters
ParameterTypeRequiredDescription
domainstringYesDomain to check. No https:// prefix.
render_modeenumNo"static" (default), "auto", or "chrome". See Render Modes.
Example
Give me a quick GEO summary of example.com

compare_domains

Pro

Analyze multiple domains in parallel and compare their GEO scores side by side. Perfect for competitive analysis.

Parameters
ParameterTypeRequiredDescription
domainsarray[string]Yes2-50 domains to compare. No https:// prefix. For more than 50, run multiple times and merge the results.
max_pagesintegerNoPages per domain (1-10). Default: 10.
render_modeenumNo"static" (default), "auto", or "chrome". Applied per domain. See Render Modes.
output_formatenumNo"text" (default) or "json". Use JSON to pass results to export_bulk_report.
Example
Compare GEO scores: example.com, competitor1.com, competitor2.com

analyze_sitemap

Pro

Fetch a sitemap XML, extract URLs, and analyze each page. Supports regular sitemaps and sitemap index files.

Parameters
ParameterTypeRequiredDescription
sitemap_urlstringYesFull URL to sitemap (e.g., "https://example.com/sitemap.xml")
max_urlsintegerNoMax URLs to analyze (1-50,000). Default: all found.
rate_limitnumberNoRequests/second per domain (0.1-100). Default: 5.
render_modeenumNo"static" (default), "auto", or "chrome". Applied per URL. See Render Modes.
output_formatenumNo"text" (default) or "json". Use JSON to pass results to export_bulk_report.
Example
Analyze all pages in https://example.com/sitemap.xml

analyze_urls

Pro

Run GEO analysis on a specific list of URLs. URLs can span multiple domains.

Parameters
ParameterTypeRequiredDescription
urlsarray[string]YesFull URLs to analyze (1-50,000). Include https://.
rate_limitnumberNoRequests/second per domain (0.1-100). Default: 5.
render_modeenumNo"static" (default), "auto", or "chrome". Applied per URL. See Render Modes.
output_formatenumNo"text" (default) or "json". Use JSON to pass results to export_bulk_report.
Example
Analyze these pages: https://example.com/about, https://example.com/pricing

export_report

Generate a styled, shareable report in Markdown or HTML format — matching the Glippy browser extension's export.

Parameters
ParameterTypeRequiredDescription
formatenumYes"markdown", "markdown_full", or "html"
domainstringNo*Domain to analyze. No https:// prefix.
max_pagesintegerNoPages to crawl (1-10). Default: 10. Ignored if analysis_result provided.
render_modeenumNo"static" (default), "auto", or "chrome". Ignored if analysis_result provided. See Render Modes.
analysis_resultobjectNo*Pre-computed result from analyze_domain (with output_format='json').

*Provide either domain or analysis_result

Example
Generate an HTML report for example.com

export_bulk_report

Pro

Generate a styled report for bulk analysis: domain comparison, URL list, or sitemap crawl.

Parameters
ParameterTypeRequiredDescription
formatenumYes"markdown" or "html"
domainsarray[string]No*Compare 2-50 domains. No https:// prefix.
urlsarray[string]No*Analyze 1-50,000 URLs. Include https://.
sitemap_urlstringNo*Full URL to sitemap to crawl.
analysis_resultsobjectNo*Pre-computed results from compare_domains, analyze_urls, or analyze_sitemap (with output_format='json').
max_pagesintegerNoFor domains: pages per domain (1-10). Default: 10.
max_urlsintegerNoFor sitemap: max URLs to analyze (1-50,000).
rate_limitnumberNoRequests/second per domain (0.1-100). Default: 5.
render_modeenumNo"static" (default), "auto", or "chrome". Ignored if analysis_results provided. See Render Modes.

*Provide exactly one of: domains, urls, sitemap_url, or analysis_results

Example
Generate an HTML comparison report for example.com and competitor.com

Render Modes

Reference

Every analysis tool accepts a render_mode parameter controlling how HTML is fetched for scoring. Some sites (Cloudflare, Akamai, DataDome, PerimeterX, Incapsula) block plain Node fetches; Chrome-backed modes drive a real browser to get past them. Auditing your own site? The cleaner fix is to allow-list the GlippyBot User-Agent — see the GlippyBot allow-list guide.

Modes
ModeBehaviorUse when
static (default)Plain Node fetch. Fast, no Chrome needed.Targets don't block bots, or you want the static-crawler view.
autoStatic first; retry via Chrome if the response looks bot-blocked (401/403/407/429/503 or empty 2xx).Mixed workloads — most sites stay on the fast path, only blocked ones pay the Chrome cost. Recommended for competitive audits.
chromeEvery URL fetched via Chrome. Slowest, most resilient.Target aggressively detects headless, or you want uniform Chrome rendering.
Result field

The returned analysis includes a renderMode field indicating which path ran:

ValueMeaning
staticStatic fetch succeeded; Chrome not invoked.
chromeLaunched directly via Chrome (explicit mode).
chrome-fallbackStatic fetch was blocked; Chrome recovered a 2xx.
chrome-blocked-<code>Chrome was tried but also got blocked with the given status.
static-blockedStatic fetch failed and Chrome was unavailable or errored.
Chrome setup

Auto and chrome modes need a local Chrome/Chromium binary. The server auto-detects from CHROME_PATH, PUPPETEER_EXECUTABLE_PATH, or common install paths (Windows: C:\Program Files\Google\Chrome\Application\chrome.exe; macOS: /Applications/Google Chrome.app/Contents/MacOS/Google Chrome; Linux: /usr/bin/google-chrome). If none is found, render_mode: "static" continues to work; other modes will record static-blocked.

Attaching to your own Chrome

Sites that fingerprint the headless build can still block the server-launched browser. Launch a separate Chrome with remote debugging and have the server attach to it by setting CHROME_REMOTE_URL in the MCP server env:

# macOS
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
  --remote-debugging-port=9222 --user-data-dir=/tmp/glippy-chrome &

# Windows (PowerShell)
& "C:\Program Files\Google\Chrome\Application\chrome.exe" `
  --remote-debugging-port=9222 --user-data-dir=C:\Temp\glippy-chrome

# Linux
google-chrome --remote-debugging-port=9222 --user-data-dir=/tmp/glippy-chrome &

# Then in your MCP config env:
#   CHROME_REMOTE_URL=http://localhost:9222

Using a dedicated --user-data-dir keeps this session isolated from your normal browsing. When attached, the fetcher leaves UA/headers/stealth untouched so requests look identical to a human browsing from that profile.