geoseo-mcp

io.github.Rachit8484Published by GitHub account Rachit8484v0.4.0Updated Nov 6, 2026

SEO + GEO: Search Console, Bing, Yandex, IndexNow, AI Overviews and LLM citation tracking.

Overview

AI-generated overview

SEO and GEO toolkit: Search Console, Bing and Yandex data, IndexNow submission, AI Overview checks, and LLM citation tracking across six engines.

What you can do
  • Read Search Console, Bing and Yandex Webmaster data: sites, query and page stats, URL index status, crawl issues
  • Submit sitemaps and URLs through Search Console, Bing, Yandex and IndexNow
  • Ask ChatGPT, Claude, Gemini, Perplexity, Grok and Brave the same questions and measure how often they cite a target domain
  • Check Google AI Overviews via SerpAPI and track citation share over a query batch
  • Audit pages and folders for title, meta, headings, schema, broken links and internal link graph, and generate or validate llms.txt
  • Store snapshots in local SQLite and report trends over time
When to use it
Useful for SEO and content teams who want an assistant to pull search-engine performance data, check whether AI assistants cite their site, and audit on-page and structured-data quality in one place. The keyless audit and llms.txt tools work without any accounts.
Requirements
Runs locally over stdio via uvx or pip (Python). Every credential is optional and only enables its own tools: API keys for OpenAI, Anthropic, Gemini, xAI, Brave, Perplexity and SerpAPI, a Bing Webmaster key, a Yandex OAuth token, an IndexNow key, and a Google OAuth client secret file for Search Console. Optional JavaScript rendering needs the render extra plus Playwright Chromium. Network access is required for remote checks.
Before you install
Holds many paid API keys in the client config; LLM and SerpAPI calls cost money per query, and batch citation checks multiply calls by samples and engines. Submitting URLs and sitemaps changes data in Google, Bing, Yandex and IndexNow. Queries, page URLs and audit targets are sent to third-party providers. The optional HTTP transport has no built-in auth, so keep it on localhost or behind a trusted proxy.

Installation

In SourceWeft

  1. Open geoseo-mcp in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

geoseo-mcp

An open-source MCP server for traditional SEO and Generative Engine Optimization (GEO): Google Search Console, Bing, IndexNow, Google AI Overviews, and citation tracking across ChatGPT, Claude, Gemini, Perplexity, Grok and Brave, all in one server.

[PyPI] [CI] [License: MIT] [Python 3.11+] [MCP]

Try it in 30 seconds (no API keys)

bash
# Audit any page: title, meta, headings, schema, freshness, GEO quotability, 0-100 scoreuvx geoseo-mcp audit https://example.com
# Check a site's llms.txt against the specuvx geoseo-mcp llms-txt https://llmstxt.org
# Same audit after running JavaScript (for SPAs); needs the [render] extrauvx --from 'geoseo-mcp[render]' geoseo-mcp audit https://your-spa.com --render

Sample output:

text
$ uvx geoseo-mcp audit https://example.comhttps://example.com  score: 15/100  title: 'Example Domain'  words: 27
  8 issue(s):   ✗ meta_description: Meta description should be 70-160 chars  [length=0]   ✗ h1: Exactly one H1 expected  [found=0]   ✗ word_count: Pages under 300 words rarely rank or get cited  [words=27]   ✗ schema: No JSON-LD schema found; LLMs and Google use this heavily   ✗ canonical: Missing canonical URL   ✗ open_graph: Missing core Open Graph tags (og:title, og:description)   ✗ freshness: No published-date signal found; LLMs deprioritize stale content   ✗ quotability: Few short, fact-dense sentences; LLMs prefer quotable lines  [quotable_sentences=0]
  3 check(s) passed. Use --json for the full report.

Other keyless commands: audit-site ./content, generate-llms-txt ./content https://yourdomain.com, status. Run uvx geoseo-mcp --help for everything.

Poke at all 47 tools in the MCP Inspector:

bash
npx @modelcontextprotocol/inspector uvx geoseo-mcp

Running geoseo-mcp with no arguments starts the MCP server over stdio, which is what MCP clients expect.

Add it to your MCP client

Cursor

[Install MCP Server]

Or add it to ~/.cursor/mcp.json by hand (see examples/cursor-mcp.json).

Claude Code

bash
claude mcp add geoseo -- uvx geoseo-mcp
# with keysclaude mcp add geoseo \  -e GEOSEO_OPENAI_API_KEY=sk-... \  -e GEOSEO_PERPLEXITY_API_KEY=pplx-... \  -- uvx geoseo-mcp

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

