seoclaude
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| BING_API_KEY | No | Bing Webmaster Tools API key, from Bing Webmaster Tools → Settings → API access → API key. | |
| INDEXNOW_KEY | No | IndexNow key: 8–128 characters of a-z A-Z 0-9 -, published on your site at /<key>.txt containing only the key. | |
| GSC_CLIENT_ID | No | Google OAuth client ID. Can be used instead of saving the OAuth client JSON to ~/.config/seoclaude/credentials.json. | |
| GSC_CLIENT_SECRET | No | Google OAuth client secret. Can be used instead of saving the OAuth client JSON to ~/.config/seoclaude/credentials.json. | |
| PAGESPEED_API_KEY | No | Optional PageSpeed Insights API key. Not needed: without it, PageSpeed calls use your Google sign-in. | |
| GOOGLE_ADS_API_VERSION | No | Google Ads API version. Defaults to v26; set a newer one when Google sunsets it. | v26 |
| GOOGLE_ADS_CUSTOMER_ID | No | Google Ads ad account ID used by default by the ads tools. | |
| GOOGLE_ADS_DEVELOPER_TOKEN | No | Google Ads developer token from the Google Ads manager account API Center. | |
| GOOGLE_ADS_LOGIN_CUSTOMER_ID | No | Google Ads manager account ID, e.g. 123-456-7890. |
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 |
|---|---|
| list_sitesB | Lists every Search Console property the signed-in Google account can access. |
| search_analyticsB | Clicks, impressions, CTR (%) and average position, grouped by the chosen dimensions. Omit dimensions for site totals. |
| compare_periodsB | Compares performance between two date ranges by a dimension and returns overall totals plus the biggest gainers and losers by clicks. The previous range defaults to the equal-length period right before the current one. |
| find_opportunitiesA | Surfaces quick wins: page-one queries/pages with CTR far below the benchmark for their position (low_ctr), queries ranking 8–20 that could reach the top of page one (striking_distance), and queries where several pages compete for the same impressions (cannibalization). |
| inspect_urlB | Google's index status for a URL: coverage, canonical, last crawl, mobile usability and rich results. |
| list_sitemapsA | Submitted sitemaps with their last download time, warnings, errors and submitted/indexed URL counts. |
| submit_sitemapA | Submits or resubmits a sitemap to Search Console so Google re-reads it (e.g. after fixing canonical or URL problems). Note: there is no API for the 'Request indexing' button. |
| audit_pageA | Fetches a live URL and checks technical SEO signals: redirect chain, status, noindex (meta and X-Robots-Tag), canonical (missing, multiple, other host, redirecting target), hreflang (self-reference, host, return links), title/description length, html lang and JSON-LD validity. Returns the parsed signals plus a list of issues. |
| audit_sitemapA | Reads a sitemap (or sitemap index), checks that every URL is on one host, then audits an evenly spaced sample of pages with audit_page and summarizes issues by type. Catches sitewide problems such as canonicals pointing to a redirecting host or sitemap URLs that redirect. |
| bulk_inspectA | Runs URL Inspection on many URLs and summarizes Google's index status: coverage states, verdicts, user vs Google canonical mismatches and last crawl dates. URLs come from an explicit list, a sitemap (evenly sampled) or the pages with the most impressions. Quota: 2,000 inspections per property per day, 600 per minute. |
| ga_list_propertiesA | Lists every GA4 property (with its account) the signed-in Google account can access. |
| ga_reportB | Runs a GA4 report with any GA4 Data API dimensions and metrics (e.g. dimensions: date, landingPage, pagePath, sessionDefaultChannelGroup, sessionSourceMedium, country, deviceCategory, eventName; metrics: sessions, activeUsers, newUsers, screenPageViews, engagementRate, averageSessionDuration, bounceRate, conversions, keyEvents, totalRevenue). Returns rows plus metric totals. |
| ga_realtimeB | Activity in the last 30 minutes (e.g. dimensions: unifiedScreenName, country, deviceCategory, eventName; metrics: activeUsers, screenPageViews, eventCount). |
| detect_dropsA | Scans the daily Search Console series for sudden level shifts (e.g. impressions falling 90% from one week to the next), then for the largest shift lists the pages and queries that moved most across it. Use it first when traffic looks wrong, to find when it changed and what changed. |
| page_performanceA | Joins Search Console (impressions, clicks, CTR, position) with GA4 (sessions, engagement, duration, key events) per page path, and flags pages with low CTR for their position, low engagement, or search clicks but no GA sessions (often a tracking gap). |
| ai_trafficB | GA4 sessions referred by AI assistants (ChatGPT, Perplexity, Claude, Gemini, Copilot, DeepSeek, Grok, Meta AI and others), matched by session source rather than GA4's channel grouping, which misses some of them. Returns totals, share of all sessions, a per-assistant breakdown, top landing pages and a daily trend. |
| pagespeedA | Runs PageSpeed Insights (Lighthouse) for a URL: category scores, Core Web Vitals field data from CrUX for the page and origin (real users, when there is enough traffic), lab metrics, the biggest performance opportunities and failing SEO/accessibility/best-practice audits. Takes 10–40 seconds. |
| indexnow_submitA | Notifies IndexNow engines (Bing, Yandex, Seznam, Naver…) of new or changed URLs, from a list or a whole sitemap. Google does not use IndexNow. Needs a key (INDEXNOW_KEY or indexNowKey in config.json) served as a text file on the site, by default at /.txt; the file is checked before anything is sent. |
| bing_list_sitesA | Lists the sites in Bing Webmaster Tools for the configured API key (BING_API_KEY). |
| bing_reportA | Bing search and crawl data: top queries or pages (clicks, impressions, CTR %, position summed over the range), daily site traffic, daily crawl stats (pages crawled, crawl errors, pages in index) or the current crawl issues. Bing's index also feeds several AI search products, so this complements Search Console. |
| bing_submitB | Submits a sitemap and/or a batch of URLs to Bing Webmaster Tools, and returns the remaining daily URL quota. |
| adsense_list_accountsA | AdSense accounts the signed-in Google account can access, with their sites and approval state. |
| adsense_reportC | AdSense report with any dimensions and metrics (e.g. dimensions: DATE, MONTH, DOMAIN_NAME, PAGE_URL, COUNTRY_NAME, PLATFORM_TYPE_NAME, AD_UNIT_NAME, AD_FORMAT_NAME; metrics: ESTIMATED_EARNINGS, PAGE_VIEWS, PAGE_VIEWS_RPM, IMPRESSIONS, IMPRESSIONS_RPM, CLICKS, COST_PER_CLICK, PAGE_VIEWS_CTR, AD_REQUESTS_COVERAGE, ACTIVE_VIEW_VIEWABILITY). |
| page_revenueA | Joins AdSense earnings per page with Search Console performance for the same URLs, and flags revenue opportunities: pages with above-median page RPM that rank 8–20 (moving up pays off most) or have low CTR for their position. Earnings cover all traffic to the page, not only search. |
| ads_list_accountsA | Google Ads accounts the signed-in user can access: ID, name, currency, whether it is a manager or test account. |
| ads_keyword_ideasA | Google Ads Keyword Planner ideas from seed keywords and/or a page URL: average monthly searches, 12-month trend, competition and top-of-page bid range. Shows demand for topics a site does not rank for yet, which Search Console cannot. Requires a developer token with Basic access for real volumes. |
| ads_keyword_volumeA | Average monthly searches, 12-month trend, competition and bid range for an exact list of keywords (e.g. the queries a page already ranks for in Search Console). |
| ads_queryB | Runs a read-only Google Ads Query Language query. Examples: paid vs organic for the same query (needs Ads linked to Search Console) — SELECT paid_organic_search_term_view.search_term, metrics.organic_clicks, metrics.organic_impressions, metrics.clicks, metrics.impressions FROM paid_organic_search_term_view WHERE segments.date DURING LAST_30_DAYS; search terms that triggered ads — SELECT search_term_view.search_term, metrics.clicks, metrics.cost_micros, metrics.conversions FROM search_term_view WHERE segments.date DURING LAST_30_DAYS ORDER BY metrics.clicks DESC; campaigns — SELECT campaign.name, campaign.status, metrics.clicks, metrics.cost_micros FROM campaign WHERE segments.date DURING LAST_30_DAYS. cost_micros / 1,000,000 = account currency. |
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 28 tools
Most tools target a distinct platform+action (e.g. ga_report vs bing_report vs adsense_report, inspect_url vs audit_page vs bulk_inspect), so selection is usually clear. Minor overlap exists among analytical tools that all flag low CTR or opportunities (find_opportunities, page_performance, page_revenue), and between ads_keyword_ideas and ads_keyword_volume, but descriptions differentiate them adequately.
Nearly all names are snake_case and mostly verb_noun (list_sites, submit_sitemap, inspect_url, ga_report). The main deviation is inconsistent platform prefixing: some are prefixed (ga_, bing_, adsense_, ads_, indexnow_) while parallel operations like list_sites lack a prefix and pagespeed is a bare noun, but it stays readable.
28 tools is heavy and sits at the upper bound of comfortable scoping, but the server legitimately spans six platforms (Search Console, GA4, PageSpeed, Bing, AdSense, Google Ads), so most tools earn their place rather than being redundant.
Coverage across Search Console, GA4, PageSpeed, Bing, AdSense and Ads is broad, with read/analysis plus some write (sitemap submit, IndexNow, Bing submit). Gaps are mostly external-API limits (no indexing-request API, no backlink data, no CRUD for ads), which agents can work around.