Skip to main content
Glama

Server Details

Ask your AI assistant about your own website's SEO and get answers from your real data, not generic advice.

One connector, all your channels: Google Search Console (rankings, clicks, indexing), Google Analytics (traffic and sources), Google Ads (campaigns and search terms), Google Business Profile (local visibility and reviews), Google Trends, keyword research, backlinks and link prospects, competitor rankings, site crawls, and AI visibility (does ChatGPT mention your site?).

Ask things like: which keywords am I one push away from page 1 for? Why did traffic drop last month? Which competitor is outranking me, and where? Are my ads and SEO fighting over the same keywords?

Then let it act. On a paid plan, your assistant can prepare SEO fixes, content campaigns, and article drafts. Nothing touches your site until you approve it in SEOmatic, and every change shows before-and-after results.

Connect via OAuth: log in, pick your site, done. No API key needed.

Ownership verified
Status
Healthy
Uptime
99.6% over 41 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
Minh42/seomatic-mcp
GitHub Stars
0
Server Listing
SEOmatic MCP Server

TDQS

A3.6/5.0

Scored across 38 tools

Disambiguation3/5

The tool set covers many adjacent SEO/AI-visibility domains (scans, citations, crawler activity, GA4 traffic, GSC, SERP, keywords, tasks, campaigns, trust facts), and several tools overlap conceptually. Descriptions do a good job of explicitly distinguishing them, but an agent can still confuse which AI-visibility or task/approval tool to call first. Boundaries are mostly documented rather than inherently crisp.

Naming Consistency3/5

All names use snake_case, which is readable, but the verb pattern is mixed: some start with get_, run_, set_, show_, confirm_, generate_, import_, upload_, or resume_, while many are noun phrases like ai_citations, billing_status, clause_manage, keyword_clusters, and traffic_analytics. There is no single predictable verb_noun convention.

Tool Count2/5

With 38 tools, the surface is heavy for an MCP server and sits well above the typical 3–15 well-scoped range. The platform is broad, so some expansion is justified, but the count makes selection and maintenance clearly more difficult than necessary.

Completeness2/5

The server covers a wide range of SEO, AI-visibility, analytics, and agent-task operations, but it references a get_ai_visibility tool for polling scan results that is absent from the provided list. That creates a dead end for fresh AI-visibility scans and can force the agent to waste credits or fail to retrieve results cleanly. Other lifecycle gaps exist around datasets and some content operations.

Available Tools

38 tools
ai_citationsObserved AI citations & brand facts
Read-onlyIdempotent
Inspect

This site's OWN first-party AI-citation data, the part no scan can see. observed_citations: citations recorded in REAL logged-in AI answers (ChatGPT, Perplexity, Gemini, Copilot, Claude, AI Overviews) by the user's browser extension, with per-engine counts and best rank - engines personalize and gate their APIs, so a server-side scan sees a de-personalized view while this sees what a real human was shown. brand_facts: the canonical business facts this site publishes for AI engines, plus internal-link health; use them to spot an AI answer contradicting the owner's own declaration. Counts only, never prompt or answer text. scan_results reads the latest server-side SCAN instead: per-engine brand visibility, the prompts where the brand was MISSED and who won them, competitors, and the sources engines cite. Observed vs scanned is the key distinction - observed is what a real logged-in human saw, scanned is a clean de-personalized baseline comparable over time. For AI traffic per page use traffic_analytics. Already scoped to the connected workspace and its site; no domain or site parameter is needed. Cost: FREE - reads your connected/stored data, no AI credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNolook-back window in days (1-90, default 28).
actionYesWhich operation to run. observed_citations (real logged-in AI answers that cited this site); brand_facts (declared canonical facts + internal-link health); scan_results (latest scan: per-engine visibility, missed prompts, competitors, cited sources).
scanIdNoscan_results only: a specific scan id from recentScans. Omit for the latest completed scan.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

billing_statusBilling Status
Read-onlyIdempotent
Inspect

The workspace's plan, status (active, trial, paused, cancelling), next renewal or end date, workspaces in use and whether an extra workspace can be added without a plan change, free questions left on the free plan, and the billing page link for invoices, payment method, pausing or cancelling. Workspace owner only; a member is told to ask the owner. Cost: FREE - reads stored/own data, no AI credits.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

campaign_manageSEO Campaigns & Content
Destructive
Inspect

Read campaigns and stage page-scale, content-sweep, or bulk-edit campaigns and blog articles. All staging is proposal-based and approval-gated; nothing publishes without the user. Already scoped to the connected workspace and its site; no domain or site parameter is needed. Cost: list/get reads are FREE. Creating/approving a campaign bills AI credits per page only as the staged work actually executes; nothing is spent at staging time.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNopropose_page_scale only (required): page kind, e.g. "location pages".
rowsNopropose_page_scale, rowSourceKind=user: one object per page. propose_location_pages (required): one object per location (name + the facts the user gave; enrich: pageUrl).
urlsNopropose_bulk_edit, selectorKind=urls: the pages.
briefNomanage+update_brief: replacement brief. Also propose_page_scale (template brief) and propose_content_sweep (shared direction).
titleNopropose_page_scale (required), propose_content_sweep (required), propose_bulk_edit and propose_location_pages (optional).
actionYesWhich operation to run. list (campaigns with status + task counts); manage (approve/pause/resume/abandon/update a campaign); propose_page_scale (a set of pages on the site own page or own template); propose_location_pages (location pages on the site own layout (drafts), or existing ones improved); propose_content_sweep (N distinct blog articles as a campaign); propose_bulk_edit (one instruction across many pages); write_articles (direct N-article staging).
statusNolist only: filter campaigns by status.
topicsNopropose_content_sweep (required, up to 50) and write_articles (required, 2-50). One distinct article per topic.
confirmNomanage only, approve + abandon: must be true - attests the user explicitly asked for this (approve releases work + spend; abandon is irreversible).
maxPagesNopropose_bulk_edit only: cap the sweep size.
segmentsNopropose_bulk_edit: advanced mixed-template selectors (overrides selectorKind/instruction).
taskTypeNopropose_bulk_edit only (required): the sweep type, e.g. ctr_fix, schema, content_refresh.
projectIdNopropose_page_scale: the customer's own project whose fields hold their {{Column}} template. Needs projectId or exemplarUrl.
rowTargetNopropose_page_scale only: target number of rows/pages.
campaignIdNomanage only: the campaign to act on.
pathPrefixNopropose_bulk_edit, selectorKind=path_prefix: the prefix.
autoPublishNowrite_articles only: default true (articles that pass our checks publish on their own, with undo); false keeps them as drafts.
exemplarUrlNopropose_location_pages (create) and propose_page_scale: the customer's own page the new pages copy (layout, embeds, page type). propose_page_scale needs exemplarUrl or projectId.
instructionNopropose_bulk_edit only: shared per-page brief.
allowGenTextNopropose_page_scale only: allow per-row AI text (costs credits).
locationModeNopropose_location_pages only (required): create = new draft pages modelled on exemplarUrl; enrich = rewrite existing location pages (rows carry pageUrl).
manageActionNomanage only: what to do to the campaign. approve releases the campaign to execution (the USER must have explicitly said yes first).
selectorKindNopropose_bulk_edit only: how to select pages.
exemplarPlaceNopropose_location_pages, create: the place the model page is about, when its title does not say.
rowSourceKindNopropose_page_scale only: where page rows come from (required with exemplarUrl; with projectId defaults to the project dataset). No AI source: an invented row list is refused.
publishAsDraftNopropose_page_scale only: publish pages as drafts.
libraryDatasetIdNopropose_page_scale, rowSourceKind=library: dataset id to attach.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

confirm_trust_factConfirm Trust FactInspect

Record the USER'S confirmation of one harvested trust fact (by id from show_trust_facts_card), allowing the agent's writers to claim it. THE CLICK IS THE CONSENT: call this ONLY when the user explicitly confirmed that exact fact - the Trust Profile widget's Confirm button is the intended caller, or the user saying in their own words 'yes, use that one'. NEVER confirm on your own judgment, never confirm in bulk, never treat silence as consent (same doctrine as task_manage decide). Confirming is reversible in Settings → AI Agents. Cost: FREE - reads your connected/stored data, no AI credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
factIdYesThe fact id from show_trust_facts_card

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

contact_supportContact Support
Read-onlyIdempotent
Inspect