json
{  "mcpServers": {    "geoseo": {      "command": "uvx",      "args": ["geoseo-mcp"],      "env": {        "GEOSEO_OPENAI_API_KEY": "sk-...",        "GEOSEO_ANTHROPIC_API_KEY": "sk-ant-...",        "GEOSEO_GEMINI_API_KEY": "AIza...",        "GEOSEO_XAI_API_KEY": "xai-...",        "GEOSEO_BRAVE_API_KEY": "...",        "GEOSEO_PERPLEXITY_API_KEY": "pplx-...",        "GEOSEO_SERPAPI_API_KEY": "...",        "GEOSEO_GOOGLE_CLIENT_SECRET": "/absolute/path/to/client_secret.json",        "GEOSEO_BING_WEBMASTER_API_KEY": "...",        "GEOSEO_YANDEX_OAUTH_TOKEN": "y0_...",        "GEOSEO_INDEXNOW_KEY": "..."      }    }  }}

Every key is optional; drop the ones you don't have. Other clients (Continue, Cline, Windsurf, VS Code) take the same command / args / env block. See examples/.

Then just ask:

"Which of ChatGPT, Claude, Gemini, Perplexity and Grok cite acme.com for 'best CRM for startups'? Run 3 samples each." "Audit my ./content folder and show the 5 worst pages." "Build the internal link graph and find orphan pages."

What it covers

SurfaceTools
Google SearchGSC performance, URL inspection, sitemaps
Bing WebmasterSite stats, query/page stats, URL info, URL submission, crawl issues
Yandex WebmasterSite quality index, popular queries, important-page status, recrawl queue, diagnostics + broken internal links
Bing / Yandex / Naver / SeznamIndexNow submission
Google AI Overviewsaio_check + aio_citation_check via SerpAPI
LLM citationsChatGPT (web search), Claude (web search), Gemini (Google Search grounding), Perplexity (Agent API), Grok (xAI web search), Brave (Answers API), plus multi_llm_* tools that fan out across all of them
On-pageTitle / meta / heading / schema / internal-link audit, 0-100 score, optional JS rendering
Internal link graphOrphans, dead-ends, hubs, dangling links, related-page suggestions with anchor hints (TF-IDF by default, or OpenAI / Gemini / local embeddings)
llms.txtGenerate from a folder of HTML, validate against the spec
Trend trackingLocal SQLite snapshots of GSC, LLM citations and AIO, with trend tools

MIT licensed and local-first: your credentials and data stay on your machine.

How citation checks work

multi_llm_citation_check(questions, target_domain) asks every configured engine each question several times (samples, default 3), because LLM answers vary from run to run. For each engine you get:

  • citation_rate with a 95% Wilson interval, plus a per-question cited_rate and a stable flag
  • mention_rate and unlinked_mention_rate: answers that name your brand without linking to you
  • top_competing_domains: who gets cited instead of you
  • subdomain-aware matching (docs.acme.com counts for acme.com)

Brand aliases are derived from the domain (acme.com → acme) and you can pass your own via brand_aliases. Requests run in parallel up to GEOSEO_MAX_CONCURRENCY (default 8).

Rough costs

Approximate list prices as of October 2026; check each provider's pricing page before running large batches.

EngineWhat we callApprox. cost per query
ChatGPT (pricing)Responses API, gpt-5-mini + web_search~$0.01 search fee + tokens, roughly $0.01-0.02
Claude (pricing)Messages API + web_search tool$10 / 1k searches + tokens
Gemini (pricing)gemini-3.5-flash-lite + Google Search grounding5,000 free grounded requests / month, then $14 / 1k + tokens
Perplexity (pricing)Agent API, fast preset~$2.50 / 1k searches + tokens
Grok (pricing)Responses API, grok-4.3 + web_searchper-token + per-search-call pricing
Brave (pricing)Answers API, streaming with citations~$4 / 1k searches + $5 / M tokens
Google AI Overviews (pricing)SerpAPI250 free searches / month, then plan pricing

A 10-question check with 3 samples across four engines is 120 calls, which is usually well under $2. Use samples=1 for quick spot checks.

