Google Search Console integration for Model Context Protocol (MCP)
OnPage.dev is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Free SEO MCP that closes the loop: find, fix, ship as a PR or to a CMS, prove. 46 tools, no key.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http onpage-dev-mcp https://onpage.dev/mcp
# 2 — ask your agent for something these tools do
# site_memory, scan_page, site_audit and 34 more
OnPage.dev costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine and nothing runs on ours: this server answers at its publisher’s own address, and what you install is the connection straight to it.
This is a public server: it answers at its publisher’s own address and this marketplace is not in the path. Claude Code registers it in one command; --scope user makes it available in every project. The transport below is http, as the publisher's own manifest declares it.
claude mcp add --scope user --transport http onpage-dev-mcp https://onpage.dev/mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry pointing straight at the publisher’s own address — this marketplace is not in the path, and nothing from this listing executes on your machine.
37 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
A memory per site that every OnPage.dev tool writes to, across chats and clients. Open it first when working on a site over time. Pick with mode: open = Open or create the memory, bind it to this chat, get the brief and next steps (default). Needs url. next = The best next steps from everything recorded. timeline = What happened, newest first. note = Record a decision or context. Needs note. forge
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | no | Default open. |
| url | string | no | The site's home page. |
| memory_key | string | no | The memory_key you got when the memory was created. |
| share_learning | boolean | no | Opt in (true) or out (false) of sharing anonymous results: only the fix type and the rounded lift, never the site, URLs or numbers. |
| kind | string | no | — |
| limit | number | no | — |
| note | string | no | — |
| detail | string | no | brief = short summary. |
Scan a page for Google and AI search: 0-100 score, issues to fix first with why and how, AI readiness and key facts. Pick with mode: page = A live page by url (default). Needs url. html = Unpublished HTML before deploy, to gate a release. Needs html. deep = Everything measured on one page, by section. Needs url. rescan = Scan again after fixes and compare with the last scan. Needs url.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | no | Default page. |
| url | string | no | Full address of the page, for example https://example.com/pricing. |
| html | string | no | The complete HTML document, up to 900 KB. |
| sections | array | no | Sections to include. Default: all. |
| memory_key | string | no | site_memory key, records this call. |
| detail | string | no | brief = short summary. |
Audit a whole site, step by step, and work with the result. Pick with mode: start = Start an audit of up to 25 pages; returns audit_id. Needs url. continue = Scan the next pages; call until complete. Issues by code, sections, average score. Needs audit_id. import = Turn a crawl from Screaming Frog, Ahrefs or Semrush (up to 500 pages) into an audit_id. Needs pages[{url, status, redirect_to, title,
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | no | Default start. |
| url | string | no | Full address, for example https://example.com. |
| max_pages | integer | no | How many pages to audit, default 10, at most 25. |
| audit_id | string | no | The id returned by start_site_audit. |
| pages | array | no | One row per crawled page. |
| links | array | no | Optional internal links, for link equity, orphans and internal link suggestions. |
| source | string | no | Where the rows come from, for example Screaming Frog or Ahrefs Site Audit. |
| previous_audit_id | string | no | Optional: the audit to compare with. |
| competitor_audit_id | string | no | Optional: a finished audit of a competitor's site, to compare the two sites side by side instead of over time. |
| brand | string | no | Optional agency or team name to show instead of OnPage.dev. |
| note | string | no | Optional short note for the reader, shown at the top. |
| memory_key | string | no | site_memory key, records this call. |
| detail | string | no | brief = short summary. |
Monitoring that runs on its own and posts changes to a webhook. Each kind takes action create (default), status or stop where it applies. Pick with mode: page = Watch one page (or a competitor page with competitor_of) for SEO changes. Needs url. page_status = Latest result of a page watch. Needs watch_id. page_stop = Stop a page watch. Needs watch_id. site_audit = Audit the whole site every 1, 7 o
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | no | Default page. |
| url | string | no | Full address, for example https://example.com/pricing. |
| webhook_url | string | no | Optional https URL that receives a JSON POST when something changes, for example a Slack or Discord incoming webhook. |
| competitor_of | string | no | Optional: your own page. |
| watch_id | string | no | For status and stop. |
| action | string | no | create (default), status or stop. |
| schedule_id | string | no | For status and stop. |
| every_days | number | no | How often, default 7. |
| max_pages | number | no | Pages per audit, default 25. |
| pages | array | no | Key pages to guard besides the home page (money pages first). |
| guard_id | string | no | For status and stop. |
| competitors | array | no | Competitor home pages. |
| topics | array | no | Your topics or keywords, to flag overlapping pages. |
| memory_key | string | no | site_memory key, records this call. |
| detail | string | no | brief = short summary. |
A daily SEO data feed for key pages and a live dashboard in the chat. Pick with mode: feed = Start a daily feed of key pages; returns feed_id. Needs url. data = The feed as clean tables over time. Needs feed_id, dataset. build = Blueprint for a live SEO command center with realtime GA4 visitors. Needs feed_id.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | no | Default feed. |
| url | string | no | Home page of the site. |
| pages | array | no | Optional key pages to track, up to 10. |
| name | string | no | Optional name, for example the client's name. |
| fix_log_id | string | no | Optional fix log from log_fix, to include shipped fixes. |
| replace | boolean | no | Replace this connection's existing feed. |
| feed_id | string | no | Feed from create_dashboard_feed. |
| dataset | string | no | — |
| from | string | no | Start date, YYYY-MM-DD. |
| to | string | no | End date, YYYY-MM-DD. |
| sources | array | no | What the user has connected in Claude. |
| bigquery | object | no | Optional, for ready SQL. |
| format | string | no | blueprint (default) for Claude Dashboards, or html for a complete, designed dashboard page filled with the feed's data, ready to show as an artifact. |
| memory_key | string | no | site_memory key, records this call. |
| detail | string | no | brief = short summary. |
Prove and measure with numbers from the user's Search Console, GA4, Ahrefs or Semrush, including numbers the user pastes. Use it instead of calculating by hand: it handles spelling variants, control groups and trends. Pick with mode: impact = Before and after fixes, against pages you did not touch. Needs pages[{url, before, after, changed, fix}]. ai_citations = AI citations before and after, per e
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | no | Default impact. |
| pages | array | no | — |
| fix_date | string | no | Date the fixes went live, YYYY-MM-DD. |
| days | integer | no | Length of each period in days. |
| source | string | no | Where the counts come from, for example Ahrefs Brand Radar. |
| watch_ids | array | no | Optional watch ids, to list what changed on each page and when. |
| fix_log_id | string | no | Optional fix log from log_fix: takes the fix date from it and saves the result per fix, with a rollback plan for fixes that did worse. |
| rows | array | no | — |
| brand_terms | array | no | Brand and product names, and misspellings. |
| your_domain | string | no | Your domain, e.g. example.com. |
| rows_before | array | no | Optional same rows from an earlier period. |
| memory_key | string | no | site_memory key, records this call. |
| detail | string | no | brief = short summary. |
Turn Search Console, GA4 or Ahrefs rows (also rows the user pastes) into the fastest wins, instead of judging them by hand; content_decay and traffic_drop take search_type for Discover, News, Image or Video rows. Pick with mode: ctr_gaps = Page 1 results with a click-through rate far below normal. Needs rows[{position, page, query, clicks, impressions, ctr}]. striking_distance = Queries at positio
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | no | Default ctr_gaps. |
| rows | array | no | Search Console rows for one period (28 days works well). |
| search_type | string | no | Search Console search type of the rows, default web. |
| fix_log_id | string | no | Optional fix log from log_fix, to spot undone fixes on losing pages. |
| drop_date | string | no | Optional first day of the drop, YYYY-MM-DD, to check Google updates around it. |
| urls | array | no | Article pages to check. |
| ads | array | no | Google Ads search terms. |
| gsc | array | no | Search Console queries. |
| brand_terms | array | no | Optional brand names, handled apart. |
| memory_key | string | no | site_memory key, records this call. |
| detail | string | no | brief = short summary. |
Turn backlink data from Ahrefs, Semrush or similar into links won back, won or cleaned up. Pick with mode: broken = Broken and lost backlinks and 404 visits into 301s and outreach. Needs rows[{target_url, source_url, anchor, domain_rating, dofollow, http_code}]. opportunities = Sites linking to competitors, and unlinked brand mentions. Needs site. outreach = One outreach email per site, as drafts
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | no | Default broken. |
| rows | array | no | Broken backlink rows, one per linking page. |
| site | string | no | Optional: your site's address. |
| audit_id | string | no | Optional: a finished site audit, to match on page titles too. |
| live_urls | array | no | Optional: your live pages, instead of reading the sitemap. |
| format | string | no | Rule format, default redirects (Cloudflare Pages and Netlify _redirects). |
| brand | string | no | Brand name to look for in mention pages. |
| yours | array | no | Your own referring domains. |
| competitors | array | no | Each competitor with its referring domains. |
| mentions | array | no | Pages that mention the brand. |
| your_site | string | no | Your site or brand name, e.g. |
| sender_name | string | no | Name to sign with. |
| prospects | array | no | — |
| reason | string | no | Why a disavow is considered. |
| memory_key | string | no | site_memory key, records this call. |
| detail | string | no | brief = short summary. |
Whether AI assistants can read, quote and recommend a site. Pick with mode: check = AI crawler access, llms.txt, 15 citability checks and the page as a model reads it. Needs url. bots = Fetch the page as Googlebot, GPTBot, ClaudeBot, PerplexityBot and more against a browser: firewall blocks, challenges, cloaking. Needs url. gaps = Where AI answers name competitors, not you, from Brand Radar or sim
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | no | Default check. |
| url | string | no | Full address of the page, for example https://example.com/pricing. |
| site | string | no | Your site, for example example.com. |
| brand | string | no | Your brand name as people write it. |
| competitors | array | no | — |
| responses | array | no | — |
| pages | array | no | — |
| source | string | no | Where the citation counts come from. |
| memory_key | string | no | site_memory key, records this call. |
| detail | string | no | brief = short summary. |
Whether a page answers the questions people ask AI and Google. Pick with mode: questions = Sub-questions AI Mode fans out to, and which the page answers. Needs url, topic, questions. passages = The passages that answer given questions, or the gaps. Needs url, question. format = Answer format against the pages that rank. Needs url, question, competitors.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | no | Default questions. |
| url | string | no | Full address of the page. |
| topic | string | no | The topic or main query, for example 'passport renewal'. |
| questions | array | no | The sub-questions an AI search engine would ask for the topic. |
| competitors | array | no | Optional: up to 2 pages that rank for the topic. |
| question | string | no | The question people ask, for example 'how long does shipping take to Germany'. |
| memory_key | string | no | site_memory key, records this call. |
| detail | string | no | brief = short summary. |
Fixes ready to ship: as code, for a CMS through its MCP, as a pull request or at the edge. Pick with mode: fixes = Title, description, canonical, social tags, JSON-LD; platform html, wordpress, shopify, webflow, wix, storyblok, sanity, contentful, strapi, ghost, magento, git or cloudflare. Needs url. alt_texts = Write and ship missing alt texts. Needs url. web_vitals = Speed fixes as tags, WordPre
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | no | Default fixes. |
| url | string | no | Full address of the page, for example https://example.com/pricing. |
| platform | string | no | html (default) for code to paste; wordpress, webflow, wix, shopify, storyblok, sanity, contentful, strapi, ghost or magento for a plan with the exact fields and |
| framework | string | no | With platform git: the site's framework. |
| alts | array | no | Step 2: the alt text per image src. |
| failing | array | no | Metrics that fail for real users, if known. |
| site_key | string | no | The site key from the plugin, wpk_... |
| changes | array | no | Optional field and new value pairs. |
| note | string | no | Optional reason shown to the site owner. |
| change_id | string | no | Status of an earlier send. |
| memory_key | string | no | site_memory key, records this call. |
| detail | string | no | brief = short summary. |
Fixes applied at the edge on the user's own Cloudflare, on any CMS. Pick with mode: rules = One Worker that fixes a whole section by rules. Needs audit_id. prerender = Serve rendered HTML to AI crawlers for JavaScript apps. Needs url.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | no | Default rules. |
| audit_id | string | no | Id of a completed site audit (start_site_audit, then get_site_audit until complete). |
| site_name | string | no | Brand name for title endings, for example 'Acme Shoes'. |
| url | string | no | A page of the app, for example https://app.example.com/pricing. |
| memory_key | string | no | site_memory key, records this call. |
| detail | string | no | brief = short summary. |
Record shipped fixes, keep them live and report on them. Pick with mode: log = Record a shipped fix; checked every 6 hours, restore code on regression. Needs fixes[{url, field, new, old, via, ref}]. report = Every fix with status and results: a monthly client report. Needs fix_log_id.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | no | Default log. |
| fix_log_id | string | no | Add to an existing log. |
| fixes | array | no | — |
| shipped_at | string | no | Date the fixes went live, YYYY-MM-DD. |
| webhook | string | no | Optional https URL (Slack, Discord, Zapier, n8n, a GitHub Action) that gets the restore code when a fix is undone. |
| verify | boolean | no | Check the live pages now (4 pages per call). |
| format | string | no | status (default), a client report, or GA4 annotations (one per ship date) for the Admin API. |
| month | string | no | For the report: YYYY-MM. |
| brand | string | no | For the report: your agency name for the header. |
| memory_key | string | no | site_memory key, records this call. |
| detail | string | no | brief = short summary. |
Get changed pages recrawled. Pick with mode: recrawl = Check pages are indexable, sitemap lastmod entries, IndexNow and Search Console steps (default). Needs urls. indexnow = Submit URLs to IndexNow, or set up the key. Needs urls.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | no | Default recrawl. |
| urls | array | no | Changed pages on one site. |
| indexnow_key | string | no | Optional IndexNow key that is live at /<key>.txt. |
| key | string | no | The site's IndexNow key (8 to 128 letters, digits or dashes). |
| memory_key | string | no | site_memory key, records this call. |
| detail | string | no | brief = short summary. |
Explain what Google Search Console and Bing Webmaster Tools report, and what to do. Pick with mode: index_status = Index coverage and rich result statuses, with the fix. Needs rows[{url, coverageState, verdict, indexingState, robotsTxtState, pageFetchState}]. manual_action = A manual action, with the cleanup plan and reconsideration draft. Needs action. bing = Bing Webmaster crawl issues, and Bing
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | no | Default index_status. |
| rows | array | no | — |
| action | string | no | The manual action as Search Console shows it. |
| sample_urls | array | no | Example URLs Google listed. |
| site | string | no | The site or Search Console property. |
| issues | array | no | Bing crawl or index issues. |
| bing_queries | array | no | — |
| google_queries | array | no | — |
| memory_key | string | no | site_memory key, records this call. |
| detail | string | no | brief = short summary. |
How pages target a keyword. Pick with mode: focus = One page against one keyword: 8 checks. Needs url, keyword. cannibalization = Your pages competing for one keyword, side by side on every signal, with the plan. Needs keyword, target_url.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | no | Default focus. |
| url | string | no | Full address of the page, for example https://example.com/pricing. |
| keyword | string | no | The search term the page should rank for, for example 'running shoes'. |
| target_url | string | no | The page that should rank for it. |
| competing_urls | array | no | Other pages of the same site that compete for the keyword. |
| rows | array | no | Optional Search Console rows for the keyword, to find the competing pages and their positions. |
| memory_key | string | no | site_memory key, records this call. |
| detail | string | no | brief = short summary. |
Accessibility for people and the European Accessibility Act. Pick with mode: wcag = WCAG 2.1 AA checks. Needs url. screen_reader = The page as a screen reader reads it. Needs url.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | no | Default wcag. |
| url | string | no | Full address of the page, for example https://example.com/pricing. |
| tree | object | no | Optional: an accessibility snapshot from your own browser (role, name, level, children), for example Puppeteer page.accessibility.snapshot(). |
| memory_key | string | no | site_memory key, records this call. |
| detail | string | no | brief = short summary. |
Local search: the site, the Business Profile and the map. Pick with mode: check = LocalBusiness markup, NAP, locations and the Business Profile (default). Needs url. reviews = Reply drafts for Google reviews, unhappy ones first, for the user's GBP connector after approval. Needs reviews[{rating, author, text, date, replied, review_id}]. demand = Business Profile search terms and geo-grid ranks int
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | no | Default check. |
| url | string | no | The home page, a location page or the locations overview page. |
| gbp_profile | object | no | Optional: the Google Business Profile of this location, from the user's GBP connector or typed by the user, to compare with the site. |
| business | string | no | Business name to sign with. |
| contact | string | no | Where unhappy customers can reach you, e.g. |
| reviews | array | no | — |
| terms | array | no | Search terms from the Business Profile performance report. |
| grid | array | no | Optional geo-grid rankings. |
| pages | array | no | The site's page URLs, e.g. |
| city | string | no | Main city, left out when matching terms to pages. |
| memory_key | string | no | site_memory key, records this call. |
| detail | string | no | brief = short summary. |
Whether analytics and consent are set up right, and whether the numbers add up. Pick with mode: ga4 = GA4 tags, events and duplicates. Needs url. consent = Cookie banner and Consent Mode v2. Needs url. gsc_vs_ga4 = Search Console clicks against GA4 sessions per page: broken or filtered tracking. Needs gsc[{page, clicks}], ga4[{landing_page, sessions}].
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | no | Default ga4. |
| url | string | no | Full address of the page, for example https://example.com/. |
| gsc | array | no | Search Console clicks per page. |
| ga4 | array | no | GA4 sessions per landing page, organic Google only. |
| memory_key | string | no | site_memory key, records this call. |
| detail | string | no | brief = short summary. |
Status of URLs and links. Pick with mode: urls = Status, redirect chain and canonical of a list of URLs. Needs urls. outbound = Dead or moved links from a page to other sites, with archived copies. Needs url.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | no | Default urls. |
| urls | array | no | Addresses to check. |
| expected | array | no | Optional expected final address for each URL, in the same order. |
| url | string | no | The page to check. |
| memory_key | string | no | site_memory key, records this call. |
| detail | string | no | brief = short summary. |
Core Web Vitals from real Chrome users. Pick with mode: now = The latest field data for a page or site. Needs url. trend = Weekly history, before and after a change date. Needs url.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | no | Default now. |
| url | string | no | Full address of the page, for example https://example.com/pricing. |
| change_date | string | no | Optional date a speed fix went live, YYYY-MM-DD. |
| memory_key | string | no | site_memory key, records this call. |
| detail | string | no | brief = short summary. |
Send results where the team works. Pick with mode: link = A link to the visual report. Needs url. export = A Google Sheet, CSV, Slack message or one task per issue.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | no | Default link. |
| url | string | no | Full address, for example https://example.com/pricing. |
| audit_id | string | no | A finished site audit from start_site_audit, to export the whole site. |
| slack_webhook_url | string | no | Optional https incoming webhook (Slack, Discord, Teams) to post the summary to. |
| memory_key | string | no | site_memory key, records this call. |
| detail | string | no | brief = short summary. |
Plans for migrations, experiments and the team. Pick with mode: redirects = Redirect map for a migration or URL change. split_test = SEO split test on a page template, with the Worker. Needs urls, field, pattern. sprint = Fixes into a week plan of tickets per role. Needs fixes[{title, url, detail, severity, impact, effort}].
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | no | Default redirects. |
| old_urls | array | no | — |
| old_site | string | no | Old site address, to read its sitemap instead of old_urls. |
| new_urls | array | no | — |
| new_site | string | no | New site address, to read its sitemap instead of new_urls. |
| format | string | no | Output format, default redirects (Cloudflare Pages and Netlify). |
| urls | array | no | Pages of one template. |
| clicks | array | no | Optional clicks per page for a balanced split. |
| field | string | no | What to change. |
| pattern | string | no | The new value with {title} or {description} as placeholders. |
| start_date | string | no | Optional planned start, YYYY-MM-DD. |
| fixes | array | no | — |
| weeks | number | no | Weeks to plan, default 4. |
| hours | object | no | Hours per week per role, default 8 each. |
| memory_key | string | no | site_memory key, records this call. |
| detail | string | no | brief = short summary. |
What to write and how, from the pages that rank and the user's search data. Pick with mode: brief = A content brief from the pages that rank. Needs keyword, competitors. topics = Search Console queries into topics, with the page that owns each, and keyword gaps. Needs rows[{query, page, clicks, impressions, position, url}]. intent = Your page against the search intent of the pages that rank.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | no | Default brief. |
| keyword | string | no | The search term the page should rank for. |
| competitors | array | no | Pages that rank for the term. |
| url | string | no | Optional: your existing page for this term. |
| audit_id | string | no | Optional: a finished site audit, for internal link suggestions. |
| rows | array | no | Search Console rows by query and page. |
| competitor_rows | array | no | Optional keyword gap: competitors' organic keywords (Ahrefs organic-keywords or Semrush domain_organic for each competitor, or Semrush keyword gap rows). |
| queries | array | no | Search Console rows by query and page, for the site-wide check. |
| memory_key | string | no | site_memory key, records this call. |
| detail | string | no | brief = short summary. |
Technical checks across pages and logs. Pick with mode: hreflang = Hreflang across language versions, with the corrected tag set. Needs url. parameters = URL parameters and filters that waste crawl budget. duplicates = Duplicate and near-duplicate pages. Needs audit_id. extract = One value pulled from many pages. Needs urls. logs = Access logs: what Googlebot and AI crawlers really crawl, with IP
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | no | Default hreflang. |
| url | string | no | Full address of one language version of the page. |
| audit_id | string | no | Id of a completed site audit. |
| urls | array | no | Optional extra URLs, for example from server logs or Search Console. |
| selector | string | no | CSS selector, for example .price, h1 or link[rel=canonical]. |
| attribute | string | no | With selector: read this attribute instead of the text, for example href or content. |
| regex | string | no | A regular expression; the first group is returned if there is one, otherwise the whole match. |
| jsonld | string | no | A JSON-LD path: the @type, then the properties, for example Product.offers.price or Article.author.name. |
| log | string | no | Raw access log lines, one request per line. |
| sitemap_urls | array | no | Optional: the URLs from the site's sitemap, to find pages bots never crawl. |
| memory_key | string | no | site_memory key, records this call. |
| detail | string | no | brief = short summary. |
The llms.txt file for AI assistants. Pick with mode: generate = Write one from the sitemap and home page. Needs url. validate = Check an existing one and its links. Needs url.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | no | Default generate. |
| url | string | no | Home page of the site, for example https://example.com. |
| text | string | no | Optional llms.txt content to validate instead of the live file. |
| memory_key | string | no | site_memory key, records this call. |
| detail | string | no | brief = short summary. |
JSON-LD structured data for rich results. Pick with mode: generate = Write JSON-LD for a page: type Article, Product, FAQPage, Organization, BreadcrumbList, VideoObject, Event, Recipe, JobPosting, SoftwareApplication, ProfilePage or Course. Needs url. validate = Validate JSON-LD for rich results. Needs jsonld. product_page = Check an existing ecommerce product page (price, stock, merchant listing
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | no | Default generate. |
| url | string | no | Full address of the page, for example https://example.com/pricing. |
| type | string | no | Schema type, default auto. |
| jsonld | string | no | The JSON-LD as text, with or without the <script> tag. |
| memory_key | string | no | site_memory key, records this call. |
| detail | string | no | brief = short summary. |
robots.txt for search and AI crawlers. Pick with mode: test = Which crawlers may fetch a URL, and the rule that decides. Needs url. ai_policy = Rules per AI crawler: allow AI search, block training. Needs url, policy.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | no | Default test. |
| url | string | no | Full address of the page, for example https://example.com/pricing. |
| user_agents | array | no | Crawler names, for example Googlebot, GPTBot, ClaudeBot, PerplexityBot. |
| robots_txt | string | no | Optional robots.txt content to test instead of the live file. |
| policy | string | no | Which AI crawlers to allow. |
| memory_key | string | no | site_memory key, records this call. |
| detail | string | no | brief = short summary. |
The XML sitemap. Pick with mode: check = Check the sitemap and a sample of its URLs. Needs url. generate = Write a sitemap from a page list or audit. Needs audit_id.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | no | Default check. |
| url | string | no | The site's home page, or the sitemap URL itself. |
| audit_id | string | no | A finished site audit. |
| memory_key | string | no | site_memory key, records this call. |
| detail | string | no | brief = short summary. |
What visitors and crawlers see on every screen size. Pick with mode: render = First screen on phone, tablet and desktop in a real browser, and what crawlers without JavaScript get (default). Needs url. probe = A measurement script to run in the user's own browser tool. analyze = Analyse the results of that script. Needs url, results.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | no | Default render. |
| url | string | no | Full address of the page, for example https://example.com/pricing. |
| results | array | no | One probe result per viewport, each with device set to phone, tablet or desktop. |
| no_js | object | no | Optional: the probe result with JavaScript turned off, for an exact comparison. |
| memory_key | string | no | site_memory key, records this call. |
| detail | string | no | brief = short summary. |
Internal links and link equity. Pick with mode: suggest = Links to add, with anchors, applied by Worker or CMS. Needs audit_id. equity = Internal PageRank and click depth from a site audit. Needs audit_id.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | no | Default suggest. |
| audit_id | string | no | Id of a completed site audit. |
| target_url | string | no | Page that should receive links. |
| topic | string | no | Topic or main keyword of the target page. |
| platform | string | no | Optional: also return the links ready to apply: a Cloudflare Worker that links the first mention on each page, a WordPress edit plan, or the edits for the code. |
| phrases | array | no | Optional: phrases to turn into the link, besides the anchor text, for example natural variants. |
| important_urls | array | no | Optional. Pages that matter most, for example top pages by clicks or revenue. |
| memory_key | string | no | site_memory key, records this call. |
| detail | string | no | brief = short summary. |
Compare pages side by side. Pick with mode: pages = Your page against up to 3 competitors. Needs url, competitors. html = Two versions of HTML before and after. Needs before, after. preview = Deploy preview against production before merging. Needs preview_url, production_url.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | no | Default pages. |
| url | string | no | Full address, for example https://example.com. |
| competitors | array | no | Competitor page addresses. |
| keyword | string | no | Optional search term to compare keyword use. |
| before | string | no | HTML before the change. |
| after | string | no | HTML after the change. |
| preview_url | string | no | The deploy preview URL. |
| production_url | string | no | The live site. |
| paths | array | no | Paths like /pricing, default /. |
| bypass_token | string | no | Vercel protection bypass secret. |
| memory_key | string | no | site_memory key, records this call. |
| detail | string | no | brief = short summary. |
How a page looks in Google and when shared, measured in pixels the way Google truncates. Use it instead of estimating title or description length. Pick with mode: search = Title and description as Google shows them; give title (and description) or a url to read them. social = Open Graph and X cards, and the share image. Needs url.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | no | Default search. |
| url | string | no | Page to read the current title and description from, when no title is given. |
| title | string | no | Proposed title tag text. |
| description | string | no | Proposed meta description. |
| memory_key | string | no | site_memory key, records this call. |
| detail | string | no | brief = short summary. |
How Google understands who is behind a site. Pick with mode: graph = Organization, sameAs, logo and founder in structured data. Needs url. trust = Author, about, contact and policy signals. Needs url.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | no | Default graph. |
| url | string | no | Full address, for example https://example.com/blog/post. |
| memory_key | string | no | site_memory key, records this call. |
| detail | string | no | brief = short summary. |
Readability and correct language. Pick with mode: readability = Readability that fits the page and the pages that rank. Needs url. spelling = Spelling and grammar errors in about 30 languages. Needs url.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | no | Default readability. |
| url | string | no | Your page. |
| keyword | string | no | Optional: the search term, for context. |
| competitors | array | no | Optional: top organic results for the keyword. |
| memory_key | string | no | site_memory key, records this call. |
| detail | string | no | brief = short summary. |
Use for ongoing rank tracking without picking keywords by hand. Each run, fetch Search Console rows by query and page (last 7 or 28 days) and, if connected, the rows of Ahrefs Rank Tracker (rank-tracker-overview) or Semrush Position Tracking, plus GA4 conversions or revenue per landing page if available, and pass them with the tracker_id (leave it out on the first run to create a tracker).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| action | string | no | run (default), status or stop. |
| tracker_id | string | no | From the first run. Leave out to create a tracker. |
| site | string | no | Your site. Needed on the first run. |
| gsc_rows | array | no | Search Console rows by query and page for the period. |
| tracker_rows | array | no | Ahrefs Rank Tracker or Semrush Position Tracking rows. |
| conversions | array | no | Optional GA4 key events or revenue per landing page. |
| money_keywords | array | no | Optional keywords you always want followed. |
| fix_log_id | string | no | Optional fix log (log_fix) whose pages count as work done. |
| webhook_url | string | no | Optional https webhook for the changes (Slack and Discord work). |
| memory_key | string | no | site_memory key, records this call. |
| detail | string | no | brief = short summary. |
Use when Search Console, GA4, Ahrefs or Semrush data is available, also to explain a traffic drop (pass clicks_previous): ranks the fixes by the traffic or revenue they can win. Rank SEO fixes by how much traffic they can win, using data from the user's other connected tools. With GA4, also pass each page's organic conversions (key events) or revenue, and fixes are ranked by the money they can bri
| Parameter | Type | Required | Notes |
|---|---|---|---|
| pages | array | yes | — |
| source | string | no | Where the numbers come from. |
| currency | string | no | Currency of revenue, for example EUR or USD. |
| audit_id | string | no | Optional id of a finished site audit, so pages are not scanned again. |
| memory_key | string | no | site_memory key, records this call. |
| detail | string | no | brief = short summary. |
- Every tool — any call limit is its publisher’s, not ours
- No card, and mcprush charges nothing for it
- Runs at its publisher’s own address — this marketplace is not in the path
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install OnPage.dev or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
This listing is an address its publisher runs, and you connect to it directly — this marketplace is not in the path. The scanner reads packages and public source, and an address is neither: the repository linked on this page is where this record was collected from, not a copy of what the address serves, so it is not graded in its place. So there is no grade — not a withheld one, an unmeasured one.
Release history
This is an address its publisher runs: which release it serves is theirs to choose, so there is nothing here to pin. The history below is for reading; the current release on file is 2.14.0.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish OnPage.dev can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.