---
title: ToolRouter — Tool Detail
description: Detailed documentation for a ToolRouter tool including skills, parameters, and examples.
url: https://toolrouter.com/tools/geo
---
# Generative Engine Optimization

Get cited by ChatGPT, Perplexity, Google AI Overviews, and Claude. Live AI visibility monitoring, citation source analysis, brand sentiment tracking, CORE-EEAT scoring, CITE domain authority, passage-level citability, and GEO optimization from crawler access to content writing.

- **Version:** 0.03
- **Categories:** search, marketing, analytics
- **Workflow:** check_ai_visibility → analyze_citation_sources → check_brand_sentiment → check_ai_crawlers → analyze_serp → analyze_competitors → analyze_content_gaps → audit_content → audit_domain → analyze_citability → optimize_content → optimize_meta → generate_schema → audit_entity → write_content → refresh_content

## Skills (16)

### Check AI Visibility (`check_ai_visibility`)

Check if your domain is being cited in live AI search results. Runs up to 10 queries through Perplexity AI and reports which ones cite your domain, your citation position, competing domains taking your slots, and actionable recommendations.

**Parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `domain` | string | Yes | Your domain to check visibility for (e.g. "example.com") |
| `queries` | array | Yes | AI search queries to check (1-10). Use queries your target audience would ask. |

**Returns:** Visibility score (0-100), per-query citation status, competing domains, and actionable recommendations

**Examples:**

*Check if your site appears in AI search for target queries:*

```json
{
  "domain": "example.com",
  "queries": [
    "best project management tools",
    "project management software comparison",
    "how to manage remote teams"
  ]
}
```

*Check visibility for a single high-value query:*

```json
{
  "domain": "myshop.com",
  "queries": [
    "best running shoes 2026"
  ]
}
```

### Analyze Citation Sources (`analyze_citation_sources`)

Find which domains AI engines are actually citing for your target queries. Runs queries through Perplexity AI, aggregates all cited sources, ranks them by frequency, and identifies source gaps — the authoritative domains being cited instead of you.

**Parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `queries` | array | Yes | AI search queries to analyze citation sources for (1-10) |
| `domain` | string | No | Your domain to show your position in the ranking (optional) |

**Returns:** Ranked citation sources across queries, your domain position, source gap analysis, and per-query breakdown

**Examples:**

*Find who AI cites for your target keywords and where you stand:*

```json
{
  "queries": [
    "best CRM for small business",
    "CRM software comparison 2026",
    "how to choose a CRM"
  ],
  "domain": "mycrm.com"
}
```

*Discover citation sources for a topic without checking your own position:*

```json
{
  "queries": [
    "kubernetes autoscaling best practices",
    "how to scale kubernetes pods"
  ]
}
```

### Check Brand Sentiment (`check_brand_sentiment`)

Analyse how AI search engines describe and frame your brand. Runs brand-related queries through Perplexity AI, then analyses the responses for sentiment, key claims, positive/negative signals, and overall brand framing. Auto-generates relevant queries if none provided.

**Parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `brand` | string | Yes | Brand name to analyse sentiment for |
| `website` | string | No | Brand website URL (optional — helps with query generation) |
| `queries` | array | No | Specific queries to test (optional — auto-generated if omitted). Up to 8. |

**Returns:** Brand sentiment score (0-100), positive/negative/neutral signals, overall AI framing, and per-query breakdown with recommendations

**Examples:**

*Check how AI describes your brand (auto-generates queries):*

```json
{
  "brand": "Notion",
  "website": "notion.so"
}
```

*Check sentiment for specific queries:*

```json
{
  "brand": "Linear",
  "queries": [
    "best project management tool for engineers",
    "Linear app review",
    "Linear vs Jira"
  ]
}
```

### Check AI Crawlers (`check_ai_crawlers`)

Check if AI crawlers can access your site. Parses robots.txt rules per bot, checks for llms.txt, and reports X-Robots-Tag headers.

**Parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `url` | string | Yes | The URL to check AI crawler accessibility for |

**Returns:** AI crawler accessibility score (0-100), per-bot status for 10 AI crawlers, robots.txt and llms.txt analysis, and issues

**Examples:**

*Check AI crawler access for a website:*

```json
{
  "url": "https://example.com"
}
```

*Check if blog is accessible to AI bots:*

```json
{
  "url": "https://example.com/blog"
}
```

### Audit Content Quality (`audit_content`)

