Skip to main content
Glama
avansaber

SEOMonster

by avansaber

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
CF_ZONENoDefault Cloudflare zone hostname.
PSI_API_KEYNoPageSpeed Insights API key (optional, but strongly recommended to avoid rate limiting).
CF_API_TOKENNoCloudflare API token.
SEO_MCP_CONFIGNoPath to TOML config file. Environment variables override.
SEO_MCP_DATA_STATENoGSC data state: 'all' (default) or 'final'.all
SEO_MCP_GOOGLE_TOKENNoWritable path for cached OAuth token. Required for OAuth authentication.
SEO_MCP_INDEXNOW_KEYNoIndexNow key (sensitive). Any 8-128 hex string.
SEO_MCP_GA4_PROPERTY_IDNoDefault Google Analytics 4 property ID, e.g., 'properties/123456789'.
SEO_MCP_GSC_DEFAULT_SITENoDefault Google Search Console property, e.g., 'sc-domain:example.com'.
SEO_MCP_ALLOW_DESTRUCTIVENoSet 'true' to enable cache-purge tools. Defaults to 'false'.false
SEO_MCP_GOOGLE_CREDENTIALSNoPath to Google service account JSON key file. Alternative to OAuth.
SEO_MCP_GOOGLE_OAUTH_CLIENTNoPath to Google OAuth client-secrets JSON file (desktop app type). Required for OAuth authentication.
SEO_MCP_INDEXNOW_KEY_LOCATIONNoOverride default IndexNow key file URL.
GOOGLE_APPLICATION_CREDENTIALSNoStandard Google service account key path fallback.

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
system_statusA

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).

gsc_list_propertiesA

List every Search Console property the configured credentials can see, with each property's permission level. Use this to discover valid site_url values.

gsc_search_analyticsA

Query Search Console search analytics (clicks, impressions, CTR, position) for a property, with dimensions, a date range, optional dimension filters, and data_state. The workhorse GSC tool.

gsc_top_queriesA

Convenience wrapper: top queries for a property over the last N days by clicks. Equivalent to gsc_search_analytics with dimensions=["query"]. Uses the configured data_state (default 'all'; 'final' lags 2-3 days behind the dashboard).

gsc_top_pagesA

Convenience wrapper: top pages for a property over the last N days by clicks. Equivalent to gsc_search_analytics with dimensions=["page"]. Uses the configured data_state (default 'all'; 'final' lags 2-3 days behind the dashboard).

gsc_compare_periodsA

Compare two equal-length time windows (current vs prior) and return per-key deltas in clicks, impressions, CTR, and position, plus keys present in only one window. v0.2.0: optional sort_by / sort_dir / min_delta_* filters and an anomalies_only z-score gate so the same tool covers 'biggest gainers', 'biggest losers', 'meaningful movers', and 'statistical outliers' without needing separate tools. When anomalies_only=true, the response's filters_applied.sigma_used field reports the population-stdev (sigma) actually computed from the matched rows' sort_by metric distribution; the effective z-score cutoff applied is sigma_threshold * sigma_used.

gsc_inspect_urlA

Inspect a single URL via the URL Inspection API: index verdict, coverage state, crawl info, canonicals, and mobile/rich-results summaries when present.

gsc_batch_inspect_urlsA

Inspect several URLs in one call (capped at 25). Returns a result per URL plus a list of per-URL failures. Rate-limit and transient errors are reported per URL without failing the whole batch.

gsc_list_sitemapsA

List the sitemaps Google knows about for a property, with submission and indexing status.

gsc_submit_sitemapA

Submit a sitemap to Search Console. Requires the writable webmasters scope. Available by default (a routine SEO task; not gated). Accepts either sitemap_url (preferred, friendly name) or feedpath (the raw API field name; kept for back-compat).

gsc_request_indexingA

Ask Google to (re)crawl one or more URLs via the Indexing API (URL_UPDATED). Requires the indexing scope. Available by default. Accepts a single url (string) or urls (array up to 100). A scope or disabled-API error stops the batch and is returned with remediation; per-URL errors are collected. notify_time: null on success is normal upstream behavior, not a failure.

gsc_query_opportunitiesA

Queries already ranking in the top N positions but with below-target CTR. These are title and meta-description optimization candidates. Returns rows sorted by impressions desc (the bigger the impression volume, the more clicks a CTR lift unlocks).

gsc_query_gapsA

