Tool directory

All 37 tools

Generated from src/lib/mcp/catalog.ts, which is also what the server returns from tools/list. Nothing here is maintained twice.

Discovery

2

scopemcp_get_tools

no source needed12/min

Returns the enabled tool catalog, example questions, connection requirements and service limits. Call this when a user asks what ScopeMCP can do, which tools exist, or how to get started. Requires no data connection and no property id.

When to use it
First call in an unfamiliar session, or whenever a request is ambiguous about which tool fits.
Returns
Tool names with one-line purposes, required connections, rate limits, and a set of worked example questions.

Parameters

none

Required parameters are shown filled. A trailing ? means optional.

scopemcp_list_properties

no source needed60/min

Lists every Search Console, Bing Webmaster and Analytics 4 property available through the connected accounts, with ScopeMCP propertyId values. Call this before any data tool whose propertyId you do not already know.

When to use it
Start of a session, after the user connects a source, or whenever a tool returns a property-not-found error.
Returns
propertyId, provider, site identifier, name, permission level and connection health per source.

Parameters

provider: string?

Required parameters are shown filled. A trailing ? means optional.

Google Search Console

7

gsc_get_performance

needs gsc60/min

Clicks, impressions, CTR and average position for a date range, with optional dimensions and filters. This is the base table every other search question is built on.

When to use it
Any question about how a site, page, query, country, device or date performed. Start here and add dimensions or filters.
Returns
Rows, totals, the window and baseline actually searched, an estimated total row count, and explicit limits on what the totals can support.

Parameters

propertyId: stringdays: integer?startDate: string?endDate: string?dimensions: array?filters: array?rowLimit: integer?includeDaily: boolean?comparePreviousPeriod: boolean?

Required parameters are shown filled. A trailing ? means optional.

gsc_compare_performance

needs gsc60/min

Row-level differences between a current window and a baseline window for clicks, impressions, CTR and position, ranked by whichever change matters to the question.

When to use it
When the user asks what gained or lost, or wants the biggest movers between two specific periods. Prefer this over two separate gsc_get_performance calls, which doubles the API cost.
Returns
Ranked movers with current values, baseline values, absolute and percentage change, plus dedicated largest-gain and largest-decline lists.

Parameters

propertyId: stringcurrentStartDate: stringcurrentEndDate: stringbaselineStartDate: stringbaselineEndDate: stringdimensions: array?filters: array?sortBy: string?sortDirection: string?limit: integer?

Required parameters are shown filled. A trailing ? means optional.

gsc_get_opportunities

needs gsc12/min

Evidence-based opportunities drawn from current and previous period performance: striking-distance queries, high-impression low-CTR rows, declining rows, page-2 queries and possible cannibalisation, each with the numbers behind it.

When to use it
When a user asks where to focus, what to fix first, or what is going to waste. It ranks; it does not diagnose. Follow up with gsc_inspect_url or seo_get_page_evidence before recommending a change.
Returns
Ranked opportunities with score, current and baseline metrics, an estimated upside where a benchmark makes that legitimate, a recommended next step, and an explicit caveat on what the finding does not prove.

Parameters

propertyId: stringdays: integer?startDate: string?endDate: string?types: array?country: string?device: string?thresholds: object?limit: integer?

Required parameters are shown filled. A trailing ? means optional.

gsc_inspect_url

needs gsc20/min

Google's own index status for a single URL: verdict, coverage state, canonical selection, crawl timestamps, robots state, mobile usability and AMP.

When to use it
When a user asks whether one known URL is indexed, or what canonical Google picked when several exist. This reads state; it does not read the page.
Returns
Index verdict, canonical set, crawl details, mobile and AMP verdicts, detected rich result types, and a list of anything Google did not return.

Parameters

propertyId: stringurl: stringlanguageCode: string?

Required parameters are shown filled. A trailing ? means optional.

gsc_inspect_urls

needs gsc20/min

The same inspection as gsc_inspect_url for a batch of URLs from the same property, issued one after another.

When to use it
When you already know several URLs to check and a per-URL loop would be wasteful in conversation.
Returns
One inspection result per URL, in the order given, including any that failed.

Parameters

propertyId: stringurls: arraylanguageCode: string?

Required parameters are shown filled. A trailing ? means optional.

