{"$schema":"https://modelcontextprotocol.io/schema/draft/server-card.schema.json","serverInfo":{"name":"thatseoagent","title":"That SEO Agent MCP","version":"1.0.0","description":"SEO analysis MCP server with 57 tools across Google Search Console, Google Analytics 4, PageSpeed Insights, and site-management workflows.","vendor":"That SEO Agent","homepage":"https://thatseoagent.com","documentation":"https://thatseoagent.com/mcp-server-for-seo","license":"Proprietary"},"transport":{"type":"streamable-http","endpoint":"https://thatseoagent.com/api/mcp","methods":["GET","POST","DELETE"]},"authentication":{"type":"oauth2","authorization_server":"https://thatseoagent.com/.well-known/oauth-authorization-server","protected_resource":"https://thatseoagent.com/.well-known/oauth-protected-resource","bearer_methods_supported":["header"],"apiKey":{"header":"Authorization","scheme":"Bearer","issuance":"https://thatseoagent.com/dashboard/settings/api-keys"}},"capabilities":{"tools":{"listChanged":false},"resources":{"listChanged":false,"subscribe":false},"prompts":{"listChanged":false},"logging":{}},"toolCount":57,"toolsByCategory":{"SEO":15,"Site management":7,"Google Analytics 4":8,"Google Search Console":26,"PageSpeed":1},"tools":[{"name":"ai_visibility_score","title":"AI Visibility Score","description":"Analyzes structured data, knowledge graph presence, content signals, and AI bot access — factors observed to correlate with AI citation in research literature. Returns a directional 0-100 score with per-layer breakdown. No AI platform publishes an official citation scoring standard; results are a best-effort heuristic.","category":"SEO","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"complete_task","title":"Complete Task","description":"Mark an SEO task as done. Requires the task UUID (from get_tasks).","category":"Site management","readOnly":false,"destructive":true,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"crawl_site","title":"Crawl Site","description":"BFS-crawl a site and report broken links, deep pages, thin content, duplicate titles and meta descriptions across all discovered pages.","category":"SEO","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"create_shared_report","title":"Create Shared Report","description":"Generates a public shareable URL for a site audit snapshot. Reports expire after 14 days and are viewable without an account. GSC and GA4 are optional — reports can be generated from HTTP-only audit data. Compiles from persistent audit data when available; falls back to cached tool data otherwise.","category":"Site management","readOnly":false,"destructive":true,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"create_task","title":"Create Task","description":"Add a new SEO action-item task to a site's task list.","category":"Site management","readOnly":false,"destructive":true,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"delete_task","title":"Delete Task","description":"Permanently delete a task from a site's task list. Requires the task UUID (from get_tasks).","category":"Site management","readOnly":false,"destructive":true,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"entity_mentions","title":"Entity Mentions Audit","description":"Check whether a brand is mentioned or listed across key off-site platforms: Wikipedia, Wikidata, Reddit, LinkedIn, YouTube, and GitHub. Useful for understanding brand authority and entity establishment beyond the site itself.","category":"SEO","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"ga4_ai_traffic","title":"GA4 AI Engine Traffic","description":"Analyze referral traffic from AI engines (ChatGPT, Perplexity, Gemini, Claude, Copilot, Bing) in GA4. Shows sessions by AI source and top landing pages.","category":"Google Analytics 4","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"ga4_custom_definitions","title":"GA4 Custom Dimensions & Metrics","description":"List a GA4 property's custom dimensions and custom metrics with their configuration (parameter name, scope, unit). Surfaces the property-specific fields a user set up.","category":"Google Analytics 4","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"ga4_get_realtime","title":"GA4 Get Realtime Data","description":"Get real-time active users and page-level data from Google Analytics 4. Shows who is on the site right now.","category":"Google Analytics 4","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"ga4_key_events","title":"GA4 Key Events (Conversions)","description":"List a GA4 property's key events (conversions) — the events the business marked as important. Use to frame reports around real outcomes.","category":"Google Analytics 4","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"ga4_list_properties","title":"GA4 List Properties","description":"List all Google Analytics 4 properties accessible to the authenticated user, including property ID, display name, and website URL. Use the returned property IDs with ga4_run_report and other GA4 tools.","category":"Google Analytics 4","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"ga4_metadata","title":"GA4 Available Dimensions & Metrics","description":"Discover which dimensions and metrics can be queried for a GA4 property, including the property's own custom dimensions and metrics. Use before ga4_run_report to know what's measurable instead of guessing field names.","category":"Google Analytics 4","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"ga4_pivot_report","title":"GA4 Pivot Report","description":"Run a GA4 pivot report to cross-tabulate metrics across dimensions (e.g. channel × date, source × landing page). Clearer comparative views than a flat report.","category":"Google Analytics 4","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"ga4_run_report","title":"GA4 Run Report","description":"Run a Google Analytics 4 report with custom dimensions and metrics for a property. Supports filtering, ordering and date ranges.","category":"Google Analytics 4","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"get_latest_audit","title":"Get Latest Site Audit","description":"[Deprecated — remove 2026-06-15] Alias for run_site_audit. Runs the site audit pipeline and returns the latest results. Use run_site_audit instead.","category":"Site management","readOnly":false,"destructive":true,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"get_tasks","title":"Get Tasks","description":"List all SEO action-item tasks for a site, ordered newest first. Use the site UUID from the dashboard.","category":"Site management","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"gsc_branded_split","title":"GSC Branded vs Non-branded Split","description":"Split a property's search traffic into branded vs non-branded by matching brand terms against queries. Shows clicks/impressions and share for each, plus top queries — reveals how much traffic is brand recognition vs genuine discovery.","category":"Google Search Console","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"gsc_bulk_url_inspection","title":"GSC Bulk URL Inspection","description":"Inspect up to 200 URLs at once in Google Search Console, grouped by indexing coverage state. Useful for auditing large batches of pages.","category":"Google Search Console","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"gsc_country_opportunity","title":"GSC Country Opportunity","description":"Rank countries by untapped demand — high impressions but low CTR — to find international markets where you appear but don't yet convert clicks.","category":"Google Search Console","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"gsc_crawl_freshness","title":"GSC Crawl Freshness","description":"Inspect a site's sitemap URLs and rank pages by how long ago Google last crawled them — surfaces indexed pages serving stale content that need a refresh or re-crawl.","category":"Google Search Console","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"gsc_detect_anomalies","title":"GSC Detect Anomalies","description":"Detect statistically significant traffic anomalies (drops and spikes) in Google Search Console data using modified Z-score analysis.","category":"Google Search Console","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"gsc_detect_cannibalization","title":"GSC Detect Cannibalization","description":"Find keyword cannibalization issues where multiple pages compete for the same search queries, diluting ranking potential.","category":"Google Search Console","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"gsc_detect_featured_snippets","title":"GSC Detect Featured Snippet Opportunities","description":"Find queries in positions 2–5 that are prime candidates for featured snippets. Analyzes HTML structure and scores each opportunity.","category":"Google Search Console","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"gsc_detect_lost_queries","title":"GSC Detect Lost Queries","description":"Compare two time periods to find keywords where traffic dropped significantly. Useful for diagnosing ranking losses after algorithm updates.","category":"Google Search Console","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"gsc_detect_quick_wins","title":"GSC Detect Quick Wins","description":"Find high-impression, low-CTR keywords in GSC that are quick optimization opportunities.","category":"Google Search Console","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"gsc_detect_trends","title":"GSC Detect Trends","description":"Identify rising and declining keyword trends in Google Search Console data using linear regression analysis over a date range.","category":"Google Search Console","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"gsc_device_gap","title":"GSC Device Gap (mobile vs desktop)","description":"Find queries where the site ranks worse on mobile than desktop — the gap, mobile/desktop positions and mobile impressions. Surfaces mobile-specific ranking problems.","category":"Google Search Console","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"gsc_discover_performance","title":"GSC Google Discover Performance","description":"Show Google Discover traffic (separate from web search) by page — clicks, impressions and CTR. Discover surfaces content to users who haven't searched; valuable for content sites.","category":"Google Search Console","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"gsc_get_sitemap","title":"GSC Get Sitemap Details","description":"Get detailed information about a specific sitemap submitted to Google Search Console, including URL counts and errors.","category":"Google Search Console","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"gsc_index_coverage_analysis","title":"GSC Index Coverage Analysis","description":"Analyze Google's indexing coverage for a site by inspecting URLs from analytics data, a sitemap, or a manual list. Returns a breakdown by coverage state.","category":"Google Search Console","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"gsc_inspect_url","title":"GSC Inspect URL","description":"Inspect a URL's indexing status, coverage state, mobile usability and last crawl time via Google Search Console.","category":"Google Search Console","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"gsc_list_properties","title":"GSC List Properties","description":"List all Google Search Console properties the authenticated user has access to, with their permission levels.","category":"Google Search Console","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"gsc_list_sitemaps","title":"GSC List Sitemaps","description":"List all sitemaps submitted to Google Search Console for a property, including status, errors and warnings.","category":"Google Search Console","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"gsc_page_changes","title":"GSC New & Lost Pages","description":"Compare two periods to list pages that newly started getting search impressions and pages that stopped — page-level companion to lost-query analysis.","category":"Google Search Console","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"gsc_page_query_map","title":"GSC Page ↔ Query Map","description":"Map each top page to the queries it ranks for — reveals which pages are well-focused vs ranking for many unrelated intents.","category":"Google Search Console","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"gsc_rich_results","title":"GSC Rich Results","description":"Show the rich result types Google actually detected on a URL (Product, Review, FAQ, Breadcrumb, etc.) and any structured-data issues per type — straight from Search Console's URL inspection, not inferred.","category":"Google Search Console","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"gsc_search_analytics","title":"GSC Search Analytics","description":"Fetch clicks, impressions, CTR and average position from Google Search Console for a property. Set dataState='all' to include fresh, still-incomplete data from the last ~2 days for early detection of traffic drops.","category":"Google Search Console","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"gsc_search_analytics_by_indexing_state","title":"GSC Search Analytics by Indexing State","description":"Combine GSC search analytics data with live URL inspection results to show top-traffic pages alongside their current indexing state.","category":"Google Search Console","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"gsc_search_appearance","title":"GSC Search Appearance Breakdown","description":"Break down search performance by the SERP feature your pages appear as (rich results, AMP, video, review snippet, etc.) — clicks, impressions, CTR and position per appearance type.","category":"Google Search Console","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"gsc_serp_features_gap","title":"GSC SERP Features Gap Analysis","description":"Identify structured data (schema markup) gaps on top-ranking pages by comparing detected schemas against query intent. Estimates CTR uplift for missing schemas.","category":"Google Search Console","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"gsc_sitemap_url_inspection","title":"GSC Sitemap URL Inspection","description":"Parse a sitemap and bulk-inspect all URLs in Google Search Console to find indexing issues. Returns a coverage breakdown with statistics.","category":"Google Search Console","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"gsc_sites_health_check","title":"GSC Multi-Site Health Check","description":"Run a health check across all GSC properties. Checks week-over-week traffic, sitemap errors and anomalies — prioritized by severity.","category":"Google Search Console","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"pagespeed_insights","title":"PageSpeed Insights","description":"Runs Google PageSpeed Insights for a URL and returns Core Web Vitals and Lighthouse scores. Results are stored in a temporary cache and are not persisted to the database.","category":"PageSpeed","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"run_site_audit","title":"Run Site Audit","description":"Runs the site audit pipeline for a domain and persists results to the database. Returns the full SEO audit. Triggers a background refresh when results are stale (>7 days) or missing, then returns after completion. GSC and GA4 are optional — the audit runs on HTTP-only data when not connected. A refresh in progress returns a status message; check again in ~60s. Pass ga4PropertyId to link a specific GA4 property.","category":"Site management","readOnly":false,"destructive":true,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"seo_analyze_page","title":"SEO Analyze Page","description":"Runs on-page SEO analysis for a URL: title, meta description, headings, canonical, structured data. Results are stored in a temporary cache and are not persisted to the database.","category":"SEO","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"seo_canonical_audit","title":"SEO Canonical Audit","description":"Compares the declared canonical tag in HTML with the Google-selected canonical from Search Console inspection. Detects mismatches and explains causes. Results are stored in a temporary cache and are not persisted to the database.","category":"SEO","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"seo_content_analysis","title":"SEO Content Analysis","description":"Analyzes a page's content quality: word count, readability score, heading structure, link density and lexical diversity. Results are stored in a temporary cache and are not persisted to the database.","category":"SEO","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"seo_crawlability_audit","title":"SEO Crawlability Audit","description":"Audits a URL for crawlability issues: canonical conflicts, redirect chains, noindex tags and indexability blockers. Results are stored in a temporary cache and are not persisted to the database.","category":"SEO","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"seo_eeat_score","title":"SEO E-E-A-T Score","description":"Scores a page's on-page Experience, Expertise, Authoritativeness and Trustworthiness signals. Results are stored in a temporary cache and are not persisted to the database.","category":"SEO","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"seo_geo_score","title":"SEO GEO Score","description":"Analyzes a page's structured data, content structure, E-E-A-T signals, and AI crawler access — factors correlated with AI citation in peer-reviewed research (Princeton KDD 2024). Returns a directional score (0-100) with per-category breakdown. No official AI citation scoring standard exists; treat as a heuristic. Results are stored in a temporary cache and are not persisted to the database.","category":"SEO","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"seo_hreflang_validator","title":"SEO Hreflang Validator","description":"Validate hreflang tags on a page for international SEO: language code correctness, self-reference, bidirectional links and x-default presence.","category":"SEO","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"seo_llms_txt","title":"SEO LLMs.txt Audit","description":"Checks whether a site has a /llms.txt file and validates its completeness and format. The /llms.txt format was proposed in 2024; no major AI platform has confirmed use for citation decisions. Results are stored in a temporary cache and are not persisted to the database.","category":"SEO","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"seo_robots_validator","title":"SEO Robots.txt Validator","description":"Fetch and validate a site's robots.txt file. Checks AI crawler access, sitemap references, blocking rules and common syntax errors.","category":"SEO","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"seo_schema_detection","title":"SEO Schema Detection","description":"Detect and validate all structured data (JSON-LD, Microdata, RDFa) on a page. Reports schema types, validation errors and improvement recommendations.","category":"SEO","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"seo_schema_generator","title":"SEO Schema Generator","description":"Generate valid JSON-LD structured data markup for a given schema type (Organization, Product, Article, etc.). Returns a ready-to-paste HTML snippet.","category":"SEO","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]},{"name":"seo_security_headers","title":"SEO Security Headers","description":"Audit a URL's HTTP security headers (HSTS, CSP, X-Frame-Options, etc.). Returns a grade, score and implementation recommendations.","category":"SEO","readOnly":true,"destructive":false,"parameters":["def","type","parse","safeParse","parseAsync","safeParseAsync","check","with","clone","brand","register","apply"]}],"rateLimits":{"note":"Rate limits align with the upstream Google APIs and per-user quota."},"contact":{"url":"https://thatseoagent.com/about","issues":"https://github.com/"}}