Queries that drive impressions but very few clicks. These are content opportunity signals: a page is being shown for the query, the click experience is not landing. Returns rows sorted by impressions desc.

gsc_new_queriesA

Queries that have impressions in the current window but had no impressions in the prior comparison window. Useful for spotting emerging topics or pages that just started ranking.

gsc_top_pages_by_queryA

Which pages rank for a specific query. The classic cannibalization audit input: if multiple pages rank for the same query, you typically want to consolidate or differentiate them. Filters search_analytics by an exact query match and returns rows by page dimension.

gsc_portfolio_summaryA

Multi-property fleet view. Lists every property the credentials can see and returns a one-row summary per property (total clicks, impressions, average CTR, average position) for the last N days. The single fastest answer to 'how is the portfolio doing?' across agency or multi-brand setups. Honors the v0.2.0 alias convention (days) and applies the configured data_state.

gsc_trending_pagesA

Pages whose impressions grew most over the last N days vs the prior N days. Equivalent to gsc_compare_periods with dimensions=["page"], sort_by="delta_impressions", sort_dir="desc". Use this for lifecycle triage (find pages to invest in or rescue).

gsc_decaying_pagesA

Pages whose impressions fell most over the last N days vs the prior N days. Equivalent to gsc_compare_periods with dimensions=["page"], sort_by="delta_impressions", sort_dir="asc". Use this for lifecycle triage (find pages to invest in or rescue).

gsc_coverage_auditA

Heuristic coverage audit. The GSC Index Coverage report is NOT exposed in the public API, so this tool takes a user-supplied URL list (typically pulled from a sitemap) and bulk-inspects each, then rolls up the verdicts (PASS / PARTIAL / FAIL plus coverage_state frequencies). Honest substitute for the Coverage UI; the AI host can use the rollup to decide which URLs to deep-inspect.

ga4_run_reportA

Run a GA4 report (Analytics Data API runReport) with arbitrary dimensions, metrics, a date range, an optional dimension filter, and ordering. The workhorse GA4 tool. Dates accept ISO (YYYY-MM-DD) or GA4 relatives like '28daysAgo' and 'today'.

ga4_top_landing_pagesA

Top landing pages by sessions over the last N days, with engagement rate and conversions. Filtered to organic search by default (the SEO view). Convenience wrapper over ga4_run_report.

ga4_traffic_by_channelA

Sessions, engaged sessions, and conversions broken down by default channel group over the last N days. Separates organic from paid / referral / direct at a glance. Convenience wrapper over ga4_run_report.

ga4_organic_search_overviewA

Organic-search health over the last N days: window totals (sessions, engaged sessions, engagement rate, average session duration, conversions) plus a day-by-day trend of the same metrics. Two GA4 reports under the hood.

ga4_setup_auditA

Audit a GA4 property's configuration for SEO-measurement readiness (read-only): is a web data stream present, are key events / conversions defined, is data retention long enough for year-over-year analysis, are content-group custom dimensions set, and (via v1alpha) is enhanced measurement on and what the Google Signals state is. Findings are severity-graded with the reason and the benign exception for each. Answers 'can this property actually measure my organic outcomes?' It checks hygiene, not whether your events are the right business events.

ga4_site_searchA

Internal site-search terms over the last N days: what visitors typed into the on-site search box (GA4 'searchTerm'), by event count and sessions. A direct content-gap signal. If the property has no site-search data (no search box, or enhanced-measurement site search is off), the tool says so honestly rather than implying zero demand. Convenience wrapper over ga4_run_report.

ga4_landing_page_conversionsA

Landing pages with their conversions / key events over the last N days, broken down by channel group and sorted by conversions descending. Filtered to organic search by default (the SEO view) so you see which entry pages actually drive organic outcomes. Convenience wrapper over ga4_run_report.

psi_analyzeA

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).

psi_opportunitiesA

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.

cf_list_zonesA

List the Cloudflare zones the API token can see, with status, plan, and id.

cf_zone_infoA

Zone overview for a hostname: status, plan, paused, name servers, created/modified.

cf_list_dnsA

List DNS records for a zone (read-only). Useful for verifying the canonical host, CNAME flattening, and TXT verification records during SEO migrations.

cf_web_analyticsA