gsc_get_sitemaps

needs gsc60/min

Every sitemap submitted for a property, with processing state, warnings, errors and optional submitted/indexed counts.

When to use it
For sitemap inventory and health review. Cannot submit, modify or remove a sitemap.
Returns
Sitemap path, last submitted date, pending flag, errors and warnings, and indexed content counts when requested.

Parameters

propertyId: stringlimit: integer?includeContents: boolean?sitemapIndex: string?

Required parameters are shown filled. A trailing ? means optional.

gsc_get_sitemap

needs gsc60/min

Detailed status and content counts for one exact submitted sitemap, including type, submission and download dates, pending state, warnings, errors and how many URLs Google actually indexed from it.

When to use it
After the user names a specific sitemap URL or when gsc_get_sitemaps flags a problem.
Returns
Type, submission and download dates, pending state, warnings, errors and indexed counts.

Parameters

propertyId: stringsitemapUrl: stringincludeContents: boolean?

Required parameters are shown filled. A trailing ? means optional.

Bing Webmaster Tools

6

bing_get_traffic

needs bing60/min

Daily clicks and impressions for a Bing-verified site. Bing aggregates web, chat, images, video and knowledge-panel traffic into this report, so it is not comparable to a Search Console number.

When to use it
For Bing visibility trends, and to sanity-check a cross-engine story. Never compare Bing clicks directly against Google clicks.
Returns
Daily rows with calculated CTR, average click and impression positions, and an explicit note about which Bing surfaces are included.

Parameters

propertyId: stringlimit: integer?

Required parameters are shown filled. A trailing ? means optional.

bing_get_query_stats

needs bing60/min

Query-level clicks, impressions, CTR and positions from Bing. Bing returns these bucketed weekly and stamps each row at the end of its week.

When to use it
To see which Bing queries produce visibility. Do not sum these rows into a period total without accounting for the weekly bucketing.
Returns
Weekly query rows sorted by impressions.

Parameters

propertyId: stringlimit: integer?

Required parameters are shown filled. A trailing ? means optional.

bing_get_page_stats

needs bing60/min

Page-level Bing performance: clicks, impressions, CTR and average impression position per page, bucketed weekly like the query report. Useful because the set of pages Bing surfaces is often not the set Google shows.

When to use it
To see which pages Bing actually surfaces, which is often not the same set Google shows.
Returns
Weekly page rows sorted by impressions.

Parameters

propertyId: stringlimit: integer?

Required parameters are shown filled. A trailing ? means optional.

bing_get_crawl_stats

needs bing60/min

Crawl and index statistics: crawled and indexed pages, crawl errors, robots exclusions, malware findings and HTTP status groupings.

When to use it
To review crawl health or spot a change in Bing index coverage.
Returns
Daily rows of crawl, index, link, error, malware, robots and HTTP status counts.

Parameters

propertyId: stringlimit: integer?

Required parameters are shown filled. A trailing ? means optional.

bing_get_sitemaps

needs bing60/min

Top-level sitemaps and feeds known to Bing, with processing status, URL counts, file sizes and compression state.

When to use it
Sitemap inventory or processing-status review for Bing.
Returns
Feed URL, submission and crawl times, URL count, size, compression flag and status.

Parameters

propertyId: stringlimit: integer?

Required parameters are shown filled. A trailing ? means optional.

bing_inspect_url

needs bing20/min

Index and crawl detail Bing holds for one URL: HTTP status, last crawled, last modified, anchor and inbound link counts, child URL count and whether Bing has blocked it.

When to use it
When a page ranks in Bing but not Google, or the user wants to know how Bing discovered it.
Returns
HTTP status, crawl dates, anchor and backlink counts, child URL count and blocked flag.

Parameters

propertyId: stringurl: string

Required parameters are shown filled. A trailing ? means optional.

Analytics 4

2

ga4_get_report

needs ga460/min

Sessions, users, engagement, key events, revenue and page metrics for a GA4 property. This is the source that connects search visibility to what actually happened on the site.

When to use it
When the question is about sessions, conversions or revenue rather than clicks, or when search clicks and outcomes need to be compared.
Returns
Rows, totals, currency and timezone metadata, and an explicit flag when GA4 applied thresholding because too few users were active.

Parameters