Get credentials

  • OpenAI: API key. Uses the Responses API with the web_search tool. Override the model with GEOSEO_OPENAI_MODEL.
  • Anthropic: API key. Uses Claude with the server-side web search tool.
  • Gemini: API key from AI Studio. Uses Google Search grounding (the same index AI Overviews use).
  • Perplexity: API key. Uses the Agent API with the fast preset; set GEOSEO_PERPLEXITY_EFFORT or GEOSEO_PERPLEXITY_MODEL to change it.
  • xAI Grok: API key from the xAI console, set as GEOSEO_XAI_API_KEY. Uses the Responses API with the web_search tool; override the model (default grok-4.3) with GEOSEO_GROK_MODEL.
  • Brave Answers: API key with the Answers plan, set as GEOSEO_BRAVE_API_KEY. Answers come from Brave's own index.
  • SerpAPI: API key. Free plan: 250 searches/month. Used for AI Overviews tracking.
  • Google Search Console: see docs/setup-gsc.md. One-time OAuth flow.
  • Bing Webmaster: API key from Bing Webmaster Tools → Settings → API access.
  • Yandex Webmaster: OAuth token. Register an app with both webmaster:hostinfo and webmaster:verify (hostinfo alone only lists sites), then get a token via https://oauth.yandex.com/authorize?response_type=token&client_id=<id> and set GEOSEO_YANDEX_OAUTH_TOKEN. Docs.
  • IndexNow: any random 32-char hex string hosted at https://yourdomain.com/<key>.txt. Spec.

Tools that need a key you haven't set return a clear error; everything else keeps working.

Configuration

Env varDefaultWhat it does
GEOSEO_TOOLSETSallComma-separated toolsets to expose: gsc,bing,yandex,indexing,llm,aio,audit,graph,trend. Fewer tools means less context for your agent.
GEOSEO_CITATION_SAMPLES3Default samples per question for multi_llm_citation_check (max 10).
GEOSEO_MAX_CONCURRENCY8Max parallel LLM requests.
GEOSEO_OPENAI_MODELgpt-5-miniModel for ChatGPT checks.
GEOSEO_ANTHROPIC_MODELclaude-sonnet-5-5Model for Claude checks.
GEOSEO_GEMINI_MODELgemini-3.5-flash-liteModel for Gemini checks.
GEOSEO_GROK_MODELgrok-4.3Model for Grok checks.
GEOSEO_PERPLEXITY_EFFORT / GEOSEO_PERPLEXITY_MODELfast / unsetPerplexity Agent API preset, or a pinned model.
GEOSEO_TRANSPORTstdiostdio or http (streamable HTTP).
GEOSEO_HOST / GEOSEO_PORT127.0.0.1 / 8000Bind address for HTTP.
GEOSEO_DBuser data dirSQLite file for trend snapshots.

Example: only the keyless audit tools, for a lean agent context:

json
"env": { "GEOSEO_TOOLSETS": "audit,graph" }

Streamable HTTP

bash
uvx geoseo-mcp serve --transport http --port 8000# MCP endpoint: http://127.0.0.1:8000/mcp

It binds to localhost by default. There is no built-in auth, so put it behind a proxy you trust before exposing it anywhere.

JavaScript rendering

audit_page reads raw HTML by default. If a page looks like a JS shell (an empty SPA root or almost no text), it adds a js_rendering finding. Install the extra and pass render=True (or --render on the CLI) to audit the rendered DOM:

bash
pip install 'geoseo-mcp[render]' && playwright install chromium

Tools (47)

  • Status: geoseo_status, list_llm_engines
  • Google Search Console: gsc_list_sites, gsc_performance, gsc_inspect_url, gsc_submit_sitemap
  • Bing Webmaster: bing_list_sites, bing_query_stats, bing_page_stats, bing_url_info, bing_submit_url, bing_crawl_issues
  • Yandex Webmaster: yandex_list_sites, yandex_site_summary, yandex_query_stats, yandex_url_info, yandex_submit_url, yandex_crawl_issues
  • Indexing: indexnow_submit_url, indexnow_submit_urls
  • LLM citations: perplexity_query, perplexity_citation_check, openai_query, claude_query, gemini_query, grok_query, brave_query, multi_llm_query, multi_llm_citation_check
  • Google AI Overviews: aio_check, aio_citation_check
  • On-page: audit_page, audit_site, find_broken_external_links, lint_schema_page, lint_schema_site
  • Link graph: internal_link_graph, suggest_internal_links
  • llms.txt: generate_llms_txt, validate_llms_txt
  • Trends: trend_init, trend_stats, snapshot_gsc, snapshot_llm_citations, snapshot_serp_aio, trend_gsc, trend_llm_citations

