Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.avansaber/seo-monster

PYPI · SEO-MONSTER

Local-first SEO MCP: track AI citations, Search Console, GA4, PageSpeed, Cloudflare, IndexNow, CrUX.

Available components

0 this week 96 Trust /100

Last scanned (2 hours ago)

Scores higher than 99% of PyPI servers

Category Marketing and SEO

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security100
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs hatchling.build at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
  • 1 of 52 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency97
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to avansaber/seo-monster). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 68 days ago).Pass
  • Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability83
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 10239 tokens (~146/item across 70 items; 70 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 99% of tool parameters carry a description.Partial
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 70 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 3 Nov 26 +15
    • Malware scan: unverified → pass ▲ security
  • 1 Nov 26 0
    • Stability: 0.97 → pass security
  • 31 Oct 26 0
    • Stability: pass → 0.97 functional
  • 30 Oct 26 −15
    • Malware scan: pass → unverified ▼ security
  • 29 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
  • 25 Oct 26 −15
    • Malware scan: pass → unverified ▼ security
    • Stability: 0.97 → pass security
  • 24 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

  • 21 Oct 26 +11
    • Provenance: unverified → pass ▲ security
    • The attested source repository moved: avansaber/seo-monster security
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Analysed pypi/seo-monster@0.9.3

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem pypi
Reason Verified
Discovered via Registry attestation endpoint
Source repo avansaber/seo-monster
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/avansaber/seo-monster/.github/workflows/release.yml@refs/tags/v0.9.3
Rekor log index 2631377982
Predicate type PyPI publish attestation https://docs.pypi.org/attestations/publish/v1
Subject digest sha256:04f60b860b0878b2fc1f4fcb832ff2ce20dd7d0d5c9664c88b8c0c29c46f78bb

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend allowlisted hatchling.build

Background: Why install scripts are a supply-chain risk →

Dependencies 52 packages
Packages resolved 52
Stale 1
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 70 exposed · ~10,239 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
inspect_meta ~67

Fetch a single URL and return its on-page SEO surface: title, meta description, meta robots, canonical, Open Graph + Twitter Card tags, hreflang list, and the H1 count. Read-only HTTP GET.

NameTypeReqDescription
urlstringyesAbsolute http(s) URL to inspect.

No output schema declared.

No examples provided.

inspect_schema ~66

Extract every JSON-LD block from a page and report the schema.org @type counts plus a sample entity per type. Discovery tool: tells you what structured data exists. Pair with validate_schema to check required-field compliance.

NameTypeReqDescription
urlstringyesAbsolute http(s) URL to inspect.

No output schema declared.

No examples provided.

internal_link_graph ~136

Small BFS crawl from a starting URL within the same host. Returns per-page in-degree + out-degree, orphan pages (zero in-degree), broken internal links (4xx/5xx), and depth distribution. Hard caps: max_depth ≤ 4, max_pages ≤ 200. Not a replacement for a full crawler; sized for in-session triage.

NameTypeReqDescription
max_depthinteger–Max BFS depth. Default 2, ceiling 4.
max_pagesinteger–Max pages to fetch. Default 50, ceiling 200.
start_urlstringyesAbsolute http(s) URL to crawl from.

No output schema declared.

No examples provided.

internal_link_recommend ~282

Recommend specific internal links (source page -> target page, with anchor text) from high-authority pages to striking-distance pages. Crawls from start_url for the internal link graph (authority + existing links) and uses GSC to find striking-distance targets (default position 8-20 with real impressions). Ranks sources by lexical relevance to the target query + internal in-degree, skips pages that already link the target, balances anchor text, and never suggests nofollow. Free; read-only; does not guarantee a ranking change.

NameTypeReqDescription
daysinteger–GSC window. Defaults to 28.
impressions_mininteger–Min impressions for a target query. Default 30.
limitinteger–Max recommendations. Default 25.
max_pagesinteger–Max pages to crawl. Default 50, ceiling 200.
position_maxnumber–Striking-distance upper bound (default 20).
position_minnumber–Striking-distance lower bound (default 8).
relevance_floornumber–Min source/target query lexical overlap (0-1). Default 0.34.
site_urlstring–GSC property for target selection. Defaults to the configured default site.
start_urlstringyesAbsolute http(s) URL to crawl from for the link graph.

No output schema declared.

No examples provided.

keyword_universe ~193

External keyword data (optional, paid). Its core value is the COMPETITOR keyword GAP: keywords competitors rank for that you don't (DataForSEO Domain Intersection; no Google equivalent). Optionally returns search volume/difficulty/intent for a keyword list via a provider chain (DataForSEO, else Google Ads volume-only). Requires DataForSEO and/or Google Ads to be configured. External volume is a degraded directional signal in 2026 -- never let a low/missing volume drop a high-intent term.

NameTypeReqDescription
competitorsarray–Competitor domains for the gap. Up to 5.
keywordsarray–Keywords to look up volume/difficulty/intent for.
limitinteger–Max gap keywords to return. Default 100.
target_domainstring–Your domain (for the competitor gap), e.g. 'example.com' or 'sc-domain:example.com'.

No output schema declared.

No examples provided.

lighthouse_budget ~268

Run PageSpeed Insights on a URL and verdict the results against a performance budget. Valid budget keys: higher-is-better Lighthouse scores on a 0-100 scale ('performance', 'accessibility', 'best-practices', 'seo'); lower-is-better latency in milliseconds ('LCP_ms', 'FCP_ms', 'TBT_ms', 'TTI_ms', 'speed_index_ms'); lower-is-better unitless shift score ('CLS'). Unknown keys are surfaced as a non-fatal finding with a 'did you mean' hint; the metric is NOT silently ignored. Returns per-metric verdict and an overall pass/fail. Useful as a CI / pre-deploy gate.

NameTypeReqDescription
budgetobjectyesBudget dict. Lighthouse scores on the 0-100 scale (performance=80 means a score of 80, not 0.8); latency metrics in milliseconds (LCP_ms=2500 means 2.5 s); CLS is unitless (CLS=0.1 means a 0.1 layout…
strategystring–Defaults to mobile.
urlstringyesPage URL to analyze. Required.

No output schema declared.

No examples provided.

mixed_content_check ~75

Fetch an HTTPS page and report any sub-resource references that use plain http:// (img/script/iframe/form action/anchor href). Mixed content blocks browsers from running scripts and triggers warnings on user-facing pages. No-op for http:// pages (returns 'not_https').

NameTypeReqDescription
urlstringyesAbsolute https:// URL to inspect.

No output schema declared.

No examples provided.

onpage_serp_gap ~199

Find the headings, entities and schema the top SERP results have that a target page lacks, and turn them into on-page actions. Pass competitor_urls (free), or a query with DataForSEO configured to auto-fetch the SERP. When the SERP is auto-fetched, also returns winnability signals (AI-Overview presence, UGC/forum dominance = zero-click risk) and, with Open PageRank, competitor domain authority. Surfaces information-gain (add something novel), not just parity. Read-only; does not guarantee a ranking.

NameTypeReqDescription
competitor_urlsarray–Competitor URLs to compare against. Up to 6.
max_competitorsinteger–Cap competitors analyzed. Default 5.
querystring–Query to auto-fetch the SERP for (needs DataForSEO) when competitor_urls is omitted.
target_urlstringyesThe page to analyze. Required.

No output schema declared.

No examples provided.

psi_analyze ~96

Run PageSpeed Insights on a URL and return Lighthouse category scores, lab Core Web Vitals (synthetic), and field Core Web Vitals (real-user CrUX) when available. Defaults to the mobile strategy (Google ranks on mobile).

NameTypeReqDescription
categoriesarray–Lighthouse categories to run. Defaults to all four.
strategystring–Defaults to mobile.
urlstringyesPage URL to analyze. Required.

No output schema declared.

No examples provided.

psi_opportunities ~98

Run PageSpeed Insights and return the actionable Lighthouse opportunity audits (estimated load-time savings) plus the Lighthouse SEO-category audits graded by severity (critical/high/medium/low). Lab data only; does not use field/CrUX data (use crux_snapshot / crux_history for real-user metrics). Defaults to the mobile strategy.

NameTypeReqDescription
strategystring–Defaults to mobile.
urlstringyesPage URL to analyze. Required.

No output schema declared.

No examples provided.

rank_change_attribution ~291

Estimate whether an on-site change moved a page's clicks, using difference-in-differences against a control group of untouched pages (never a naked before/after). Returns an estimated lift with a 95% confidence interval and a three-state verdict (likely_positive / likely_negative / inconclusive), plus a confounders block (algo-update proximity, GSC data-regime breaks, control quality, sample sizes). Clicks-based (position/CTR were corrupted by the 2025 GSC bugs). Observational, not proof of causation -- a server-side split test is the only true causal test.

NameTypeReqDescription
change_datestringyesDate the change shipped, ISO YYYY-MM-DD. Required.
control_scopestring–Control pool: same path section, or whole site. Default section.
gap_daysinteger–Washout gap after the change for recrawl/re-rank. Default 7.
post_daysinteger–Post-window length. Default 28.
pre_daysinteger–Pre-window length. Default 56 (>=2x post, per CausalImpact).
querystring–Optional: restrict to one query.
site_urlstring–Defaults to the configured default site.
urlstring–The changed page URL (or use `urls`).
urlsarray–Multiple changed page URLs.

No output schema declared.

No examples provided.

redirect_chain_audit ~107

Walk the redirect chain for a URL without auto-following 3xx. Returns every hop (status, location, elapsed_ms) and flags issues: chain longer than 1, mixed-protocol hops (https -> http), loops, or non-2xx terminus. Cap defaults to 10 hops.

NameTypeReqDescription
max_redirectsinteger–Maximum hops to follow before flagging the chain as too long.
urlstringyesAbsolute http(s) URL to audit.

No output schema declared.

No examples provided.

robots_ai_posture ~152

Recommend a Content-Signals posture (search / ai-input / ai-train) from a business goal and emit a ready-to-apply artifact: the Content-Signal directive line plus a full suggested robots.txt. Read-only, offline, deterministic - no network, no writes. Always returns the trade-off alternatives and the mandatory caveat that Content-Signal is honored only by adopting crawlers, is ignored by Googlebot, and is not a ranking factor.

NameTypeReqDescription
goalstring–Business goal driving the recommendation. One of content_authority, maximize_visibility, protect_ip. Defaults to content_authority when omitted.
sitemap_urlstring–Optional sitemap URL embedded into the generated robots.txt artifact.

No output schema declared.

No examples provided.

robots_txt_validate ~115

Fetch /robots.txt for a site, parse user-agent groups + Allow/Disallow + Crawl-delay + Sitemap, and return the structured ruleset. Optionally probe a list of (user_agent, url) pairs and return per-probe allow/deny verdicts using RFC 9309 longest-match.

NameTypeReqDescription
probesarray–Optional list of (user_agent, url) pairs to verdict against the rules.
site_urlstringyesAny URL on the target host; /robots.txt is fetched relative to it.

No output schema declared.

No examples provided.

serp_adjacency_expand ~163

Expand seed terms into adjacent terms from SERP signals. FREE core: Google Autocomplete (no key). Optional PAA + related-searches via DataForSEO if configured. Pass your winning queries as `seeds` (seed from gsc_top_queries). Returns per-seed suggestions plus the aggregated net-new terms (suggestions you didn't seed). Degrades gracefully: autocomplete-only without a DataForSEO key. Read-only. Note: the autocomplete endpoint is undocumented and may change.

NameTypeReqDescription
include_paaboolean–Also fetch People-Also-Ask + related searches via DataForSEO (if configured). Default true when DataForSEO is set.
seedsarrayyesSeed terms (your winning queries). Required, 1-15.

No output schema declared.

No examples provided.

sitemap_health ~84

Sample N URLs from a sitemap (or one level deep in a sitemap index) and HEAD-check each. Aggregates a status-code histogram and lists the first few non-2xx URLs so you can triage broken entries fast.

NameTypeReqDescription
sample_sizeinteger–Number of URLs to HEAD-check.
sitemap_urlstringyesAbsolute URL of the sitemap or sitemap index.

No output schema declared.

No examples provided.

sitemap_validate ~77

Fetch a sitemap or sitemap-index URL, validate its XML structure, count entries, and flag oversize (>50,000 URLs or >50 MiB), missing <lastmod>, and entries whose host does not match the sitemap host. Handles .gz transparently.

NameTypeReqDescription
sitemap_urlstringyesAbsolute URL of the sitemap or sitemap index.

No output schema declared.

No examples provided.

system_status ~100

Report which SEO services are configured and reachable, the Google auth method and scopes, whether destructive mode is enabled, and the full catalog of available tools grouped by service. Call this first if unsure what is set up. Pass probe=true to confirm credentials work via one cheap live call per configured service (default false: config-only).

NameTypeReqDescription
probeboolean–If true, make one cheap live call per configured service to confirm the credentials actually work. Default false.

No output schema declared.

No examples provided.

topic_cluster_map ~249

Map a content cluster from your own Search Console data and surface missing subtopics. Define the cluster by cluster_path (a URL path prefix) or pillar_url. For each query the cluster's pages show for, classifies it into defend / optimize / create / monitor by demand and best position, flags cannibalization, and lists the create-quadrant queries (high demand, weak position) as missing-subtopic candidates for you to group into named subtopics. Free, GSC-only. 'create' = no VISIBLE strong coverage (GSC hides ~47% of queries); no external volume.

NameTypeReqDescription
cluster_pathstring–URL path prefix defining the cluster, e.g. '/blog/widgets/'.
daysinteger–Window. Default 90 (wider surfaces more).
impressions_mininteger–Demand threshold: at/above this is 'high demand'. Default 50.
limitinteger–Max queries listed per quadrant. Default 50.
pillar_urlstring–Pillar page URL; the cluster path is derived from its directory if cluster_path is omitted.
site_urlstring–Defaults to the configured default site.

No output schema declared.

No examples provided.

validate_schema ~111

Validate every JSON-LD block on a page against the Google Rich Results required-field set. Per-entity verdict (pass/fail) and a list of missing required + recommended fields. Covers Article, NewsArticle, BlogPosting, Product, FAQPage, BreadcrumbList, Organization, LocalBusiness, Event, Review, Recipe.

NameTypeReqDescription
typesarray–Optional: restrict checks to these schema.org @types. Default: validate every recognized type.
urlstringyesAbsolute http(s) URL to validate.

No output schema declared.

No examples provided.

Install

How do I install the io.github.avansaber/seo-monster MCP server?

io.github.avansaber/seo-monster runs locally as a PyPI package, launched with uvx seo-monster. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · seo-monster

# add to Claude Code
claude mcp add avansaber-seo-monster -- uvx seo-monster
Common questions

What is the io.github.avansaber/seo-monster MCP server?

io.github.avansaber/seo-monster is an MCP server listed in the public MCP registry as io.github.avansaber/seo-monster. Local-first SEO MCP: track AI citations, Search Console, GA4, PageSpeed, Cloudflare, IndexNow, CrUX. This page covers its PyPI package (seo-monster).

Is the io.github.avansaber/seo-monster MCP server safe to use?

io.github.avansaber/seo-monster scores 96 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.avansaber/seo-monster MCP server expose?

io.github.avansaber/seo-monster exposes 70 tools: system_status, gsc_list_properties, gsc_search_analytics, gsc_top_queries, gsc_top_pages, and 65 more. Their descriptions and schemas cost roughly 10,239 tokens of context every time the server is loaded.

Is the io.github.avansaber/seo-monster MCP server still maintained?

io.github.avansaber/seo-monster is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the io.github.avansaber/seo-monster MCP server under?

io.github.avansaber/seo-monster declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.