propertyId: stringdays: integer?startDate: string?endDate: string?dimensions: array?metrics: array?limit: integer?pagePathPrefix: string?eventName: string?

Required parameters are shown filled. A trailing ? means optional.

ga4_get_search_conversion_bridge

needs gscneeds ga412/min

Compares Search Console clicks for a set of pages against the GA4 sessions and key events those same pages produced. Answers "this page got more clicks — did it convert?"

When to use it
When a page gained or lost Search Console clicks and the real question is whether the outcome followed. Requires both GSC and GA4 connected.
Returns
Per-page Search Console and GA4 metrics side by side, plus a correlation caveat stating that the two datasets are not linked at the user level.

Parameters

gscPropertyId: stringga4PropertyId: stringdays: integer?startDate: string?endDate: string?limit: integer?eventName: string?

Required parameters are shown filled. A trailing ? means optional.

Page performance

2

pagespeed_run_audit

no source needed12/min

Mobile or desktop Lighthouse audit for a URL: category scores, lab Core Web Vitals and up to 25 failing audits.

When to use it
To diagnose a specific page. Results are lab data on a simulated connection, so they show what is slow, not what users experience. Use crux_get_record for that.
Returns
Category scores, lab metrics, the failing audits with their display values, and a list of manual-review warnings that are not defects.

Parameters

url: stringstrategy: string?categories: array?

Required parameters are shown filled. A trailing ? means optional.

crux_get_record

no source needed12/min

Chrome UX Report field data for a URL or origin: p75 LCP, INP and CLS with the collection period. Missing data is reported as missing and is never substituted with origin data.

When to use it
Before claiming a performance problem affects users. Absent CrUX data almost always means insufficient real-user traffic, not good performance.
Returns
Metric histograms and percentiles with good/needs-improvement/poor assessments, the collection period, and an explicit availability note.

Parameters

url: stringlevel: string?formFactor: string?

Required parameters are shown filled. A trailing ? means optional.

SEO analysis

9

seo_get_health_score

needs gsc12/min

A 0–100 health score with every weight, every threshold and every raw measurement exposed, plus a list of which components could not be measured. Unmeasured components are excluded from the score, never counted as zero.

When to use it
When a user asks how healthy a site is or wants a single prioritisation signal. Quote the components, not just the number, and say so when coverage is below 100%.
Returns
Score, grade, per-component score with weight and evidence, coverage as a fraction of the model that ran, gaps with reasons, and the three biggest levers.

Parameters

propertyId: stringdays: integer?startDate: string?endDate: string?country: string?device: string?includeIndexCheck: boolean?

Required parameters are shown filled. A trailing ? means optional.

seo_get_roadmap

needs gsc12/min

Ranked pages to investigate first, drawn from declining traffic and captured upside, each with its supporting metrics, reasons and a confidence level.

When to use it
For "what should I fix first". Every item is a candidate for investigation, not a confirmed defect. Never present it as a diagnosis.
Returns
Ranked items with evidence, baseline, reasons, confidence and the follow-up tool calls worth making next.

Parameters

propertyId: stringdays: integer?startDate: string?endDate: string?country: string?device: string?focus: string?brandTerms: array?businessPriorityUrls: array?limit: integer?

Required parameters are shown filled. A trailing ? means optional.

seo_get_page_evidence

needs gsc12/min

Exact-page totals pulled separately from query detail, with a baseline comparison and a daily trend. This is the report to open before recommending anything about a specific URL.

When to use it
After seo_get_roadmap or gsc_get_opportunities names a page. Read the evidence before proposing a change.
Returns
Page totals independent of the query rows, top queries with metrics, position mix, daily trend, URL inspection result when available, and missing-data warnings.

Parameters

propertyId: stringurl: stringdays: integer?startDate: string?endDate: string?country: string?device: string?limit: integer?

Required parameters are shown filled. A trailing ? means optional.

seo_diff_url

needs gsc12/min

What changed for a single page between two date ranges: clicks, impressions, CTR and position with per-field interpretation, the query-level movers, queries gained and lost, and a daily timeline across the whole span.