suggest_internal_links uses TF-IDF by default (offline, free). Pass mode="openai", "gemini" or "local" (sentence-transformers) for embedding similarity; vectors are cached in SQLite by content hash.

For Yandex tools, pass a normal URL as site; it's matched to the Yandex host id (https:example.com:443), following the main mirror. yandex_url_info only covers pages in "Monitoring important pages" (Yandex has no arbitrary-URL inspect endpoint).

Snapshots are append-only and stored at $GEOSEO_DB. Schedule the snapshot_* tools weekly to build a private time series of your AI-search visibility.

Roadmap

Tracked in issues. Shipped in 0.4: broken-link prospector, schema linter, Grok and Brave citation engines, embedding-based link suggestions, Yandex Webmaster.

Contributing

PRs welcome. Each engine is a module in src/geoseo_mcp/engines/ that exposes query() and returns the standard {engine, question, model, answer, citations, cited_domains, usage} shape; tools live in src/geoseo_mcp/tools/. See docs/architecture.md.

bash
git clone https://github.com/Rachit8484/geoseo-mcp.git && cd geoseo-mcpuv sync --extra devuv run ruff check src tests && uv run pytest

License

MIT. See LICENSE.

Source: README.md at commit 209e26f

Tools

47

geoseo_status

Report which engines are configured and reachable. Always safe to call. Returns a dict keyed by engine name with `configured: bool` and a short message. Use this as the first call in a session to know what's available.

Takes no parameters.

gsc_list_sites

List all Search Console properties the authenticated user can access. Returns a list of site entries with ``siteUrl`` and ``permissionLevel``. Use ``siteUrl`` from this list as input to other ``gsc_*`` tools.

Takes no parameters.

gsc_performance

Query GSC search analytics.

Parametersdevicecountryend_datesite_urlrequiredrow_limitdimensionsstart_datesearch_type

gsc_inspect_url

Get index status for a specific URL via the URL Inspection API. Returns coverage state, last crawl time, mobile usability, indexed verdict, and indexing rich-result data. Slow (~1s/call); rate-limited by Google.

Parametersurlrequiredsite_urlrequiredlanguage_code

gsc_submit_sitemap

Submit (or resubmit) a sitemap URL to GSC. ``feedpath`` is the absolute URL of the sitemap, e.g. ``https://example.com/sitemap.xml``.

Parametersfeedpathrequiredsite_urlrequired

bing_list_sites

List all Bing-verified sites for the API key owner.

Takes no parameters.

bing_query_stats

Last-6-months query stats from Bing Webmaster (clicks, impressions, position). ``site_url`` must match what Bing has verified, e.g. ``https://example.com/``.

Parameterssite_urlrequired

bing_page_stats

Per-page stats from Bing Webmaster.

Parameterssite_urlrequired

bing_url_info

Index status + crawl info for a single URL on Bing.

Parametersurlrequiredsite_urlrequired

bing_submit_url

Submit a URL for fast crawling. Daily quota applies (default ~10/day).

Parametersurlrequiredsite_urlrequired

bing_crawl_issues

Crawl errors / blocked URLs / DNS issues reported by Bingbot.

Parameterssite_urlrequired

yandex_list_sites

List sites in the token owner's Yandex Webmaster account.

Takes no parameters.

yandex_site_summary