Reach the SEOmatic team: returns the support email and, when message is given, passes the message to the team (they reply by email). Use when the user asks for a person, reports a bug, or has a billing or account problem the tools cannot solve. Not for cancelling: the owner cancels in one click on the billing page (billing_status gives the link). Cost: FREE.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNoA reply address, only if the user gave one different from their account email.
messageNoThe user's problem or question in their words. Omit to just get the address.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

dataset_libraryDatasets & Templates
Read-onlyIdempotent
Inspect

The dataset library and page templates that power programmatic pages: list datasets, sample rows, list templates, and read one template. Reads stored data as-is: sample rows are capped, and an empty library returns empty lists, not an error. Already scoped to the connected workspace and its site; no domain or site parameter is needed. Cost: FREE - reads your connected/stored data, no AI credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
seedNofind_page_set_patterns: a head term to research with the keyword provider ('signage'); omit for Search Console only.
limitNodataset_rows only: how many rows to sample.
actionYesWhich operation to run. find_page_set_patterns (keyword research for a page set: the repeated query templates with a varying slot, entities ranked by demand (a seed term adds the keyword provider and costs credits)); list_datasets (available datasets); list_page_projects (the site own page projects (own {{Column}} templates)); dataset_rows (sample rows from one dataset); list_templates (built-in page templates); get_template (one template in full).
datasetIdNodataset_rows only: the dataset to sample.
templateIdNoget_template only: the template to read.
minEntitiesNofind_page_set_patterns: smallest set worth showing (default 5).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

generate_articleGenerate ArticleInspect

Write one in-depth SEO article on a topic ($9, consumes 1 prepaid pay-as-you-go unit; no subscription required). Research-grounded against live rankings, quality-gated, delivered as markdown + HTML. Generation is async (a few minutes): this returns an article_id to poll with get_article. With no prepaid units left the result is a payment_required payload with the price and a buy link (not a failure). Cost: FREE - reads your connected/stored data, no AI credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicYesThe keyword/topic to write about, e.g. "how to choose trail running shoes".

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

get_ai_crawler_activityAI Crawler Activity
Read-onlyIdempotent
Inspect

Which AI bots (GPTBot, ChatGPT-User, PerplexityBot, ClaudeBot…) visited the user's site, classified by purpose (answer-time retrieval / AI-search indexing / model training), with per-bot trends, top crawled pages and the crawl→citation funnel. Needs a one-time setup (WordPress plugin or Cloudflare Worker sends bot visits to SEOmatic). When it is not set up the result says so (connected=false, needs_setup=true): visits are UNMEASURED, never zero - relay the setup link it carries, and use its robotsAccess check (read live from robots.txt) to say whether AI bots are allowed in at all. Cost: FREE - reads your connected/stored data, no AI credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
windowDaysNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

get_ai_funnelAI Referral Funnel
Read-onlyIdempotent
Inspect

The full AI-search funnel per page of the user's site, joined across three measurements nobody else holds together: CITED (engines named the page as a source in tracked answers), CRAWLED (answer-time/indexing AI bots actually fetched it), REFERRED (GA4-measured assistant-referred visitors landing on it), plus the market's captured fan-out query count as stage 0. HONESTY: check measured first - a false flag means that whole column is UNMEASURED (crawler ingest not connected / GA4 not connected / pre-capture scans), never zero. A page cited but never crawled suggests engines answer from cache; crawled but never cited is content that gets read and passed over; cited+crawled+referred is the full loop working. Cost: FREE - reads your connected/stored data, no AI credits.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

get_articleArticle Status
Read-onlyIdempotent
Inspect

Fetch a pay-as-you-go article by id (poll after generate_article), or omit article_id to list the most recent articles and the prepaid balance. A ready article carries BOTH formats: markdown (source of truth) and html. Cost: FREE - reads your connected/stored data, no AI credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
article_idNoThe id returned by generate_article. Omit to list.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

get_credit_usageCredit Usage
Read-onlyIdempotent
Inspect

Where this workspace's AI credits went in the current billing period: customer-language groups (items) AND the raw per-feature ledger with event counts (features) - the per-agent/per-action granularity an integration needs. Total reconciles with the plan meter. Free operations are listed explicitly. Refunds show as negative credits. Cost: FREE - reads stored/own data, no AI credits.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

get_startedGet Started: Site Verdict and Top 3 Actions
Read-onlyIdempotent
Inspect

Gives an overview of the user's OWN site in one answer; useful at the start of a session or when the user asks how their site is doing, what to fix, where to start, or what SEOmatic can do. The answer covers: whether Google can index the site (status, redirects, noindex, canonical, robots.txt, JavaScript-only pages, a sample of up to 10 sitemap pages), Search Console clicks and the near-page-one queries worth pushing (when connected), market data in the site's own country, a verdict, the top 3 actions ranked by impact with the numbers behind them, what could not be checked, and one next step. Present the verdict and the 3 actions; do not dump the evidence. With no site on record and none given, pass topic (what the business does) for a market starter instead of asking twice. For a competitor's site use the competitor tools instead. Cost: FREE for reads; the one market-data lookup uses the free allowance or credits like any keyword question.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteNoThe user's OWN website, only if the workspace has none on record yet (the answer says so). Never a competitor.
topicNoWhat the business sells or does, in the words a customer would search (e.g. "wedding photographer lyon"). Use when no site is on record and the user has not given one: the answer sizes that market instead.
confirmed_ownNoSet true only after the user confirmed that `site` is their own website; the workspace then remembers it.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

get_target_termsTarget Terms
Read-onlyIdempotent
Inspect

The searches this business says bring it customers, each with the page that should show for it and a priority (high, medium, low). The agents plan around them: when Google shows a different page for a term, the chosen page gets the fix. Cost: FREE - reads your connected/stored data, no AI credits.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

get_task_rollbackTask Rollback Detail
Read-onlyIdempotent
Inspect

What the pipeline can RESTORE for an executed task: every live edit stores the page's full pre-edit state (rollback_data) before writing. Call this FIRST whenever the user reports an agent edit removed, broke, or damaged something on a page - NEVER tell the user original content is lost without checking here. Returns which fields are recoverable, the original embed code (maps/videos/booking widgets) verbatim, and how the user triggers the one-click restore. Cost: FREE - reads your connected/stored data, no AI credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdYesThe executed task id

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

get_trust_entitiesTrust Entities
Read-onlyIdempotent
Inspect

The trust entities AI engines consult when answering questions about the user's market, mined from the ACTUAL fan-out queries our scans capture (site:-scoped searches + review platforms / analysts like G2, Gartner, Reddit). Every entity carries the honest cross: queried AND cited, or queried-but-never-cited (a retrieval door the brand hasn't earned - the outreach list), plus cited-without-querying hosts that pure fan-out mining is blind to. ownSite entries are hygiene, not outreach. findingsWithFanouts is the denominator - engines only started exposing fan-outs in our scans from 2026-09-15, so a low number means run a fresh scan, not 'no trust entities exist'. progress.opened lists doors that OPENED since the previous scan (queried-but-never-cited then, cited now) - when non-empty, lead with it: it is the receipt that the user's corroboration homework landed. Cost: FREE - reads your connected/stored data, no AI credits.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

get_trust_factsTrust Profile Facts
Read-onlyIdempotent
Inspect

The workspace's TRUST PROFILE: the provenance-tracked, verifiable business facts (credentials, years of experience, awards, review counts, guarantees) the agent's writers are allowed to claim in E-E-A-T work. Each fact carries its source URL and whether the customer confirmed it. When this list is empty, the agent deliberately writes AROUND trust claims rather than inventing them - if the user wants stronger E-E-A-T content, point them to Settings → Agent → Trust Profile to scan their site for facts or add their own (adding/confirming happens there, never through chat). Cost: FREE - reads your connected/stored data, no AI credits.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

gsc_indexingURL Indexing Inspection
Read-onlyIdempotent
Inspect

Check Google index status and coverage diagnostics for one URL or a batch of URLs (coverage state, crawl status, robots/canonical issues). Batch inspection caps at 50 URLs per call (Google allows ~2,000/day per property) and reports each URL independently - one failed URL never fails the batch. When Google answers slowly, the result is partial: it carries the finished URLs plus notChecked, the URLs to send in the next call. Already scoped to the connected workspace and its site; no domain or site parameter is needed. Cost: FREE - reads your connected/stored data, no AI credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoinspect only: the fully-qualified URL to inspect.
urlsNobatch_inspect only: the URLs to inspect.
actionYesWhich operation to run. inspect (one URL, full diagnostics); batch_inspect (many URLs, summary each).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