When to use it
When a page lost traffic and you need to know whether the loss was ranking, snippet or query mix — and to line the timeline up against an edit. This is the fastest way to separate a ranking problem from a CTR problem.
Returns
Two period summaries, per-field diffs with plain-English direction, top gains and losses, new and lost queries, an ordered diagnosis list, and the limits of what the comparison can establish.

Parameters

propertyId: stringurl: stringfromStartDate: string?fromEndDate: string?toStartDate: string?toEndDate: string?windowDays: integer?

Required parameters are shown filled. A trailing ? means optional.

seo_get_content_decay

needs gsc12/min

Pages losing clicks between completed periods, checked for a sustained week-over-week decline and optionally against the same weekday 364 days earlier to rule out seasonality.

When to use it
When a user asks why traffic fell, or wants the pages most worth refreshing. A decline is a symptom; this report narrows it, it does not explain it.
Returns
Decline candidates with loss size, weekly evidence, an interpretation of the pattern, a confidence level, seasonality context and the next checks to run.

Parameters

propertyId: stringdays: integer?startDate: string?endDate: string?country: string?device: string?urls: array?minBaselineClicks: integer?declinePercent: number?includeSeasonality: boolean?limit: integer?

Required parameters are shown filled. A trailing ? means optional.

seo_get_cannibalization

needs gsc12/min

Queries where more than one page earns meaningful impressions, with the leading page, the runner-up and how much they split.

When to use it
When a site has several pages on the same subject. This shows competition between pages; it does not establish identical intent.
Returns
Overlapping queries, competing-page candidates with metrics, and an explicit requirement to confirm intent before merging anything.

Parameters

propertyId: stringdays: integer?startDate: string?endDate: string?country: string?device: string?query: string?urls: array?limit: integer?

Required parameters are shown filled. A trailing ? means optional.

seo_get_content_brief

needs gsc12/min

The queries a page actually earns impressions for, with performance, plus whether the user’s target queries are already observed. Query brief only — it cannot see your page.

When to use it
Before drafting or revising a page. Read the live page yourself; this tool has no idea what is currently on it.
Returns
Page metrics, observed queries, target-query match status and instructions for a grounded draft.

Parameters

propertyId: stringurl: stringdays: integer?startDate: string?endDate: string?limit: integer?targetQueries: array?country: string?device: string?

Required parameters are shown filled. A trailing ? means optional.

seo_get_topic_clusters

needs gsc12/min

Clusters observed queries and pages by shared terms, and optionally reports coverage of reference topics you supply.

When to use it
To map what a site covers and spot thin areas. Groups are lexical candidates, not a semantic content audit.
Returns
Clusters with label, size, clicks, impressions, best position, representative queries, associated pages, a thin-coverage flag, and reference-topic observations.

Parameters

propertyId: stringdays: integer?startDate: string?endDate: string?topic: string?referenceTopics: array?limit: integer?country: string?device: string?

Required parameters are shown filled. A trailing ? means optional.

seo_generate_schema

no source needed12/min

Generates Article, Organization, BreadcrumbList, FAQPage, Product or HowTo JSON-LD strictly from facts you supply. Missing required facts return the requirement list instead of an invented value.

When to use it
To draft structured data. Never claim the result matches the live page: this tool does not read the page or existing markup.
Returns
JSON-LD block, missing-fact requirements, local shape validation results, provenance, and a page-consistency status of "unverified".

Parameters

url: stringtypes: arrayfacts: object

Required parameters are shown filled. A trailing ? means optional.

Competitor engine

4

competitor_keyword_gap

needs gscneeds serp10/min

Builds a keyword candidate set from your own Search Console queries, Bing related-keyword expansion and any seeds, measures real monthly search counts through Bing, then checks the live Google result page for each keyword to see which tracked domains rank. Returns confirmed gaps, contested terms you already rank for, and unverified candidates with no SERP fetch.

When to use it
When a user asks what a competitor is ranking for that they are not, or which keywords are worth pursuing. This is the core of the in-house competitor engine and runs on free sources only, so it is quota-limited — the response says how many keywords were actually checked.
Returns
Ranked keyword gaps with verdict, competitor positions, measured volume, demand proxy, SERP intent shape, a recommendation, and a caveat. Also reports how many candidates were checked versus skipped.

Parameters

propertyId: stringcompetitors: arrayseeds: array?limit: integer?candidateLimit: integer?matchDepth: integer?country: string?language: string?includeVolume: boolean?

Required parameters are shown filled. A trailing ? means optional.

competitor_share_of_voice

needs gscneeds serp10/min

Ranks you and your tracked competitors by how much of the checked keyword set each one appears in, with position bands and average position.

When to use it
To compare standing across a defined keyword set. It is a share of the set you checked, not of the market.
Returns
Per-domain keyword counts, top-3 / top-10 / page-2 splits, a 0–100 standing score, average and best positions, plus the method and its limits stated in full.

Parameters

propertyId: stringcompetitors: arrayseeds: array?keywords: array?limit: integer?country: string?language: string?

Required parameters are shown filled. A trailing ? means optional.

competitor_rival_movement

needs serp10/min

Diffs two sets of fetched result pages to show which competitor gained or lost keywords, their average position change, and the specific keywords that moved.

When to use it
To answer "did they overtake me". Pass two report payloads captured at different times — run competitor_share_of_voice twice, or use two scheduled snapshots.
Returns
Per-domain gained, lost and net keyword counts, average position delta, and the largest individual gains and losses.

Parameters

before: arrayafter: arraymatchDepth: integer?

Required parameters are shown filled. A trailing ? means optional.

competitor_serp_lookup

needs serp10/min

Fetches the live Google result page for a single keyword and reports the ranking domains, an intent classification and how crowded the page is.

When to use it
To verify a claim about who ranks, or to judge whether a keyword is realistically winnable before investing in it.
Returns
Top results with positions, domains and snippets, Google’s result-count estimate, SERP shape flags, and quota cost.

Parameters

keyword: stringdepth: integer?country: string?language: string?includeResults: boolean?

Required parameters are shown filled. A trailing ? means optional.

Monitoring and sharing

5

monitor_list

no source needed12/min

Every scheduled watch on the account with its check type, cadence, thresholds, channels and last outcome.

When to use it
When a user asks what is being watched, or before creating a duplicate monitor.
Returns
Monitor definitions plus last-run status, next run time and a summary of the last result.

Parameters

propertyId: string?

Required parameters are shown filled. A trailing ? means optional.

monitor_create

no source needed12/min

Schedules a recurring check that emails or webhooks when something changes: health score movement, content decay, a new low-CTR cluster, index coverage loss, a keyword gap opening up, or a rival overtaking you.

When to use it
When a user wants to be told about a change instead of asking for it. This is on-demand scheduling, not a background crawl of the site.
Returns
The created monitor with its resolved schedule, or the checks that must be adjusted.

Parameters

propertyId: stringcheck: stringcadence: string?label: string?thresholds: object?channels: array?webhookUrl: string?competitors: array?enabled: boolean?

Required parameters are shown filled. A trailing ? means optional.

monitor_run_now

no source needed12/min

Executes a monitor outside its schedule and returns the same payload it would have delivered.

When to use it
To preview what a monitor would say today, or to confirm a threshold behaves as expected before waiting a week.
Returns
The evaluation result, whether it triggered, and the alert payload that was or would be delivered.

Parameters

monitorId: stringdryRun: boolean?

Required parameters are shown filled. A trailing ? means optional.

report_share_create

no source needed12/min

Stores the current result as an immutable snapshot and returns a public read-only link that needs no login. Revocable at any time.

When to use it
To send a finding to a client or a teammate who has no ScopeMCP account.
Returns
Public URL, title, view count and the revocation handle.

Parameters

propertyId: stringcheck: stringtitle: string?competitors: array?days: integer?

Required parameters are shown filled. A trailing ? means optional.

report_export

needs gsc12/min

Renders any ScopeMCP report as RFC 4180 CSV or as pretty JSON, so the numbers can leave the chat and go into a spreadsheet or a ticket.

When to use it
When the user asks for the data itself, wants to build their own model, or needs to hand the numbers to someone who will not read prose.
Returns
The formatted document plus the column order and the exact query that produced it.

Parameters

propertyId: stringreport: stringformat: string?days: integer?startDate: string?endDate: string?url: string?fromStartDate: string?fromEndDate: string?competitors: array?limit: integer?

Required parameters are shown filled. A trailing ? means optional.

Prefer it as prose?

The tool reference includes when each one fails and what to do instead.

Open the tool reference