GEO MCP by DigestSEO
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| check_visibilityA | Read the latest stored visibility snapshot, including scores and winning/losing prompts; call refresh_brand first for fresh data. Example: brand_id='acme', engines=['chatgpt','perplexity']. |
| get_visibility_historyB | Return daily or weekly visibility history with per-engine evidence. Example: brand_id='acme', days=30, granularity='weekly'. |
| compare_competitorsA | Compare stored brand and competitor mentions, share of voice, and prompt wins over a time window. Example: brand_id='acme', competitor_domains=['rival.com'], days=7. |
| get_citationsB | Return stored brand citation evidence plus the top engine-native source domains across the same tracked-prompt window. Example: brand_id='acme', days=14, engine='perplexity'. |
| get_content_gapsA | Prioritize content topics and formats from prompts where competitors beat the brand; falls back deterministically if AI analysis is unavailable. Example: brand_id='acme', max_recommendations=5. |
| refresh_brandA | Run a fresh scan on selected configured engines using the brand's active prompts and return after completion. Example: brand_id='acme', engines=['chatgpt','gemini']. |
| track_brandA | Create a local tracked brand and starter buyer-intent prompts; uses Claude Haiku when configured, otherwise three generic prompts. Example: brand_id='acme', name='Acme', domain='acme.com'. Call refresh_brand next. |
| update_brandA | Change tracked-brand metadata without replacing prompts or history. Example: brand_id='acme', competitors=['rival.com'], refresh_frequency='manual' pauses cron scans but keeps manual refresh. |
| list_brandsA | List tracked brands with metadata and active-prompt counts. Example: call before other tools when you need a brand_id. |
| list_promptsA | List a brand's active buyer-intent prompts without changing them. Example: brand_id='acme' before an audit or refresh. |
| set_promptsA | Replace a brand's active prompts with an exact supplied set; history is preserved. Example: brand_id='acme', prompts=['What is the best X for Y?']. |
| generate_promptsA | Replace active prompts with Claude-Haiku-generated buyer-intent prompts; requires ANTHROPIC_API_KEY and preserves history. Example: brand_id='acme', count=20. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 12 tools
Most tools are clearly separated by resource and action, and descriptions clarify temporal or comparison scope. The main ambiguity is between generate_prompts and set_prompts, which both replace active prompts and preserve history, and check_visibility versus get_visibility_history could cause a minor misselection for current data.
All tools use a consistent snake_case verb_noun pattern such as get_, list_, set_, refresh_, track_, update_, compare_, and check_. There are no mixed naming conventions or vague verbs.
Twelve tools is within the ideal 3-15 range and matches the server's scope: brand management, prompt management, visibility retrieval, and competitor analysis. Each tool has a distinct role without feeling padded or redundant.
The server covers brand creation/update/listing, prompt listing/setting/generation, and comprehensive visibility, citation, and competitor reads. The main gap is lifecycle deletion: there is no delete_brand or remove_prompt, though set_prompts can replace prompt sets as a partial workaround.