gsc_insightsSearch Console Insights
Read-onlyIdempotent
Inspect

Derived analyses over your Search Console data: keyword cannibalization, brand vs non-brand split, CTR outliers (pages under-earning their position), rich-result appearance performance, 16-month seasonality verdicts, and sitemap health. Analyses read your captured Search Console history (finalized weekly), so verdicts lag live Google by a few days. Use gsc_performance for raw metrics; use this for the diagnosis layer. Already scoped to the connected workspace and its site; no domain or site parameter is needed. Cost: FREE - reads your connected/stored data, no AI credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoLook-back window in days (7-90, default 28).
actionYesWhich operation to run. cannibalization (queries split across competing pages); brand_split (brand vs non-brand performance); ctr_outliers (pages under-earning their position (title/meta candidates)); search_appearance (rich results / enhanced appearance breakdown); seasonality (16-month YoY verdict: real change vs seasonal dip); sitemaps (sitemap errors, warnings, pending, staleness).
brandTermsNobrand_split only: brand words/variants, lowercase. Defaults to the domain name.
minImpressionsNocannibalization/ctr_outliers: minimum impression volume to judge (defaults 100/200).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

gsc_performanceSearch Console Performance
Read-onlyIdempotent
Inspect

Read Google Search Console performance (clicks, impressions, CTR, position) by query, page, dimension, or period comparison. Your own connected property; data is Google-finalized with a ~2-3 day lag. days/dates bound every action, and compare_periods contrasts the window with the one immediately before it. Queries for ONE page: dimension_breakdown with dimension=query and filterPage (that page's own numbers per query). Pages for ONE query: dimension_breakdown with dimension=page and filterQuery, or query_pages. The whole site's query-to-page map: query_page_matrix. For diagnosis (cannibalization, CTR outliers) use gsc_insights rather than recomputing here. Already scoped to the connected workspace and its site; no domain or site parameter is needed. Cost: FREE - reads your connected/stored data, no AI credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoLook-back window in days (defaults ~28). 1-90 for most actions; 7-90 for trend.
pageNoquery_pages only: a full page URL to check - returns its own row for each query, or null when it does not rank.
depthNofolder_rollup only: path depth to group by (1-3, default 1).
limitNoRow cap. top_queries/top_pages/dimension_breakdown default 50; compare_periods rows per period default 500. Ignored by query_page_matrix (use maxRows) and trend.
actionYesWhich operation to run. top_queries (top search queries); top_pages (top pages); dimension_breakdown (by device/country/date, or one page's queries (query + filterPage) / one query's pages (page + filterQuery)); query_page_matrix (cannibalization / query-to-page map); query_pages (which pages rank for given queries, with each page's own numbers); compare_periods (decay/growth vs the prior period); trend (daily clicks/impressions over time); discover_news (Discover / News / Image / Video surfaces); folder_rollup (performance by URL folder / site section); fresh (provisional today/yesterday numbers (hours-old data)).
maxRowsNoquery_page_matrix only: max query-page pairs (100-1000, default 200).
queriesNoREQUIRED for query_pages: 1-5 exact search queries. Page rows are that page's own numbers; queryTotal is site-wide and never a page's number.
surfaceNodiscover_news only: which surface (default discover).
dimensionNoREQUIRED for dimension_breakdown: device|country|date|query|page (query + filterPage = the queries one page ranks for, with that page's own numbers; page + filterQuery = the pages ranking for one query). For compare_periods: query|page (default page). Ignored otherwise.
filterPageNodimension_breakdown only: restrict to one exact page URL, as Search Console records it (pair with dimension=query to see the queries that page ranks for).
filterQueryNodimension_breakdown only: restrict to one exact query (pair with dimension=page to see which pages rank for it).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

import_attachment_as_datasetImport Dataset from AttachmentInspect

Promote a spreadsheet the user uploaded IN THIS CONVERSATION (CSV/Excel - its preview carries an attachmentId) into a private dataset in their library. Call it when the user wants the file used as campaign data (pages-at-scale rows, bulk targets) or asks to save it as a dataset - the returned id then goes to propose_page_scale_campaign as libraryDatasetId with rowSourceKind 'library'. Only works on files uploaded here (stash lives ~2h); nothing else is creatable this way. Cost: FREE - reads your connected/stored data, no AI credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoDataset name (defaults to the file name)
attachmentIdYesThe attachmentId shown in the uploaded file preview

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

keyword_clustersKeyword Cluster Map
Read-onlyIdempotent
Inspect

The agent's cached keyword-cluster map built from the workspace's GSC query universe (pillar, cannibalization, gap, and covered clusters). A stored lookup, not a recomputation: it reflects the last refresh and is empty until GSC history exists. For live demand numbers use keyword_research. Already scoped to the connected workspace and its site; no domain or site parameter is needed. Cost: FREE - reads your connected/stored data, no AI credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesWhich operation to run. list.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

keyword_researchKeyword Research
Read-onlyIdempotent
Inspect

Research keyword demand: search volume, difficulty, CPC, and intent, plus keyword ideas, Google Trends interest and related queries, and Google Ads keyword performance. Volume and difficulty come from a live keyword vendor: a workspace without vendor credits gets an explanatory error with the path forward, never fabricated numbers. Use for what to target and how much demand exists; for who ranks today use serp_competitors. Already scoped to the connected workspace and its site; no domain or site parameter is needed. Cost: metrics and suggestions bill AI credits (live vendor data at actual cost); trends, related_queries, compare and performance are FREE (Google Trends / your connected Google Ads).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNosuggestions/ads_performance: max results.
actionYesWhich operation to run. metrics (volume/difficulty/CPC/intent); suggestions (keyword ideas from seeds); compare_trends (Trends interest, keywords side by side); trend (Trends interest over time for one keyword); related (Trends related queries).
keywordNotrend/related: the single keyword to analyze.
keywordsNometrics/suggestions/compare_trends: the seed or target keywords.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

local_presenceLocal Business Presence
Read-onlyIdempotent
Inspect

Read the local search presence of the connected business: Business Profile locations, local ranking for money keywords, and review ratings. Available actions depend on what is connected for this workspace. Use for local and map-pack questions; for national rankings use serp_competitors. Already scoped to the connected workspace and its site; no domain or site parameter is needed. Cost: list_locations and reviews read your connected Business Profile and are FREE; visibility bills AI credits (live local SERP data at actual cost).

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesWhich operation to run. visibility (local organic position for keywords).
keywordsNovisibility only: the money keywords to measure.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

resume_page_publishingResume Page Publishing
Destructive
Inspect

Resume a page campaign whose publishing was PAUSED BY THE SCALE GOVERNOR (list_seo_campaigns shows publishingHold on the campaign: the first published pages earned essentially no Google search appearances, so the drip stopped itself before publishing more of the same template). Resuming is an explicit, informed decision: pass the resumeToken from that hold - the token is derived from the hold itself, so having it proves the evidence was read. STRONGLY consider fixing the template/content first (the hold says why the pages aren't being found); resuming publishes more of what is currently not working. Cost: resuming is free, but the released pages bill AI credits as each one generates/publishes (same as campaign execution).

ParametersJSON Schema
NameRequiredDescriptionDefault
campaignIdYesThe held campaign id
resumeTokenYesThe hold's resumeToken from list_seo_campaigns.publishingHold

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

run_ai_visibility_scanRun AI Visibility ScanInspect

Start a FRESH AI-search visibility scan: queries the live AI engines (ChatGPT, Claude and Google AI Overviews by default, plus any the monitor switched on, such as Perplexity) with buyer-intent prompts and measures whether the brand appears. Scans YOUR OWN site by default; pass domain to scan a COMPETITOR instead (same engines, their brand). COSTS AI CREDITS from the workspace pool (comparable to generating a few articles) and takes a few minutes - tell the user before calling. Returns a scanId immediately; poll results with get_ai_visibility. Check get_ai_visibility FIRST: reading an existing recent scan is free. Limited to one assistant-triggered scan per hour.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainNoCompetitor domain to scan instead of your own site, e.g. "competitor.com". Omit for your own site.
is_my_siteNoOnly when the workspace has no site on record yet: true if the domain is the user's own site, false if it is a competitor. Ask the user; never guess.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

serp_competitorsSERP & Competitors
Read-onlyIdempotent
Inspect

Inspect the live search landscape: which SERP features (AI Overview, snippet, PAA, local pack, video) appear for a keyword, plus domain-level top rankings, visibility distribution, and competitor domains. Results are fetched from the live SERP at call time, capped by limit per action. Use for who ranks and why; for keyword demand use keyword_research. Already scoped to the connected workspace and its site; no domain or site parameter is needed. Cost: bills AI credits per call (live vendor data at actual cost); reads of your own stored data elsewhere are free.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNomax results where applicable.
actionYesWhich operation to run. features (which SERP features appear for a keyword); domain_rankings (top keywords a domain ranks for); domain_overview (organic visibility distribution); domain_competitors (domains ranking for similar keywords).
domainNodomain_rankings/domain_overview/domain_competitors: the domain. Omit for the connected workspace's own site (the server fills it in); pass only for a competitor.
keywordsNofeatures only: the keyword(s) to inspect.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

set_target_termsSave Target Terms
Destructive
Inspect

Save the searches the USER says bring them business: add or update terms (each with the full URL of the page on their own site that should show for it, and a priority), or remove terms. Call only with terms the user named or confirmed, never ones you guessed. Pages on another site are refused. Up to 50 terms per site; the agents plan around them from the next run. Cost: FREE - reads your connected/stored data, no AI credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
addNoTerms to add or update (same term = update)
removeNoTerms to stop tracking

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

show_approval_cardsShow Approval CardsInspect

Render inline Approve/Dismiss cards for EXISTING proposed tasks and campaigns (get ids from list_seo_tasks / list_seo_campaigns first). Call this whenever the user wants to see, review, or act on proposals that already exist - the cards appear directly in your reply. NEVER send the user to the dashboard to approve something; this brings the approval to the conversation. Cost: FREE - reads stored/own data, no AI credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdsNo
campaignIdsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

show_trust_facts_cardTrust Profile Card
Read-onlyIdempotent
Inspect

Render the Trust Profile card inline: harvested-but-unconfirmed business facts with one-tap Confirm buttons, or a 'Scan my site' button when the profile is empty. Use when the conversation touches E-E-A-T/credibility/trust, or when explaining that the agent omitted trust claims because no confirmed facts exist. The user's tap does the confirming - never claim a fact is confirmed until they act. Cost: FREE - reads your connected/stored data, no AI credits.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

site_auditSite-Wide Technical Audit
Read-onlyIdempotent
Inspect

Site-WIDE technical SEO audit: crawls up to 30 of the workspace's pages (from the synced page inventory, or pass specific urls) and aggregates cross-page issues a single-page check cannot see - duplicate titles and meta descriptions, missing metas, near-empty pages, noindex leaks (meta tag or X-Robots-Tag header), canonicals pointing elsewhere, slow pages, dead pages, and broken internal links (link targets are HEAD-checked). FREE: fetches with SEOmatic's own crawler, no vendor spend. Bounded by a time budget; a partial crawl says so explicitly. Cost: FREE - crawls with SEOmatic's own crawler at call time, no AI credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlsNoSpecific pages to audit (max 30). Omit to audit the newest pages from the synced inventory.
limitNoHow many inventory pages to crawl when urls is omitted (default 20).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

site_pagesSite & Page Analysis
Read-onlyIdempotent
Inspect

Analyze pages: on-page SEO score and critical issues for a URL, raw crawl metadata (title, meta, headings, links), and the page inventory of the site. analyze and crawl fetch the LIVE page at call time (an unreachable URL returns the fetch error); inventory reads the stored index, synced daily, so brand-new pages can lag a day. Use for page-level diagnosis; for search performance of those pages use gsc_performance. Already scoped to the connected workspace and its site; no domain or site parameter is needed. Cost: FREE - reads your connected/stored data, no AI credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoanalyze/crawl: the URL to inspect.
limitNoinventory only: max pages to return.
actionYesWhich operation to run. score_draft (score a pasted DRAFT pre-publish (deterministic, free)); analyze (SEO score + critical issues); crawl (title/meta/headings/links); inventory (the user's real synced pages).
contentNoscore_draft: the draft HTML or plain text/markdown.
contentTypeNoscore_draft: guide|tutorial|listicle|review|roundup|comparison|case_study|research|opinion (default guide).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

strategy_insightsSEO Strategy & Diagnosis
Read-onlyIdempotent
Inspect

The agent's cached diagnosis for this workspace: a compact snapshot, the current strategy, one raw signal in full, and AI-search content scores. Signals refresh nightly; the strategy itself updates on the agent's weekly cycle. A workspace the agent has never diagnosed says so rather than inventing one. Already scoped to the connected workspace and its site; no domain or site parameter is needed. Cost: FREE - reads your connected/stored data, no AI credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesWhich operation to run. snapshot (compact brief of cached signals); strategy (themes + ranked big plays); signal (one cached signal in full); content_scores (AI-search scores for generated articles).
signalNosignal only: which cached signal to read (e.g. index_coverage, backlink_profile).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

task_manageSEO Tasks
Destructive
Inspect

The agent's full task lifecycle: read the plan board, stage proposals (create accepts up to 5 per call), approve/dismiss (decide), run approved tasks (execute), undo applied changes (rollback), and confirm a hand-pasted change (paste_done: SEOmatic looks for it on the live page before measuring). Staging never runs anything; every mutation is human-approval-gated - decide records the human's decision (auto-executable standalone tasks then dispatch within seconds; the response says whether they did), execute force-runs a task the instant path declined or releases held work with a staged-content reviewToken, rollback is drift-guarded. Already scoped to the connected workspace and its site; no domain or site parameter is needed. Cost: list/get/create/decide are FREE (create only STAGES proposals, nothing runs). rollback is FREE but UNDOES a live change - it is an action, not a read. paste_done is FREE. execute runs the agent and bills AI credits when the work runs (a title/meta/H1 fix is typically a few hundred credits); approving auto-dispatches that run. Inspecting tasks, evidence and statuses never triggers re-analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNolist only: filter by task type.
forceNorollback only: undo even though the live page drifted from what the agent wrote. Set ONLY after the user explicitly confirmed overwriting their newer edit.
tasksNocreate only: up to 5 task objects to stage as proposals (see the SEOmatic docs for the task shape).
actionYesWhich operation to run. list (the plan board (filterable)); get (one task in full detail); create (stage up to 5 task proposals); decide (approve or dismiss a staged proposal (the approval loop)); execute (run an approved task now; a reviewToken releases staged holds; refresh_pull_request updates an open GitHub pull request, or opens a new one if someone else changed its branch); rollback (undo an executed task's live change (drift-guarded)); paste_done (the user pasted a handed-over change; SEOmatic looks for it on the live page before measuring).
statusNolist only: filter by task status (proposed, approved, ...).
taskIdNoget/decide/execute/rollback/paste_done: the task to act on.
decisionNodecide only: approve releases the task to the gated pipeline; dismiss archives it. Approving an indexation-destructive type (noindex, redirect) also requires confirmDestructive: true.
reviewTokenNoexecute only: from get's stagedReview block. Releases a staged hold (first rewrite / money page); pass it ONLY after the human explicitly approved the staged content itself.
confirmDestructiveNodecide/execute: required true for indexation-destructive types (noindex, redirect). Attestation that the human explicitly signed off on this specific task after seeing its URL and consequence - never set it on your own judgment.
refresh_pull_requestNoexecute only, GitHub: rewrite the task's OPEN pull request against the site's latest version (the dashboard's Refresh): updates the pull request, or opens a new one if someone else changed its branch. Runs the task again, so it uses AI credits like the first run - set it ONLY when the user asked for the refresh.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

traffic_analyticsTraffic & Ads Analytics
Read-onlyIdempotent
Inspect

Google Analytics (GA4) traffic and Google Ads account, campaign, and search-term performance. overview/sources/landing_pages/top_pages read GA4; the ads_* actions read Google Ads - each names its missing connection instead of returning empty data. GA4 sessions and Search Console clicks measure different things: for search clicks use gsc_performance. ai_pages is first-party AI engagement (answer-crawler fetches and AI-referred visits per page) that GA4 cannot attribute - it files that traffic as "Direct". Already scoped to the connected workspace and its site; no domain or site parameter is needed. Cost: FREE - reads your connected/stored data, no AI credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNolook-back window in days.
limitNomax rows where applicable.
actionYesWhich operation to run. ai_pages (first-party AI engagement per page: crawler fetches + AI-referred visits).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

upload_csvUpload a CSVInspect

Stage CSV TEXT so it can be imported as a dataset. This exists for MCP Apps hosts: MCP has no file transport, so a widget reads the user's file in the browser and passes its text here, receiving the same attachmentId a chat upload would mint. Pass that id straight to import_attachment_as_dataset. In chat you never need this - the upload preview already carries an attachmentId. Do NOT invent CSV content to call this with; it is a transport for a file the USER chose. Cost: FREE - reads your connected/stored data, no AI credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileNameYesThe file's name, e.g. cities.csv
csvContentYesThe raw CSV text, header row first

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

visibility_manageAI Visibility Monitor
Destructive
Inspect

Manage the workspace's AI-visibility monitor: list the tracked prompts scans ask every engine, add/edit/remove prompts, set the scan cadence, and choose which AI engines are tracked. Reads of scan RESULTS live in ai_citations action scan_results. Running a FRESH scan is not available over MCP; point the user at the dashboard. Config changes apply directly (no staging) but are plan-capped, and cadence and engines are spend levers - 'daily' multiplies recurring scan cost ~7x, each added engine adds its per-question cost; both need the user's explicit ask. Already scoped to the connected workspace and its site; no domain or site parameter is needed. Cost: all actions are FREE config changes; each ACTIVE prompt raises the recurring scan cost when scans run, cadence 'daily' is ~7x weekly spend, and each tracked engine adds its per-question cost - disclose before setting.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoupdate: new prompt wording.
resetNoset_engines: true tracks the default engines.
actionYesWhich operation to run. list (tracked prompts + plan allowance + cadence); add (track a new buyer question (plan-capped)); update (rename / pin / (de)activate a prompt); remove (delete a prompt permanently (confirm with the user)); set_cadence (weekly / daily / manual - daily is ~7x spend, explicit user ask only); set_engines (choose tracked AI engines (full list) or reset to defaults - each engine adds scan cost, quote it first).
activeNoupdate: false pauses scanning (keeps history), true re-activates (re-checks the plan cap).
pinnedNoupdate: pin the prompt.
promptNoadd: the buyer question to track, in the customer voice.
cadenceNoset_cadence: how often scans run. 'daily' ~7x weekly spend.
enginesNoset_engines: the FULL list of engine ids to track (see list for ids and per-engine cost).
promptIdNoupdate/remove: the prompt id from list.
languageCodeNoLocale language code, e.g. "en".
locationCodeNoLocale location code (default: primary monitor).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 38 tool updates
    • Changedai_citations1 field changed
      • removedInput schema / properties / user_intent
        Removed value: -{
        -  "description": "Optional: one short sentence describing what the user is ultimately trying to achieve with this request. Used by SEOmatic to tailor answers and improve the product; never required.",
        -  "maxLength": 300,
        -  "type": "string"
        -}
    • Changedbacklink_profile1 field changed
      • removedInput schema / properties / user_intent
        Removed value: -{
        -  "description": "Optional: one short sentence describing what the user is ultimately trying to achieve with this request. Used by SEOmatic to tailor answers and improve the product; never required.",
        -  "maxLength": 300,
        -  "type": "string"
        -}
    • Changedbilling_status1 field changed
      • removedInput schema / properties / user_intent
        Removed value: -{
        -  "description": "Optional: one short sentence describing what the user is ultimately trying to achieve with this request. Used by SEOmatic to tailor answers and improve the product; never required.",
        -  "maxLength": 300,
        -  "type": "string"
        -}
    • Changedcampaign_manage1 field changed
      • removedInput schema / properties / user_intent
        Removed value: -{
        -  "description": "Optional: one short sentence describing what the user is ultimately trying to achieve with this request. Used by SEOmatic to tailor answers and improve the product; never required.",
        -  "maxLength": 300,
        -  "type": "string"
        -}
    • Changedconfirm_trust_fact1 field changed
      • removedInput schema / properties / user_intent
        Removed value: -{
        -  "description": "Optional: one short sentence describing what the user is ultimately trying to achieve with this request. Used by SEOmatic to tailor answers and improve the product; never required.",
        -  "maxLength": 300,
        -  "type": "string"
        -}
    • Changedcontact_support1 field changed
      • removedInput schema / properties / user_intent
        Removed value: -{
        -  "description": "Optional: one short sentence describing what the user is ultimately trying to achieve with this request. Used by SEOmatic to tailor answers and improve the product; never required.",
        -  "maxLength": 300,
        -  "type": "string"
        -}
    • Changeddataset_library1 field changed
      • removedInput schema / properties / user_intent
        Removed value: -{
        -  "description": "Optional: one short sentence describing what the user is ultimately trying to achieve with this request. Used by SEOmatic to tailor answers and improve the product; never required.",
        -  "maxLength": 300,
        -  "type": "string"
        -}
    • Changedgenerate_article1 field changed
      • removedInput schema / properties / user_intent
        Removed value: -{
        -  "description": "One sentence on the user's goal for this article (optional).",
        -  "maxLength": 300,
        -  "type": "string"
        -}
    • Changedget_ai_crawler_activity1 field changed
      • removedInput schema / properties / user_intent
        Removed value: -{
        -  "description": "Optional: one short sentence describing what the user is ultimately trying to achieve with this request. Used by SEOmatic to tailor answers and improve the product; never required.",
        -  "maxLength": 300,
        -  "type": "string"
        -}
    • Changedget_ai_funnel1 field changed
      • removedInput schema / properties / user_intent
        Removed value: -{
        -  "description": "Optional: one short sentence describing what the user is ultimately trying to achieve with this request. Used by SEOmatic to tailor answers and improve the product; never required.",
        -  "maxLength": 300,
        -  "type": "string"
        -}
    • Changedget_article1 field changed
      • removedInput schema / properties / user_intent
        Removed value: -{
        -  "description": "Optional: one short sentence describing what the user is ultimately trying to achieve with this request. Used by SEOmatic to tailor answers and improve the product; never required.",
        -  "maxLength": 300,
        -  "type": "string"
        -}
    • Changedget_credit_usage1 field changed
      • removedInput schema / properties / user_intent
        Removed value: -{
        -  "description": "Optional: one short sentence describing what the user is ultimately trying to achieve with this request. Used by SEOmatic to tailor answers and improve the product; never required.",
        -  "maxLength": 300,
        -  "type": "string"
        -}
    • Changedget_referral_link1 field changed
      • removedInput schema / properties / user_intent
        Removed value: -{
        -  "description": "Optional: one short sentence describing what the user is ultimately trying to achieve with this request. Used by SEOmatic to tailor answers and improve the product; never required.",
        -  "maxLength": 300,
        -  "type": "string"
        -}
    • Changedget_started1 field changed
      • removedInput schema / properties / user_intent
        Removed value: -{
        -  "description": "Optional: one short sentence describing what the user is ultimately trying to achieve with this request. Used by SEOmatic to tailor answers and improve the product; never required.",
        -  "maxLength": 300,
        -  "type": "string"
        -}
    • Changedget_target_terms1 field changed
      • removedInput schema / properties / user_intent
        Removed value: -{
        -  "description": "Optional: one short sentence describing what the user is ultimately trying to achieve with this request. Used by SEOmatic to tailor answers and improve the product; never required.",
        -  "maxLength": 300,
        -  "type": "string"
        -}
    • Changedget_task_rollback1 field changed
      • removedInput schema / properties / user_intent
        Removed value: -{
        -  "description": "Optional: one short sentence describing what the user is ultimately trying to achieve with this request. Used by SEOmatic to tailor answers and improve the product; never required.",
        -  "maxLength": 300,
        -  "type": "string"
        -}
    • Changedget_trust_entities1 field changed
      • removedInput schema / properties / user_intent
        Removed value: -{
        -  "description": "Optional: one short sentence describing what the user is ultimately trying to achieve with this request. Used by SEOmatic to tailor answers and improve the product; never required.",
        -  "maxLength": 300,
        -  "type": "string"
        -}
    • Changedget_trust_facts1 field changed
      • removedInput schema / properties / user_intent
        Removed value: -{
        -  "description": "Optional: one short sentence describing what the user is ultimately trying to achieve with this request. Used by SEOmatic to tailor answers and improve the product; never required.",
        -  "maxLength": 300,
        -  "type": "string"
        -}
    • Changedgsc_indexing1 field changed
      • removedInput schema / properties / user_intent
        Removed value: -{
        -  "description": "Optional: one short sentence describing what the user is ultimately trying to achieve with this request. Used by SEOmatic to tailor answers and improve the product; never required.",
        -  "maxLength": 300,
        -  "type": "string"
        -}
    • Changedgsc_insights1 field changed
      • removedInput schema / properties / user_intent
        Removed value: -{
        -  "description": "Optional: one short sentence describing what the user is ultimately trying to achieve with this request. Used by SEOmatic to tailor answers and improve the product; never required.",
        -  "maxLength": 300,
        -  "type": "string"
        -}
    • Changedgsc_performance2 fields changed
      • changedInput schema / properties / maxRows / description
        Previous value: -"query_page_matrix only: max query-page pairs (default 2000)."New value: +"query_page_matrix only: max query-page pairs (100-1000, default 200)."
      • removedInput schema / properties / user_intent
        Removed value: -{
        -  "description": "Optional: one short sentence describing what the user is ultimately trying to achieve with this request. Used by SEOmatic to tailor answers and improve the product; never required.",
        -  "maxLength": 300,
        -  "type": "string"
        -}
    • Changedimport_attachment_as_dataset1 field changed
      • removedInput schema / properties / user_intent
        Removed value: -{
        -  "description": "Optional: one short sentence describing what the user is ultimately trying to achieve with this request. Used by SEOmatic to tailor answers and improve the product; never required.",
        -  "maxLength": 300,
        -  "type": "string"
        -}
    • Changedkeyword_clusters1 field changed
      • removedInput schema / properties / user_intent
        Removed value: -{
        -  "description": "Optional: one short sentence describing what the user is ultimately trying to achieve with this request. Used by SEOmatic to tailor answers and improve the product; never required.",
        -  "maxLength": 300,
        -  "type": "string"
        -}
    • Changedkeyword_research1 field changed
      • removedInput schema / properties / user_intent
        Removed value: -{
        -  "description": "Optional: one short sentence describing what the user is ultimately trying to achieve with this request. Used by SEOmatic to tailor answers and improve the product; never required.",
        -  "maxLength": 300,
        -  "type": "string"
        -}
    • Changedlocal_presence1 field changed
      • removedInput schema / properties / user_intent
        Removed value: -{
        -  "description": "Optional: one short sentence describing what the user is ultimately trying to achieve with this request. Used by SEOmatic to tailor answers and improve the product; never required.",
        -  "maxLength": 300,
        -  "type": "string"
        -}
    • Changedresume_page_publishing1 field changed
      • removedInput schema / properties / user_intent
        Removed value: -{
        -  "description": "Optional: one short sentence describing what the user is ultimately trying to achieve with this request. Used by SEOmatic to tailor answers and improve the product; never required.",
        -  "maxLength": 300,
        -  "type": "string"
        -}
    • Changedrun_ai_visibility_scan1 field changed
      • removedInput schema / properties / user_intent
        Removed value: -{
        -  "description": "Optional: one short sentence describing what the user is ultimately trying to achieve with this request. Used by SEOmatic to tailor answers and improve the product; never required.",
        -  "maxLength": 300,
        -  "type": "string"
        -}
    • Changedserp_competitors1 field changed
      • removedInput schema / properties / user_intent
        Removed value: -{
        -  "description": "Optional: one short sentence describing what the user is ultimately trying to achieve with this request. Used by SEOmatic to tailor answers and improve the product; never required.",
        -  "maxLength": 300,
        -  "type": "string"
        -}
    • Changedset_target_terms1 field changed
      • removedInput schema / properties / user_intent
        Removed value: -{
        -  "description": "Optional: one short sentence describing what the user is ultimately trying to achieve with this request. Used by SEOmatic to tailor answers and improve the product; never required.",
        -  "maxLength": 300,
        -  "type": "string"
        -}
    • Changedshow_approval_cards1 field changed
      • removedInput schema / properties / user_intent
        Removed value: -{
        -  "description": "Optional: one short sentence describing what the user is ultimately trying to achieve with this request. Used by SEOmatic to tailor answers and improve the product; never required.",
        -  "maxLength": 300,
        -  "type": "string"
        -}
    • Changedshow_trust_facts_card1 field changed
      • removedInput schema / properties / user_intent
        Removed value: -{
        -  "description": "Optional: one short sentence describing what the user is ultimately trying to achieve with this request. Used by SEOmatic to tailor answers and improve the product; never required.",
        -  "maxLength": 300,
        -  "type": "string"
        -}
    • Changedsite_audit1 field changed
      • removedInput schema / properties / user_intent
        Removed value: -{
        -  "description": "Optional: one short sentence describing what the user is ultimately trying to achieve with this request. Used by SEOmatic to tailor answers and improve the product; never required.",
        -  "maxLength": 300,
        -  "type": "string"
        -}
    • Changedsite_pages1 field changed
      • removedInput schema / properties / user_intent
        Removed value: -{
        -  "description": "Optional: one short sentence describing what the user is ultimately trying to achieve with this request. Used by SEOmatic to tailor answers and improve the product; never required.",
        -  "maxLength": 300,
        -  "type": "string"
        -}
    • Changedstrategy_insights1 field changed
      • removedInput schema / properties / user_intent
        Removed value: -{
        -  "description": "Optional: one short sentence describing what the user is ultimately trying to achieve with this request. Used by SEOmatic to tailor answers and improve the product; never required.",
        -  "maxLength": 300,
        -  "type": "string"
        -}
    • Changedtask_manage1 field changed
      • removedInput schema / properties / user_intent
        Removed value: -{
        -  "description": "Optional: one short sentence describing what the user is ultimately trying to achieve with this request. Used by SEOmatic to tailor answers and improve the product; never required.",
        -  "maxLength": 300,
        -  "type": "string"
        -}
    • Changedtraffic_analytics1 field changed
      • removedInput schema / properties / user_intent
        Removed value: -{
        -  "description": "Optional: one short sentence describing what the user is ultimately trying to achieve with this request. Used by SEOmatic to tailor answers and improve the product; never required.",
        -  "maxLength": 300,
        -  "type": "string"
        -}
    • Changedupload_csv1 field changed
      • removedInput schema / properties / user_intent
        Removed value: -{
        -  "description": "Optional: one short sentence describing what the user is ultimately trying to achieve with this request. Used by SEOmatic to tailor answers and improve the product; never required.",
        -  "maxLength": 300,
        -  "type": "string"
        -}
    • Changedvisibility_manage1 field changed
      • removedInput schema / properties / user_intent
        Removed value: -{
        -  "description": "Optional: one short sentence describing what the user is ultimately trying to achieve with this request. Used by SEOmatic to tailor answers and improve the product; never required.",
        -  "maxLength": 300,
        -  "type": "string"
        -}
  2. 1 tool update
    • Changeddataset_library4 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"Which operation to run. list_datasets (available datasets); list_page_projects (the site own page projects (own {{Column}} templates)); dataset_rows (sample rows from one dataset); list_templates (built-in page templates); get_template (one template in full)."New value: +"Which operation to run. find_page_set_patterns (keyword research for a page set: the repeated query templates with a varying slot, entities ranked by demand (a seed term adds the keyword provider and costs credits)); list_datasets (available datasets); list_page_projects (the site own page projects (own {{Column}} templates)); dataset_rows (sample rows from one dataset); list_templates (built-in page templates); get_template (one template in full)."
      • changedInput schema / properties / action / enum
        Previous value: -[
        -  "list_datasets",
        -  "list_page_projects",
        -  "dataset_rows",
        -  "list_templates",
        -  "get_template"
        -]New value: +[
        +  "find_page_set_patterns",
        +  "list_datasets",
        +  "list_page_projects",
        +  "dataset_rows",
        +  "list_templates",
        +  "get_template"
        +]
      • addedInput schema / properties / minEntities
        Added value: +{
        +  "description": "find_page_set_patterns: smallest set worth showing (default 5).",
        +  "type": "integer"
        +}
      • addedInput schema / properties / seed
        Added value: +{
        +  "description": "find_page_set_patterns: a head term to research with the keyword provider ('signage'); omit for Search Console only.",
        +  "type": "string"
        +}
  3. 1 tool update
    • Changedcampaign_manage1 field changed
      • changedInput schema / properties / autoPublish / description
        Previous value: -"write_articles only: default false (stage as drafts)."New value: +"write_articles only: default true (articles that pass our checks publish on their own, with undo); false keeps them as drafts."
  4. 2 tool updates
    • Changedcampaign_manage7 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"Which operation to run. list (campaigns with status + task counts); manage (approve/pause/resume/abandon/update a campaign); propose_page_scale (programmatic landing pages at scale); propose_location_pages (location pages on the site own layout (drafts), or existing ones improved); propose_content_sweep (N distinct blog articles as a campaign); propose_bulk_edit (one instruction across many pages); write_articles (direct N-article staging)."New value: +"Which operation to run. list (campaigns with status + task counts); manage (approve/pause/resume/abandon/update a campaign); propose_page_scale (a set of pages on the site own page or own template); propose_location_pages (location pages on the site own layout (drafts), or existing ones improved); propose_content_sweep (N distinct blog articles as a campaign); propose_bulk_edit (one instruction across many pages); write_articles (direct N-article staging)."
      • changedInput schema / properties / exemplarUrl / description
        Previous value: -"propose_location_pages, create: the customer's page the new pages copy (layout, embeds, page type)."New value: +"propose_location_pages (create) and propose_page_scale: the customer's own page the new pages copy (layout, embeds, page type). propose_page_scale needs exemplarUrl or projectId."
      • removedInput schema / properties / pageTemplate
        Removed value: -{
        -  "description": "propose_page_scale only: built-in template id.",
        -  "type": "string"
        -}
      • addedInput schema / properties / projectId
        Added value: +{
        +  "description": "propose_page_scale: the customer's own project whose fields hold their {{Column}} template. Needs projectId or exemplarUrl.",
        +  "type": "string"
        +}
      • removedInput schema / properties / rowPrompt
        Removed value: -{
        -  "description": "propose_page_scale, rowSourceKind=ai: dataset to generate.",
        -  "type": "string"
        -}
      • changedInput schema / properties / rowSourceKind / description
        Previous value: -"propose_page_scale only (required): where page rows come from."New value: +"propose_page_scale only: where page rows come from (required with exemplarUrl; with projectId defaults to the project dataset). No AI source: an invented row list is refused."
      • changedInput schema / properties / rowSourceKind / enum
        Previous value: -[
        -  "ai",
        -  "user",
        -  "library",
        -  "gbp_locations"
        -]New value: +[
        +  "user",
        +  "library",
        +  "gbp_locations"
        +]
    • Changeddataset_library2 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"Which operation to run. list_datasets (available datasets); dataset_rows (sample rows from one dataset); list_templates (built-in page templates); get_template (one template in full)."New value: +"Which operation to run. list_datasets (available datasets); list_page_projects (the site own page projects (own {{Column}} templates)); dataset_rows (sample rows from one dataset); list_templates (built-in page templates); get_template (one template in full)."
      • changedInput schema / properties / action / enum
        Previous value: -[
        -  "list_datasets",
        -  "dataset_rows",
        -  "list_templates",
        -  "get_template"
        -]New value: +[
        +  "list_datasets",
        +  "list_page_projects",
        +  "dataset_rows",
        +  "list_templates",
        +  "get_template"
        +]
  5. 3 tool updates
    • Changedcampaign_manage7 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"Which operation to run. list (campaigns with status + task counts); manage (approve/pause/resume/abandon/update a campaign); propose_page_scale (programmatic landing pages at scale); propose_content_sweep (N distinct blog articles as a campaign); propose_bulk_edit (one instruction across many pages); write_articles (direct N-article staging)."New value: +"Which operation to run. list (campaigns with status + task counts); manage (approve/pause/resume/abandon/update a campaign); propose_page_scale (programmatic landing pages at scale); propose_location_pages (location pages on the site own layout (drafts), or existing ones improved); propose_content_sweep (N distinct blog articles as a campaign); propose_bulk_edit (one instruction across many pages); write_articles (direct N-article staging)."
      • changedInput schema / properties / action / enum
        Previous value: -[
        -  "list",
        -  "manage",
        -  "propose_page_scale",
        -  "propose_content_sweep",
        -  "propose_bulk_edit",
        -  "write_articles"
        -]New value: +[
        +  "list",
        +  "manage",
        +  "propose_page_scale",
        +  "propose_location_pages",
        +  "propose_content_sweep",
        +  "propose_bulk_edit",
        +  "write_articles"
        +]
      • addedInput schema / properties / exemplarPlace
        Added value: +{
        +  "description": "propose_location_pages, create: the place the model page is about, when its title does not say.",
        +  "type": "string"
        +}
      • addedInput schema / properties / exemplarUrl
        Added value: +{
        +  "description": "propose_location_pages, create: the customer's page the new pages copy (layout, embeds, page type).",
        +  "type": "string"
        +}
      • addedInput schema / properties / locationMode
        Added value: +{
        +  "description": "propose_location_pages only (required): create = new draft pages modelled on exemplarUrl; enrich = rewrite existing location pages (rows carry pageUrl).",
        +  "enum": [
        +    "create",
        +    "enrich"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / rows / description
        Previous value: -"propose_page_scale, rowSourceKind=user: one object per page."New value: +"propose_page_scale, rowSourceKind=user: one object per page. propose_location_pages (required): one object per location (name + the facts the user gave; enrich: pageUrl)."
      • changedInput schema / properties / title / description
        Previous value: -"propose_page_scale (required), propose_content_sweep (required), propose_bulk_edit (optional)."New value: +"propose_page_scale (required), propose_content_sweep (required), propose_bulk_edit and propose_location_pages (optional)."
    • Addedget_target_terms
    • Addedset_target_terms
  6. 1 tool update
    • Changedtask_manage3 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"Which operation to run. list (the plan board (filterable)); get (one task in full detail); create (stage up to 5 task proposals); decide (approve or dismiss a staged proposal (the approval loop)); execute (run an approved task now; a reviewToken releases staged holds; refresh_pull_request updates an open GitHub pull request, or opens a new one if someone else changed its branch); rollback (undo an executed task's live change (drift-guarded))."New value: +"Which operation to run. list (the plan board (filterable)); get (one task in full detail); create (stage up to 5 task proposals); decide (approve or dismiss a staged proposal (the approval loop)); execute (run an approved task now; a reviewToken releases staged holds; refresh_pull_request updates an open GitHub pull request, or opens a new one if someone else changed its branch); rollback (undo an executed task's live change (drift-guarded)); paste_done (the user pasted a handed-over change; SEOmatic looks for it on the live page before measuring)."
      • changedInput schema / properties / action / enum
        Previous value: -[
        -  "list",
        -  "get",
        -  "create",
        -  "decide",
        -  "execute",
        -  "rollback"
        -]New value: +[
        +  "list",
        +  "get",
        +  "create",
        +  "decide",
        +  "execute",
        +  "rollback",
        +  "paste_done"
        +]
      • changedInput schema / properties / taskId / description
        Previous value: -"get/decide/execute/rollback: the task to act on."New value: +"get/decide/execute/rollback/paste_done: the task to act on."
  7. 1 tool update
    • Changedgsc_performance4 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"Which operation to run. top_queries (top search queries); top_pages (top pages); dimension_breakdown (by device/country/date); query_page_matrix (cannibalization / query-to-page map); query_pages (which pages rank for given queries, with each page's own numbers); compare_periods (decay/growth vs the prior period); trend (daily clicks/impressions over time); discover_news (Discover / News / Image / Video surfaces); folder_rollup (performance by URL folder / site section); fresh (provisional today/yesterday numbers (hours-old data))."New value: +"Which operation to run. top_queries (top search queries); top_pages (top pages); dimension_breakdown (by device/country/date, or one page's queries (query + filterPage) / one query's pages (page + filterQuery)); query_page_matrix (cannibalization / query-to-page map); query_pages (which pages rank for given queries, with each page's own numbers); compare_periods (decay/growth vs the prior period); trend (daily clicks/impressions over time); discover_news (Discover / News / Image / Video surfaces); folder_rollup (performance by URL folder / site section); fresh (provisional today/yesterday numbers (hours-old data))."
      • changedInput schema / properties / dimension / description
        Previous value: -"REQUIRED for dimension_breakdown (device|country|date). For compare_periods: query|page (default page). Ignored otherwise."New value: +"REQUIRED for dimension_breakdown: device|country|date|query|page (query + filterPage = the queries one page ranks for, with that page's own numbers; page + filterQuery = the pages ranking for one query). For compare_periods: query|page (default page). Ignored otherwise."
      • changedInput schema / properties / filterPage / description
        Previous value: -"dimension_breakdown only: restrict to one exact page URL."New value: +"dimension_breakdown only: restrict to one exact page URL, as Search Console records it (pair with dimension=query to see the queries that page ranks for)."
      • changedInput schema / properties / filterQuery / description
        Previous value: -"dimension_breakdown only: restrict to one exact query."New value: +"dimension_breakdown only: restrict to one exact query (pair with dimension=page to see which pages rank for it)."
  8. 5 tool updates
    • Addedbilling_status
    • Addedcontact_support
    • Changedget_started2 fields changed
      • addedInput schema / properties / confirmed_own
        Added value: +{
        +  "description": "Set true only after the user confirmed that `site` is their own website; the workspace then remembers it.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / topic
        Added value: +{
        +  "description": "What the business sells or does, in the words a customer would search (e.g. \"wedding photographer lyon\"). Use when no site is on record and the user has not given one: the answer sizes that market instead.",
        +  "maxLength": 80,
        +  "type": "string"
        +}
    • Changedgsc_performance4 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"Which operation to run. top_queries (top search queries); top_pages (top pages); dimension_breakdown (by device/country/date); query_page_matrix (cannibalization / query-to-page map); compare_periods (decay/growth vs the prior period); trend (daily clicks/impressions over time); discover_news (Discover / News / Image / Video surfaces); folder_rollup (performance by URL folder / site section); fresh (provisional today/yesterday numbers (hours-old data))."New value: +"Which operation to run. top_queries (top search queries); top_pages (top pages); dimension_breakdown (by device/country/date); query_page_matrix (cannibalization / query-to-page map); query_pages (which pages rank for given queries, with each page's own numbers); compare_periods (decay/growth vs the prior period); trend (daily clicks/impressions over time); discover_news (Discover / News / Image / Video surfaces); folder_rollup (performance by URL folder / site section); fresh (provisional today/yesterday numbers (hours-old data))."
      • changedInput schema / properties / action / enum
        Previous value: -[
        -  "top_queries",
        -  "top_pages",
        -  "dimension_breakdown",
        -  "query_page_matrix",
        -  "compare_periods",
        -  "trend",
        -  "discover_news",
        -  "folder_rollup",
        -  "fresh"
        -]New value: +[
        +  "top_queries",
        +  "top_pages",
        +  "dimension_breakdown",
        +  "query_page_matrix",
        +  "query_pages",
        +  "compare_periods",
        +  "trend",
        +  "discover_news",
        +  "folder_rollup",
        +  "fresh"
        +]
      • addedInput schema / properties / page
        Added value: +{
        +  "description": "query_pages only: a full page URL to check - returns its own row for each query, or null when it does not rank.",
        +  "type": "string"
        +}
      • addedInput schema / properties / queries
        Added value: +{
        +  "description": "REQUIRED for query_pages: 1-5 exact search queries. Page rows are that page's own numbers; queryTotal is site-wide and never a page's number.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changedtask_manage2 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"Which operation to run. list (the plan board (filterable)); get (one task in full detail); create (stage up to 5 task proposals); decide (approve or dismiss a staged proposal (the approval loop)); execute (run an approved task now; a reviewToken releases staged holds); rollback (undo an executed task's live change (drift-guarded))."New value: +"Which operation to run. list (the plan board (filterable)); get (one task in full detail); create (stage up to 5 task proposals); decide (approve or dismiss a staged proposal (the approval loop)); execute (run an approved task now; a reviewToken releases staged holds; refresh_pull_request updates an open GitHub pull request, or opens a new one if someone else changed its branch); rollback (undo an executed task's live change (drift-guarded))."
      • addedInput schema / properties / refresh_pull_request
        Added value: +{
        +  "description": "execute only, GitHub: rewrite the task's OPEN pull request against the site's latest version (the dashboard's Refresh): updates the pull request, or opens a new one if someone else changed its branch. Runs the task again, so it uses AI credits like the first run - set it ONLY when the user asked for the refresh.",
        +  "type": "boolean"
        +}
  9. 3 tool updates
    • Addedget_started
    • Removedpay_for_articles
    • Changedrun_ai_visibility_scan1 field changed
      • addedInput schema / properties / is_my_site
        Added value: +{
        +  "description": "Only when the workspace has no site on record yet: true if the domain is the user's own site, false if it is a competitor. Ask the user; never guess.",
        +  "type": "boolean"
        +}
  10. 1 tool update
    • Changedvisibility_manage4 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"Which operation to run. list (tracked prompts + plan allowance + cadence); add (track a new buyer question (plan-capped)); update (rename / pin / (de)activate a prompt); remove (delete a prompt permanently (confirm with the user)); set_cadence (weekly / daily / manual - daily is ~7x spend, explicit user ask only)."New value: +"Which operation to run. list (tracked prompts + plan allowance + cadence); add (track a new buyer question (plan-capped)); update (rename / pin / (de)activate a prompt); remove (delete a prompt permanently (confirm with the user)); set_cadence (weekly / daily / manual - daily is ~7x spend, explicit user ask only); set_engines (choose tracked AI engines (full list) or reset to defaults - each engine adds scan cost, quote it first)."
      • changedInput schema / properties / action / enum
        Previous value: -[
        -  "list",
        -  "add",
        -  "update",
        -  "remove",
        -  "set_cadence"
        -]New value: +[
        +  "list",
        +  "add",
        +  "update",
        +  "remove",
        +  "set_cadence",
        +  "set_engines"
        +]
      • addedInput schema / properties / engines
        Added value: +{
        +  "description": "set_engines: the FULL list of engine ids to track (see list for ids and per-engine cost).",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / reset
        Added value: +{
        +  "description": "set_engines: true tracks the default engines.",
        +  "type": "boolean"
        +}
  11. 1 tool update
    • Addedget_referral_link
  12. 5 tool updates
    • Addedconfirm_trust_fact
    • Addedget_trust_facts
    • Addedpay_for_articles
    • Changedrun_ai_visibility_scan1 field changed
      • addedInput schema / properties / domain
        Added value: +{
        +  "description": "Competitor domain to scan instead of your own site, e.g. \"competitor.com\". Omit for your own site.",
        +  "maxLength": 253,
        +  "type": "string"
        +}
    • Addedshow_trust_facts_card
  13. 1 tool update
    • Addedupload_csv
  14. 2 tool updates
    • Changedai_citations3 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"Which operation to run. observed_citations (real logged-in AI answers that cited this site); brand_facts (declared canonical facts + internal-link health)."New value: +"Which operation to run. observed_citations (real logged-in AI answers that cited this site); brand_facts (declared canonical facts + internal-link health); scan_results (latest scan: per-engine visibility, missed prompts, competitors, cited sources)."
      • changedInput schema / properties / action / enum
        Previous value: -[
        -  "observed_citations",
        -  "brand_facts"
        -]New value: +[
        +  "observed_citations",
        +  "brand_facts",
        +  "scan_results"
        +]
      • addedInput schema / properties / scanId
        Added value: +{
        +  "description": "scan_results only: a specific scan id from recentScans. Omit for the latest completed scan.",
        +  "type": "string"
        +}
    • Removedget_ai_visibility
  15. 2 tool updates
    • Changedcampaign_manage1 field changed
      • changedInput schema / properties / confirm / description
        Previous value: -"manage only, approve + abandon: must be true — attests the user explicitly asked for this (approve releases work + spend; abandon is irreversible)."New value: +"manage only, approve + abandon: must be true - attests the user explicitly asked for this (approve releases work + spend; abandon is irreversible)."
    • Changedtask_manage1 field changed
      • changedInput schema / properties / confirmDestructive / description
        Previous value: -"decide/execute: required true for indexation-destructive types (noindex, redirect). Attestation that the human explicitly signed off on this specific task after seeing its URL and consequence — never set it on your own judgment."New value: +"decide/execute: required true for indexation-destructive types (noindex, redirect). Attestation that the human explicitly signed off on this specific task after seeing its URL and consequence - never set it on your own judgment."

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables an AI assistant to query live data from Google Search Console, GA4, AdSense, Keyword Planner, and two Reddit signals (rising posts and demand) in a single conversation, all read-only with your own credentials.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to answer SEO questions by pulling verified data from Google Search Console, GA4, keyword research, backlinks, live SERPs, and AI visibility, with each fact including its source, timestamp, and confidence.
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Connects Google Search Console to AI assistants, enabling natural language queries for SEO data, indexing audits, sitemap management, and full site audits.
    20
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Connects AI assistants to SEO data from Yandex Webmaster, Google Search Console, Yandex Metrica, and Topvisor, enabling natural language analysis of search performance, indexation, positions, and audits.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.