Full 80-item CORE-EEAT content quality audit across 8 dimensions (Clarity, Organization, Referenceability, Exclusivity, Experience, Expertise, Authority, Trust). Returns per-item scores and top improvements.

**Parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `url` | string | Yes | The URL to audit content quality for |

**Returns:** CORE-EEAT scores across 8 dimensions (80 items), GEO/SEO/total/weighted scores, rating, veto status, top 5 improvements, and AI engine citation preferences

**Examples:**

*Audit a blog post for CORE-EEAT quality:*

```json
{
  "url": "https://example.com/blog/seo-guide"
}
```

*Audit a landing page content quality:*

```json
{
  "url": "https://example.com/pricing"
}
```

### Optimize Content for GEO (`optimize_content`)

Analyze content and provide GEO optimization recommendations using 6 techniques: definitions, quotable statements, authority signals, structure, factual density, and FAQ schema. Returns before/after scores with example rewrites.

**Parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `url` | string | Yes | The URL to optimize for GEO |
| `target_queries` | array | No | Target AI queries this content should appear for (optional) |

**Returns:** GEO optimization plan with 6 techniques, before/after scores, example rewrites, schema recommendations, and per-engine tips

**Examples:**

*Optimize a blog post for AI citations:*

```json
{
  "url": "https://example.com/blog/cloud-hosting-guide"
}
```

*Optimize for specific AI queries:*

```json
{
  "url": "https://example.com/blog/react-performance",
  "target_queries": [
    "how to optimize React performance",
    "React vs Vue performance"
  ]
}
```

### Analyze Citability (`analyze_citability`)

Score individual passages for AI citation likelihood. Identifies the most and least citable content, categorizes by citation type (definition, statistic, comparison, expert quote), and provides per-engine match scores for Google AI Overviews, ChatGPT, Perplexity, and Claude.

**Parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `url` | string | Yes | The URL to analyze passage-level citability for |

**Returns:** Overall citability score, top 10 citable passages with types, bottom 5 weak sections with fixes, missing content types, and per-engine match scores

**Examples:**

*Analyze citability of a guide:*

```json
{
  "url": "https://example.com/guides/kubernetes-scaling"
}
```

*Check citation potential of a comparison page:*

```json
{
  "url": "https://example.com/redis-vs-postgresql"
}
```

### Generate Schema Markup (`generate_schema`)

Generate optimized JSON-LD schema markup for a page based on its content type. Detects existing schemas, identifies missing ones, and generates complete markup including Article, FAQPage, HowTo, Product, BreadcrumbList, and Organization schemas aligned with GEO best practices.

**Parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `url` | string | Yes | The URL to generate schema markup for |
| `schema_type` | string | No | Specific schema type to generate (optional — auto-detected if omitted) (Article, FAQPage, HowTo, Product, SoftwareApplication, Organization, Review, ItemList) |

**Returns:** Generated JSON-LD schemas with detected content type, existing vs missing schemas, ready-to-paste HTML, and validation notes

**Examples:**

*Auto-detect and generate schemas for a blog post:*

```json
{
  "url": "https://example.com/blog/react-hooks-guide"
}
```

*Generate FAQPage schema for a help page:*

```json
{
  "url": "https://example.com/faq",
  "schema_type": "FAQPage"
}
```

### Audit Entity Presence (`audit_entity`)

Audit entity presence across knowledge graphs and AI systems. Evaluates 6 signal categories: structured data, knowledge base signals, NAP+E consistency, content-based signals, third-party mention indicators, and AI-specific signals. Returns a phased action plan for building entity recognition.

**Parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `url` | string | Yes | The URL to audit entity presence for (homepage recommended) |

**Returns:** Entity optimization score, primary entity detection, 6-category detailed audit, phased action plan, and schema recommendations

**Examples:**

*Audit entity presence for a company homepage:*

```json
{
  "url": "https://example.com"
}
```

*Audit entity for a personal brand site:*

```json
{
  "url": "https://johndoe.com"
}
```

### Audit Domain Authority (`audit_domain`)

Full 40-item CITE domain authority audit across 4 dimensions: Citation, Identity, Trust, and Eminence. Returns per-item scores, weighted CITE score by domain type, veto checks for manipulation signals, and prioritized action plan.

**Parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `url` | string | Yes | The URL to audit domain authority for (homepage recommended) |