Site quality index (SQI), pages in search, excluded pages, problem counts. ``site`` can be a URL (``https://example.com/``) or a Yandex host id (``https:example.com:443``).

Parameterssiterequired

yandex_query_stats

Top Yandex search queries: shows, clicks, average show/click position. ``order_by``: ``TOTAL_SHOWS`` or ``TOTAL_CLICKS``. ``device``: ``ALL``, ``DESKTOP``, ``MOBILE_AND_TABLET``, ``MOBILE``, ``TABLET``. Dates are ``YYYY-MM-DD``; defaults to the last week.

Parameterssiterequiredlimitdevicedate_toorder_bydate_from

yandex_url_info

Indexing + search status for a URL in Yandex "Monitoring important pages".

Parametersurlrequiredsiterequired

yandex_submit_url

Queue a URL for Yandex recrawl. Daily quota applies.

Parametersurlrequiredsiterequired

yandex_crawl_issues

Active Yandex site diagnostics (by severity) plus sample broken internal links.

Parameterssiterequired

indexnow_submit_url

Notify Bing, Yandex, Naver, Seznam, and Yep that a single URL was published or updated. Requires ``GEOSEO_INDEXNOW_KEY`` env var (a 32-char hex string you also host at ``https://yourdomain.com/<key>.txt``).

Parametersurlrequired

indexnow_submit_urls

Batch-notify search engines about up to 10,000 URLs (must share one host). Best for sitemap-wide rebuilds or large content updates.

Parametersurlsrequired

perplexity_query

Ask Perplexity (Agent API + web search); return answer + cited URLs/domains. Defaults to the ``fast`` effort preset. Pass ``model`` to pin one (e.g. ``openai/gpt-5-mini``); legacy names like ``sonar`` still work.

Parametersmodelquestionrequiredmax_tokenssystem_prompt

perplexity_citation_check

Citation share for ``target_domain`` across a Perplexity question batch.

Parametersmodelquestionsrequiredtarget_domainrequired

openai_query

Ask ChatGPT (with web search) a question; return answer + cited URLs. Uses the OpenAI Responses API with the ``web_search`` tool. Default model: ``GEOSEO_OPENAI_MODEL`` (``gpt-5-mini``).

Parametersmodelquestionrequiredsystem_prompt

claude_query

Ask Claude (with server-side web search) a question; return answer + cited URLs.

Parametersmodelquestionrequiredmax_tokenssystem_prompt

gemini_query

Ask Gemini (with Google Search grounding) a question; return answer + cited URLs. Grounding sources here are the same signal Google uses for AI Overviews, so this is the closest open-API proxy for "what AIO might cite for this query".

Parametersmodelquestionrequiredsystem_prompt

grok_query

Ask Grok (with live web search) a question; return answer + cited URLs. Uses the xAI Responses API with the ``web_search`` tool. ``citations`` are the URLs Grok actually cites inline; ``sources_considered`` lists everything it looked at. Set ``x_search=True`` to also search X posts. Default model: ``GEOSEO_GROK_MODEL`` (``grok-4.3``).

Parametersmodelquestionrequiredx_searchsystem_prompt

brave_query

Ask Brave's AI Answers (grounded in Brave Search); return answer + cited URLs. Brave runs its own independent web index, so it is a useful extra signal next to Google/Bing-backed engines. Requires the Brave Answers plan (``GEOSEO_BRAVE_API_KEY``).

Parameterscountrylanguagequestionrequired

multi_llm_query

Ask the same question to all (or selected) configured LLM engines in parallel. ``engines``: optional subset of ``["perplexity","openai","anthropic","gemini","grok","brave"]``. Default: every engine with credentials configured (see ``geoseo_status``). Engines that error are reported per-engine and don't block the others.

Parametersenginesquestionrequired

multi_llm_citation_check

How often each configured LLM cites (or mentions) ``target_domain``. The headline GEO/AEO tool. Feed it your top 20-50 buyer questions and get a per-engine breakdown for ChatGPT/Claude/Gemini/Perplexity/Grok/Brave: - ``citation_rate`` (+ 95% interval): share of answers linking to your domain or any subdomain of it. - ``mention_rate`` / ``unlinked_mention_rate``: answers that name your brand, with or without a link. Pass ``brand_aliases`` (e.g. ``["Acme", "Acme CRM"]``) if your brand isn't obvious from the domain. - ``top_competing_domains`` and per-question results. LLM answers vary run to run, so every question is asked ``samples`` times per engine (default ``GEOSEO_CITATION_SAMPLES``, 3; max 10). Cost scales with questions x samples x engines.

Parametersenginessamplesquestionsrequiredbrand_aliasestarget_domainrequiredmax_concurrency

list_llm_engines

Return the LLM engines currently configured (have an API key).

Takes no parameters.

aio_check

Run a Google search via SerpAPI and parse the AI Overview block. Returns ``aio_present``, the AIO answer text, the URLs/domains AIO cites, and the top-10 organic results for context. Use this to track which pages Google's generative answers actually source.

Parametersglhlqueryrequiredlocationgoogle_domain

aio_citation_check

For a batch of queries, report AIO fire-rate and citation share for ``target_domain``. This is the GEO companion to ``multi_llm_citation_check`` — same idea, but specifically for Google's on-SERP AI Overviews. Run weekly and snapshot to ``snapshot_serp_aio`` to track AIO visibility over time.

Parametersqueriesrequiredtarget_domainrequired

audit_page

Audit a single page (local file path or http(s) URL). Set ``render=True`` to audit the page after JavaScript runs (needs the optional ``geoseo-mcp[render]`` extra + ``playwright install chromium``). Either way the report flags pages that are empty without JavaScript, since most AI crawlers don't execute it. Returns a structured report with: title/meta/headings, word count, link counts, image alt coverage, JSON-LD schema types, Open Graph, Twitter Card, freshness signals, GEO-quotability score, and a list of human-readable findings. Plus a 0-100 overall ``score``. Examples: ``audit_page("seo/aa-meetings-what-to-expect.html")`` ``audit_page("https://soberpath.com/blog/quit-drinking")``

Parametersrendersourcerequired

audit_site

Recursively audit every HTML file under a folder. Returns per-file scores, an aggregate summary (mean score, worst pages, most common findings), and the top opportunities for improvement. Useful as the first call against a content directory to spot the worst offenders quickly.

Parameterslimitfolderrequiredpattern

lint_schema_page

Validate a page's JSON-LD against Google's structured-data requirements. ``source`` is a local HTML file or an http(s) URL. Every ``application/ld+json`` block is parsed (``@graph`` included) and each typed entity is checked against Google's documented required and recommended properties for Article, Product (with nested Offer / AggregateRating / Review), Recipe, LocalBusiness, BreadcrumbList, Event, VideoObject, SoftwareApplication, JobPosting, QAPage, Review and Organization. FAQPage and HowTo are checked against schema.org since Google no longer shows those rich results. Returns per-entity ``{type, ok, required_missing, recommended_missing, line_estimate, doc}``. ``ok`` is false when a required property is missing or the JSON is invalid.

Parameterssourcerequired

lint_schema_site

Run ``lint_schema_page`` over every HTML file in a folder. Returns files with errors, files that have no JSON-LD at all, a count of schema types found, the most common missing required properties, and per-file problems.

Parameterslimitfolderrequiredpattern

generate_llms_txt

Generate a draft ``llms.txt`` from a folder of HTML pages. ``llms.txt`` (https://llmstxt.org) is the emerging standard for telling LLM crawlers where your canonical content lives. This tool reads each page's ``<title>`` and meta description, groups by URL prefix, and produces spec-compliant Markdown ready to drop at ``/llms.txt``. ``section_strategy`` controls grouping: - ``first_path_segment`` (default): groups by first URL path segment, e.g. all ``/blog/...`` pages under "Blog". - ``flat``: a single "Pages" section.

Parameterslimitfolderrequiredpatternsite_urlrequiredsite_titlesite_summarysection_strategy

validate_llms_txt

Validate an ``llms.txt`` file (local path or URL) against the spec. Returns parsed structure plus an ``issues`` list with line numbers for any violations (missing H1, broken link syntax, non-http(s) URLs, etc).

Parameterssourcerequired

trend_init

Create the local SQLite snapshot DB if it doesn't exist; return its path.

Takes no parameters.

trend_stats

Inventory of what's stored: row counts, sites/domains, oldest/newest snapshots.

Takes no parameters.

snapshot_gsc

Run a GSC performance query and persist the rows as a snapshot. Run this on a schedule (cron, n8n, ``launchd`` — anything that can invoke an MCP tool) to build a local time-series of search performance. Default dimensions: ``["query"]``.

Parametersend_datesite_urlrequiredrow_limitdimensionsstart_datesearch_type

snapshot_llm_citations

Run multi-LLM citation check and persist the per-question results. Builds the dataset behind ``trend_llm_citations``. ``engines`` defaults to every configured LLM (see ``geoseo_status``). With ``samples > 1`` a question is stored as cited when most samples cite you.

Parametersenginessamplesquestionsrequiredtarget_domainrequired

snapshot_serp_aio

Run AIO citation check via SerpAPI and persist as ``serpapi_aio`` engine rows.

Parametersqueriesrequiredtarget_domainrequired

trend_gsc

Time-series of clicks/impressions/position from stored GSC snapshots. Aggregates by ``captured_at``. Filter by ``query`` and/or ``page`` to drill in. Returns up to ``limit`` most recent snapshots in chronological order.

Parameterspagelimitquerysite_urlrequired

trend_llm_citations

Per-snapshot citation share for ``target_domain`` over time. ``engine`` filters to one of ``perplexity|openai|anthropic|gemini|serpapi_aio``. Returns rows of ``{captured_at, engine, questions, cited, citation_share}``.

Parameterslimitenginetarget_domainrequired

Version history

1
  1. v0.4.0LatestOct 23, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts