grain-seo-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GSC_OAUTH_SECRETS_FILE | Yes | Path to Google Cloud OAuth secrets JSON file |
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
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_startedA | Start here. Returns a complete map of this server's capabilities, active platforms, and recommended workflows. Call this once at the beginning of any session. |
| sites_listA | List all verified sites or properties across all authorized accounts |
| bing_seo_cannibalizationB | Detect pages competing for the same query in Bing. |
| bing_seo_lost_queriesC | Identify queries that lost significant traffic on Bing compared to the previous period. |
| bing_brand_analysisC | Analyze Brand vs Non-Brand performance on Bing. |
| bing_analytics_trendsC | Detect rising or declining trends in Bing query performance |
| sites_addB | Add a new site to Search Console or Bing Webmaster Tools |
| sites_deleteA | Remove a site from Search Console or Bing Webmaster Tools |
| sites_getA | Get information about a specific site |
| sites_health_checkB | Run a health check on one or all verified sites. Checks performance trends and status. |
| sitemaps_listB | List sitemaps for a site |
| sitemaps_getB | Get details about a specific sitemap |
| sitemaps_submitB | Submit a sitemap to Search Console or Bing Webmaster Tools |
| sitemaps_deleteB | Delete a sitemap from Search Console or Bing Webmaster Tools |
| analytics_queryC | Query search analytics data with optional pagination |
| analytics_performance_summaryA | Get the aggregate performance metrics (clicks, impressions, CTR, position) for the last N days. |
| analytics_compare_periodsA | Compare performance metrics between two date periods. Useful for week-over-week or month-over-month analysis. |
| compare_enginesB | Compare performance data between Google and Bing for a specific dimension (query, page, etc). |
| analytics_top_queriesB | Get top search queries by clicks or impressions for the last N days. |
| analytics_top_pagesC | Get top performing pages by clicks or impressions for the last N days. |
| analytics_by_countryB | Get performance breakdown by country for the last N days. |
| analytics_search_appearanceA | Get performance breakdown by search appearance type for the last N days. |
| analytics_trendsC | Detect traffic trends (rising/declining) for queries or pages. |
| analytics_anomaliesB | Identify unusual daily spikes or drops in traffic. |
| analytics_drop_attributionA | Analyze a significant traffic drop to identify if it was caused by specific devices (mobile/desktop) or coincides with known Google algorithm updates. |
| analytics_time_seriesA | Get advanced time series data including rolling averages, seasonality strength, and trend forecasting. Supports multi-dimensional analysis, metrics selection, and custom granularities. |
| inspection_inspectB | Inspect a URL to check its indexing status, crawl info, and health |
| inspection_batchB | Inspect multiple URLs for a site in batch |
| pagespeed_analyzeB | Run PageSpeed Insights analysis on a URL to get performance, accessibility, best practices, and SEO scores |
| pagespeed_core_web_vitalsB | Get Core Web Vitals for both mobile and desktop including LCP, FID, CLS, FCP, TTI, and TBT |
| seo_recommendationsC | Generate SEO recommendations based on site performance data |
| seo_low_hanging_fruitB | Find keywords with high impressions but low rankings that have potential for growth |
| seo_cannibalizationC | Detect keyword cannibalization - multiple pages competing for the same query |
| seo_low_ctr_opportunitiesA | Find queries with low CTR relative to their ranking position. Great for title tag optimization. |
| seo_striking_distanceA | Find keywords ranking in positions 8-15. These are high-priority targets to push to Page 1. |
| seo_lost_queriesB | Identify queries that lost all traffic (or dropped >80%) compared to the previous period. |
| seo_brand_vs_nonbrandC | Analyze performance split between Brand and Non-Brand queries using a regex. |
| seo_quick_winsA | Find pages with queries ranking on page 2 (positions 11-20) that could be pushed to page 1 |
| grain_content_decayA | Detect pages with consistent traffic decline across 3 consecutive 30-day windows. Only flags pages with strict monotonic decline (oldest > middle > newest). |
| grain_traffic_dropsA | Diagnose WHY traffic dropped: ranking loss, CTR collapse, search demand decline, or page disappeared. Compares current vs prior period. |
| grain_ctr_benchmarkA | Compare actual CTR per page against industry benchmarks by position. Classifies as Above/At/Below/Significantly below benchmark. |
| grain_verify_claimB | Anti-hallucination: re-query GSC to verify a specific numeric claim. Tolerance: position ±0.5, other metrics ±5%. |
| grain_topic_clusterA | Aggregate performance for all pages matching a URL path pattern (e.g. /blog/, /guides/). Returns top pages and queries. |
| grain_content_recommendationsB | Generate prioritized SEO recommendations by cross-referencing quick wins, content gaps, and cannibalization. Returns update/create/consolidate actions. |
| accounts_listA | List all authorized Google and Bing accounts |
| accounts_add_siteC | Authorize a specific site or domain for an account (Account Boundary) |
| accounts_removeC | Remove an authorized account |
| seo_primitive_ranking_bucketB | primitive: Get the ranking bucket for a specific position (e.g. Top 3, Page 1). |
| seo_primitive_traffic_deltaB | primitive: Calculate the delta between two traffic metrics (absolute and percentage). |
| seo_primitive_is_brandC | primitive: Check if a query is a brand query based on a regex pattern. |
| seo_primitive_is_cannibalizedC | primitive: Check if two pages are competing for the same query based on their metrics. |
| schema_validateA | Validate Schema.org structured data (JSON-LD) from a URL, HTML snippet, or JSON object. |
| util_star_repoA | Star the GitHub repository to support the project. Uses GitHub CLI if available, or opens a browser. |
| bing_sites_listB | List all sites verified in Bing Webmaster Tools |
| bing_sites_addB | Add a new site to Bing Webmaster Tools |
| bing_sites_deleteB | Remove a site from Bing Webmaster Tools |
| bing_sitemaps_listC | List sitemaps for a Bing site |
| bing_sitemaps_submitC | Submit a sitemap to Bing Webmaster Tools |
| bing_sitemaps_deleteC | Remove a sitemap from Bing Webmaster Tools |
| bing_analytics_queryB | Get query performance stats from Bing Webmaster Tools (Top Queries) |
| bing_analytics_pageC | Get page performance stats from Bing Webmaster Tools (Top Pages) |
| bing_analytics_page_queryB | Get query performance stats for a specific page from Bing Webmaster Tools |
| bing_get_top_queriesC | Alias for bing_analytics_query. Get top queries for a site. |
| bing_get_top_pagesC | Alias for bing_analytics_page. Get top pages for a site. |
| bing_analytics_query_pageC | Get combined query and page performance stats for a site |
| bing_rank_traffic_statsB | Get historical rank and traffic statistics for a site |
| bing_keywords_statsB | Get historical stats for a keyword in Bing |
| bing_related_keywordsB | Get related keywords and search volume from Bing |
| bing_crawl_issuesC | Get crawl issues for a site from Bing Webmaster Tools |
| bing_crawl_statsA | Get crawl statistics (indexed, crawled, errors) for a site |
| bing_url_submission_quotaB | Get remaining URL submission quota for Bing |
| bing_url_submitB | Submit a single URL to Bing for indexing |
| bing_url_submit_batchA | Submit multiple URLs to Bing for indexing in a single batch |
| bing_index_nowC | Submit URLs via IndexNow API (Bing, Yandex, etc.) |
| indexing_submit_urlA | Submit a URL for indexing (notify Google or Bing that a page was updated). Google Indexing API is officially for JobPosting/BroadcastEvent pages. |
| indexing_remove_urlA | Notify Google that a URL has been removed (e.g., expired job posting). Google only. |
| indexing_statusA | Check the notification status for a URL previously submitted to the Google Indexing API |
| indexing_batch_submitA | Submit multiple URLs for indexing in batch. Google: max 200 (daily quota), Bing: max 500. |
| bing_sites_healthA | Run a comprehensive health check on one or all verified Bing sites |
| bing_opportunity_finderC | Find high-potential 'low-hanging fruit' keywords in Bing |
| bing_seo_recommendationsB | Generate prioritized SEO recommendations for a Bing site |
| bing_striking_distanceA | Find keywords ranking positions 8-15 on Bing (near page 1) |
| bing_low_ctr_opportunitiesB | Identify high-ranking Bing queries with lower than expected CTR |
| bing_url_infoB | Get detailed indexing and crawl information for a URL in Bing |
| bing_link_countsB | Get inbound link counts for a site from Bing |
| bing_analytics_detect_anomaliesC | Detect performance anomalies in Bing traffic |
| bing_analytics_compare_periodsB | Compare performance between two date ranges in Bing |
| bing_analytics_drop_attributionC | Identify the likely cause of a Bing traffic drop |
| bing_analytics_time_seriesC | Advanced time series analysis for Bing performance data |
| analytics_page_performanceB | Get detailed page performance metrics from GA4 (sessions, views, engagement) |
| analytics_traffic_sourcesC | Analyze traffic sources (Channel, Source, Medium) in GA4 |
| analytics_organic_landing_pagesC | Get performance of organic landing pages in GA4 (matches GSC data) |
| analytics_content_performanceB | Analyze content performance by Content Group in GA4 (Requires Content Groups to be configured in GA4 Admin) |
| analytics_ecommerceB | Get ecommerce performance (products, revenue) from GA4 |
| analytics_realtimeA | Get realtime active users broken down by page, country, and device |
| analytics_user_behaviorB | Get user behavior breakdown (Device, Country, Engagement) in a single batch |
| analytics_audience_segmentsB | Get audience segmentation (New vs Returning, Age, OS) in a single batch |
| analytics_conversion_funnelC | Analyze top converting pages and events |
| analytics_pagespeed_correlationB | Correlate GA4 engagement metrics with PageSpeed Insights scores for top organic pages |
| page_analysisC | Compare GSC ranking data with GA4 behavior data for top pages to find opportunities |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| analyze-site-performance | |
| compare-performance | |
| find-declining-pages | |
| keyword-opportunities | |
| new-content-impact | |
| mobile-vs-desktop | |
| site-health-check | |
| investigate_traffic_drop | |
| find_quick_wins | |
| full_site_audit | |
| analyze_page | |
| platform_comparison | |
| content_opportunity_report | |
| executive_summary | |
| ga4_traffic_audit |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| sites | |
| sitemaps | |
| analytics-summary | |
| docs-dimensions | |
| docs-filters | |
| docs-search-types | |
| docs-patterns | |
| docs-algorithm-updates | |
| docs-bing-api | |
| docs-index-now | |
| docs-bing-dimensions | |
| docs-bing-filters | |
| docs-bing-search-types | |
| docs-bing-patterns | |
| docs-bing-algorithm-updates | |
| docs-indexing |
TDQS
Scored across 104 tools
Several tools are explicitly aliases of each other (bing_get_top_queries for bing_analytics_query, bing_get_top_pages for bing_analytics_page), and many bing_* tools mirror seo_* tools with only an engine difference (cannibalization, lost queries, striking distance, low CTR). The overlapping brand analysis tools and multiple URL submission tools further blur boundaries, making reliable tool selection very difficult.
Naming is inconsistent across the set: some tools use noun_verb (sites_list, sitemaps_submit, analytics_query), some use verb_noun (compare_engines, get_started), and many use noun phrases with no verb at all (seo_cannibalization, grain_content_decay, diagnostics, opportunity_matrix). The aliases also break expectation, such as bing_get_top_queries vs bing_analytics_query.
With 104 tools, this is an extreme count that far exceeds the well-scoped 3-15 range. The count is inflated by engine-specific duplicates, aliases, and many overlapping analytical variants rather than genuinely distinct capabilities.
The tool surface is broadly comprehensive, covering Google Search Console, Bing Webmaster Tools, GA4, PageSpeed, schema validation, indexing, and diagnostics. Minor gaps exist such as missing Google-side link or keyword research equivalents, but the core SEO workflow is well represented.