**Returns:** CITE domain authority score across 4 dimensions (40 items), weighted by domain type, veto status, and prioritized improvements

**Examples:**

*Audit domain authority for a company site:*

```json
{
  "url": "https://example.com"
}
```

*Audit domain authority for a blog:*

```json
{
  "url": "https://blog.example.com"
}
```

### Analyze SERP & AI Answers (`analyze_serp`)

Analyze SERP composition and AI answer patterns for a query. Maps SERP features (AI Overviews, snippets, PAA, knowledge panels), analyzes top results, detects intent, recommends optimal content format, and scores AI citation opportunity per engine.

**Parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `query` | string | Yes | The search query to analyze SERP patterns for |
| `location` | string | No | Target location for search results (default: United States) [default: "United States"] |
| `device` | string | No | Device type for results (desktop, mobile) [default: "desktop"] |

**Returns:** SERP feature map, intent classification, top results analysis, content format recommendations, difficulty score, and AI citation opportunity per engine

**Examples:**

*Analyze SERP for a tech query:*

```json
{
  "query": "best practices for React performance optimization"
}
```

*Analyze SERP for a product query:*

```json
{
  "query": "CRM software for small business",
  "location": "United Kingdom",
  "device": "mobile"
}
```

### Write GEO-Optimized Content (`write_content`)

Write content optimized for both search engine ranking and AI citation using the CORE-EEAT framework and 6 GEO techniques. Outputs markdown with TL;DR box, comparison tables, FAQ section, proper heading hierarchy, and ready-to-use schema markup.

**Parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `topic` | string | Yes | The topic to write about |
| `content_type` | string | No | Type of content to write (blog_post, how_to_guide, comparison, landing_page, faq_page, alternative, best_of) [default: "blog_post"] |
| `target_keywords` | array | No | Target keywords to optimize for (optional) |
| `word_count` | number | No | Target word count (default: 2000) [default: 2000] |
| `tone` | string | No | Writing tone (professional, conversational, technical, casual) [default: "professional"] |

**Returns:** Complete markdown content with SEO-optimized title, meta description, GEO features (definitions, quotable statements, tables, FAQ), and schema markup

**Examples:**

*Write a GEO-optimized blog post:*

```json
{
  "topic": "Kubernetes autoscaling best practices",
  "content_type": "how_to_guide"
}
```

*Write a comparison article with specific keywords:*

```json
{
  "topic": "Redis vs PostgreSQL for caching",
  "content_type": "comparison",
  "target_keywords": [
    "redis vs postgresql",
    "caching database"
  ],
  "word_count": 3000
}
```

### Refresh Content for GEO (`refresh_content`)

Analyze existing content for refresh opportunities: outdated statistics, missing GEO elements (definitions, FAQ, tables), stale sources, new subtopics to add, and structural improvements. Returns section-by-section recommendations with estimated impact.

**Parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `url` | string | Yes | The URL of the content to refresh |
| `target_keywords` | array | No | Target keywords to optimize for during refresh (optional) |

**Returns:** Freshness score, urgency level, outdated items with updates, missing GEO elements, section-by-section recommendations, new subtopics, and estimated improvement

**Examples:**

*Analyze a blog post for refresh:*

```json
{
  "url": "https://example.com/blog/kubernetes-guide"
}
```

*Refresh with target keywords:*

```json
{
  "url": "https://example.com/blog/react-hooks",
  "target_keywords": [
    "react hooks 2026",
    "useEffect best practices"
  ]
}
```

### Optimize Meta Tags (`optimize_meta`)

Generate optimized title tags, meta descriptions, Open Graph tags, and Twitter Card tags for a page. Provides current vs optimized comparison, 3 alternative strategies (CTR, SEO, GEO), and ready-to-paste HTML implementation.

**Parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `url` | string | Yes | The URL to optimize meta tags for |
| `target_keyword` | string | No | Primary keyword to optimize for (optional) |

**Returns:** Current vs optimized meta tags comparison, 3 alternative strategies (CTR/SEO/GEO), and ready-to-paste HTML

**Examples:**

*Optimize meta tags for a product page:*

```json
{
  "url": "https://example.com/products/widget"
}
```

*Optimize with target keyword:*

```json
{
  "url": "https://example.com/blog/cloud-hosting",
  "target_keyword": "best cloud hosting 2026"
}
```

### Analyze Content Gaps (`analyze_content_gaps`)