Read-only Cloudflare Web Analytics (edge RUM). With no argument, lists the account's Web Analytics sites; with host_or_tag, returns one site's detail. Edge-measured traffic complements GA4 (it sees visits GA4's JS tag may miss). Create/delete are intentionally not exposed.

cf_purge_cacheA

Purge specific URLs from the Cloudflare cache so crawlers refetch updated content. Gated: requires SEO_MCP_ALLOW_DESTRUCTIVE=true.

cf_purge_cache_allA

Purge the entire Cloudflare cache for a zone (affects all visitors). Gated: requires SEO_MCP_ALLOW_DESTRUCTIVE=true AND a confirm value equal to the resolved zone hostname, so a full purge cannot fire ambiguously.

cf_settings_auditA

Audit a Cloudflare zone's settings for SEO and crawl/index safety (read-only): SSL/TLS mode, Always Use HTTPS, HSTS, Automatic HTTPS Rewrites, Brotli, and browser cache TTL. Findings are severity-graded with the reason and a benign exception each. Cloudflare cannot see the origin, so the SSL and Always-HTTPS checks are phrased as 'verify,' not 'fail,' and HSTS is never hard-failed (premature HSTS is dangerous and hard to undo). Answers 'are my edge settings silently sabotaging crawl/index?' It grades the edge layer only, not origin behavior.

cf_list_redirectsA

List a zone's single (dynamic) redirect rules (source, target, status code, rule id) plus the account's Bulk Redirect lists (read-only). Call this before cf_create_redirect / cf_delete_redirect / cf_bulk_redirect_upsert so writes never clobber existing rules. Pairs with redirect_chain_audit and the migration_check prompt.

cf_create_redirectA

Create one single (dynamic) redirect at the Cloudflare edge (e.g. a 301 for a renamed/migrated URL). Gated: requires SEO_MCP_ALLOW_DESTRUCTIVE=true. Validates the target is reachable (no redirecting to a dead URL), refuses loops and duplicates, and supports dry_run to preview the rule first.

cf_delete_redirectA

Delete one single (dynamic) redirect rule by its id (the rollback path for cf_create_redirect). Gated: requires SEO_MCP_ALLOW_DESTRUCTIVE=true. Get the rule id from cf_list_redirects.

cf_bulk_redirect_upsertA

Create or append many redirects at once via an account-level Bulk Redirect List (for site migrations). Gated: requires SEO_MCP_ALLOW_DESTRUCTIVE=true AND a confirm value equal to list_name. Validates every item locally first and rejects the whole batch on any bad item (never half-applies); supports dry_run. Items are added asynchronously by Cloudflare.

cf_settings_updateA

Write the SEO/crawl/security Cloudflare zone settings that cf_settings_audit grades, to close the audit -> remediate loop. Gated: requires SEO_MCP_ALLOW_DESTRUCTIVE=true. Changing ssl_mode, or any HSTS change that raises protection, additionally requires confirm= (HSTS also requires acknowledge_hsts_risk=true). Validates locally first and supports dry_run (before/after preview). Needs the Zone Settings:Edit token scope (the audit only needs Read).

cf_managed_robotsA

Get / configure / disable Cloudflare's managed robots.txt and Content-Signals policy on a zone (rides on the Bot Management config). action='get' reads the current state (read-only, un-gated). action='configure' enables/sets the managed robots.txt (managed_robots), the Content-Signals variant (cf_robots_variant: off / policy_only), and the AI-bot blocking levers (ai_bots_protection, content_bots_protection, crawler_protection). action='disable' turns managed robots.txt and the Content-Signals policy back off. NOTE: managed robots.txt and the Content-Signals policy are MUTUALLY EXCLUSIVE in Cloudflare - valid combinations are managed_robots=true + cf_robots_variant='off' (managed robots.txt) OR managed_robots=false + cf_robots_variant='policy_only' (the policy); the tool rejects the invalid combo locally. Writes are gated (SEO_MCP_ALLOW_DESTRUCTIVE) and need confirm=; supports dry_run. Always returns a caveat distinguishing the stated-preference signals from the levers that actually enforce at the edge.

indexnow_submitA

Submit a single URL to IndexNow (Bing + Yandex + Naver + Seznam + Yep). Complements gsc_request_indexing for the non-Google engines. Requires SEO_MCP_INDEXNOW_KEY plus a key-verification file at https:///.txt.

indexnow_bulk_submitA

Submit multiple URLs to IndexNow in one batched request. All URLs must share the same host (IndexNow rejects mixed-host batches with HTTP 422). Cap: 10000 URLs per call (IndexNow's documented limit).

inspect_metaA

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.

check_canonicalA

Fetch a URL and analyse its canonical link tag: report whether it is self-referential, cross-host, protocol-mismatched, or trailing-slash drift; flag missing canonical, and follow one canonical hop to confirm it itself returns 2xx.

mixed_content_checkA

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').

redirect_chain_auditA

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.

robots_txt_validateA

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.

robots_ai_postureA

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.

sitemap_validateA

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

sitemap_healthA

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.

crux_historyA

Return the last 25 weekly collection periods of Core Web Vitals at p75 (LCP, INP, CLS, etc.) for a URL or origin via the Chrome UX Report History API. Complements psi_analyze with the trend axis.

crux_snapshotA

Return the CURRENT (latest 28-day) p75 Core Web Vitals snapshot (LCP, INP, CLS, FCP, TTFB) for a URL or origin via the Chrome UX Report queryRecord API, with each metric's GOOD/NEEDS_IMPROVEMENT/POOR category and an overall verdict. Use crux_history for the 25-week trend. Small pages/origins legitimately have no field data; that returns no_data.

inspect_schemaA

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.

validate_schemaA

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.

hreflang_consistency_checkA

Validate hreflang link tags across a set of URLs. Checks: missing reciprocity, broken target URLs, duplicate hreflang on one page, missing self-link, missing x-default when there are 3+ language variants. Returns per-URL findings and a global findings list.

internal_link_graphA

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.

lighthouse_budgetA

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.

content_opportunitiesA

Rank data-grounded content/blog topics from your own Search Console data. Fuses CTR-vs-expected gap, striking-distance position, demand volume, and momentum into a transparent opportunity score, flags cannibalization, and reports the click upside plus the score's components. Read-only. It prioritizes demand you already have; it does not do cold-start keyword research (that needs existing impressions) and does not write the content or guarantee a ranking.

ai_citation_readinessA

Score whether a page is structured to be extracted and cited by LLM answer engines (ChatGPT, Perplexity, Claude, Google AI Overviews). Leads with a render-blindness check (AI crawlers do not run JS, so a client-rendered SPA is invisible to them), then scores evidence-backed signals: statistics, quotations, cited sources, no keyword stuffing. Reports schema.org / FAQ as informational only -- the 2026 evidence does NOT support them as AI-citation drivers, so they are not scored. Read-only HTTP GET; does not guarantee a citation.

ai_referral_overviewA

First-party view of AI traffic: (1) referral sessions from AI apps (ChatGPT, Perplexity, Gemini, Copilot, Claude, ...) via GA4, detected by both the native ai-assistant channel and a source-host regex; and (2) AI-crawler coverage -- whether robots.txt lets GPTBot, ClaudeBot, PerplexityBot, etc. reach the site. Needs a GA4 property (for referral) and/or a site_url (for crawl coverage). Honest bound: AI referrals undercount badly (~70% land as Direct), and AI-Overview clicks count as Organic, not here.

gsc_keyword_expandA

Ground LLM-brainstormed keyword candidates against your own Search Console data to find net-new terms you have no current footprint on. YOU (the host) supply candidates -- brainstorm them from the site's winning queries first (call gsc_top_queries). For each candidate this returns a footprint verdict (covered / thin / none) and a confidence band from sibling-strength (does it share tokens with queries that already win impressions). 'none' means no VISIBLE footprint, not no demand (GSC hides ~75% of impressions); net-new terms are scored hypotheses, not facts. Read-only.

internal_link_recommendA

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.

rank_change_attributionA

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.

topic_cluster_mapA

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.

content_brief_dataA

Gather the hard evidence for a content brief: fetch the competitor pages and return their heading union, median word count (a FLOOR, not a target), schema types, and entity coverage, plus the 2026 GEO writing directives and validation rules. Pass competitor_urls (e.g. the top SERP results) for a true brief; with none it falls back to your own ranking pages via GSC (refresh-vs-new, NOT the full SERP). The host writes the brief prose from this; SEOMonster supplies rules + evidence. Read-only; no ranking guarantee. Backs the content_brief prompt.

serp_adjacency_expandA

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.

keyword_universeA

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.

onpage_serp_gapA

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.

ai_citation_trackA

Track brand mention + citation share-of-voice across AI answer engines (Perplexity/OpenAI/Anthropic/Gemini via their APIs, Google AI Overviews via DataForSEO) for a managed prompt set, vs competitors. Samples each prompt N times (default 7) and reports visibility with a 95% confidence interval, share-of-voice, and run-to-run volatility -- NOT an 'AI rank' (single runs are statistically meaningless). Honest bound: developer-API output differs from the logged-in consumer UI, and AIO has no API. Paid + non-deterministic; results are directional and dated, not guaranteed.

Prompts

Interactive templates invoked by user choice

NameDescription
post_deploy_verifyAfter deploying or publishing content, fan out the verification across CF cache purge, GSC indexing request, IndexNow notification, and a PSI baseline. Replaces a tail of manual tool calls.
weekly_reviewWeekly SEO summary across the configured GSC property: biggest gainers, biggest losers, CTR opportunities, content gaps, and the GA4 organic engagement context.
content_auditCannibalization audit for the configured GSC property. Finds queries where multiple pages compete, surfaces the competing pages, and recommends consolidate / differentiate / accept.
migration_checkPre/post migration validation. For each URL, check Google's current indexed status, canonical agreement, and last crawl. Flag URLs needing remediation.
technical_seo_auditSingle-URL technical-SEO sweep (one page, deep). Chains inspect_meta, check_canonical, redirect_chain_audit, mixed_content_check, and robots_txt_validate for the URL, then sitemap_health for its host root. Produces a triage list ranked by severity. For a batch deploy gate use pre_deploy_check; for Rich Results use structured_data_audit; for account/infra configuration use seo_setup_audit.
structured_data_auditStructured-data + cross-site sweep (the Rich Results lane). For each URL: inspect_schema to see what JSON-LD is present, then validate_schema to verdict the Rich Results required fields. If 2+ URLs are passed, also run hreflang_consistency_check across the set. Produces a per-URL findings list plus a global reciprocity-and-target report. For a full single-page technical sweep use technical_seo_audit; for a deploy gate use pre_deploy_check.
pre_deploy_checkDeploy-gate workflow. For each URL: inspect_meta, check_canonical, validate_schema, redirect_chain_audit, mixed_content_check. Plus robots_txt_validate for the site. The recognizable label SEO teams reach for before pushing a production deploy. Complements technical_seo_audit (which audits one URL deeply) and structured_data_audit (which focuses on Rich Results). Use this for the broad batch check.
content_briefBuild an evidence-based content brief for a topic. Pulls the current top rankers from GSC, inspects their meta + schema (and your existing page if any), then synthesizes a brief with a calibrated word-count target, heading structure, schema type, internal-link targets, competitor gaps, and target queries. SEOMonster brings the rules and the competitor evidence; the LLM brings the writing. No ranking guarantee: this structures the work.
content_outlineTurn a content brief into a validated H2/H3 outline. States the structural rules the outline must pass (>= 5 H2 sections, >= 70% of the brief's target queries referenced, H1 carries the primary keyword, intro -> body -> conclusion flow, HowTo schema requires structured steps). SEOMonster supplies the structure rules; the LLM writes the outline.
content_articleDraft the full article from an outline + brief, then self-validate against the brief's rules: word count within +/-15% of target, per-section minimum length, sensible keyword density, internal-link suggestions, an inline JSON-LD schema hint, no em-dashes, no filler. The LLM writes the prose; SEOMonster supplies the validation checklist.
content_workflowEnd-to-end content pipeline orchestration: surface an opportunity with content_opportunities, then chain content_brief -> content_outline -> content_article, gate the draft URL with pre_deploy_check, notify search engines via gsc_request_indexing + indexnow_submit, and schedule a content_performance check. SEOMonster sequences the chain; the LLM does the writing at each step.
content_performanceLayer-5 measurement of published content. Compares the URL's ranking + clicks before and after publish (gsc_compare_periods + gsc_search_analytics filtered to the URL/queries) ~4 to 8 weeks post-publish and outputs a before/after table. Honest framing: it measures the outcome, it does not guarantee it.
seo_setup_auditWhole-stack configuration audit: is your stack set up so SEO can even work? Chains ga4_setup_audit (measurement), cf_settings_audit (CDN/TLS), psi_opportunities (Lighthouse SEO basics on a representative URL), and robots_txt_validate (crawl access), then produces one severity-ranked report. Audits configuration hygiene and removes known blockers; it does not predict ranking.

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/avansaber/seo-monster'

If you have feedback or need assistance with the MCP directory API, please join our Discord server