Find content gaps your competitors cover but you don't. Compares topics, questions, formats, depth, freshness, and GEO gaps across up to 3 competitor URLs. Returns a prioritized content plan.

**Parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `url` | string | Yes | Your URL to analyze for content gaps |
| `competitor_urls` | array | No | Competitor URLs to compare against (up to 3) |
| `topic` | string | No | Topic focus area for gap analysis (optional) |

**Returns:** Content gap score, identified gaps by type, missing questions, missing formats, and prioritized content plan with GEO elements

**Examples:**

*Find content gaps vs competitors:*

```json
{
  "url": "https://example.com/blog/seo-guide",
  "competitor_urls": [
    "https://competitor1.com/seo",
    "https://competitor2.com/seo-guide"
  ]
}
```

*Analyze gaps for a topic without competitors:*

```json
{
  "url": "https://example.com/blog/kubernetes",
  "topic": "Kubernetes autoscaling"
}
```

### Analyze Competitor Strategy (`analyze_competitors`)

Analyze a competitor's SEO and GEO strategy: content depth, GEO readiness (definitions, quotable statements, FAQ schema, tables), technical SEO, authority signals, and weaknesses. Optionally compare against your own page to find differentiation opportunities.

**Parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `competitor_url` | string | Yes | Competitor URL to analyze |
| `your_url` | string | No | Your URL for comparison (optional) |

**Returns:** Competitor threat level, strengths/weaknesses, GEO/SEO analysis, differentiation opportunities, and prioritized action items

**Examples:**

*Analyze a competitor page:*

```json
{
  "competitor_url": "https://competitor.com/blog/topic-guide"
}
```

*Compare your page against a competitor:*

```json
{
  "competitor_url": "https://competitor.com/blog/seo",
  "your_url": "https://example.com/blog/seo"
}
```

## Quick Start

```bash
# Via CLI
TOOLROUTER_API_KEY=tr_live_xxx npx -y toolrouter-mcp call geo check_ai_visibility --domain example.com --queries best project management tools,project management software comparison,how to manage remote teams

# Via REST API
curl -H "Authorization: Bearer tr_live_xxx" \
     -d '{"tool":"geo","skill":"check_ai_visibility","input":{"domain":"example.com","queries":["best project management tools","project management software comparison","how to manage remote teams"]}}' \
     https://api.toolrouter.com/v1/tools/call
```

## Frequently Asked Questions

### Is this for AI citations or classic SEO rankings?

It is aimed at AI citations and visibility in systems like ChatGPT, Perplexity, Google AI Overviews, and Claude, while still using SEO-style analysis to improve the result.

### What kind of work can it do beyond auditing?

It can diagnose content, domain, entity, and citability gaps, then help optimize content, metadata, schema, and refreshed pages.

### Does it work with crawled content and competitor pages?

Yes. The workflow includes crawler access, SERP analysis, competitor analysis, and content-gap review before optimization.

### Do I need my own OpenRouter key?

No. The platform default is enough, and bringing your own OpenRouter key is optional.

---

## Get Started with ToolRouter

**Already connected?** Call any tool with `use_tool({ tool, skill, input })`. Browse tools with `discover` or visit https://toolrouter.com/llms-full.txt

**New to ToolRouter?** Connect with one command (no API key needed — auto-provisions on first use):

```bash
# MCP (Claude Code, Codex CLI)
claude mcp add toolrouter -- npx -y toolrouter-mcp

# MCP (Cursor, Windsurf, Cline, VS Code, Gemini CLI, Claude Desktop)
{"mcpServers":{"toolrouter":{"command":"npx","args":["-y","toolrouter-mcp"]}}}

# Claude Chat / Claude Cowork / Claude Mobile — add as a connector:
# Settings → Connectors → Add custom connector → URL: https://api.toolrouter.com/mcp

# ChatGPT — add as an app:
# Settings → Apps → Advanced settings → enable Developer mode → Create app → MCP Server URL: https://api.toolrouter.com/mcp

# CLI (works instantly, no restart needed)
npx -y toolrouter-mcp tools                    # browse all tools
npx -y toolrouter-mcp search "seo"             # search by keyword
npx -y toolrouter-mcp call seo analyze_page --url https://example.com
```

Free tools work immediately. For paid tools, visit https://toolrouter.com/claim to add credits.

All platforms: https://toolrouter.com/connect | Full catalog: https://toolrouter.com/llms-full.txt | Docs: https://toolrouter.com/docs