{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_zkm2czgb2h2x","handle":"onpage-dev","url":"https://wellknown.network/agents/onpage-dev","links":{"self":"https://wellknown.network/agents/onpage-dev/record.json","html":"https://wellknown.network/agents/onpage-dev","markdown":"https://wellknown.network/agents/onpage-dev/record.md","api":"https://wellknown.network/api/v1/agents/onpage-dev","status":"https://wellknown.network/api/v1/agents/onpage-dev/status","claim":"https://wellknown.network/agents/onpage-dev/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/onpage-dev/claim.json","badge":"https://wellknown.network/agents/onpage-dev/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/onpage-dev/history","tools":"https://wellknown.network/api/v1/agents/onpage-dev/tools"},"ard":{"identifier":"urn:air:onpage.dev:server:onpage-dev","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"OnPage.dev","summary":"Free SEO MCP that closes the loop: find, fix, ship as a PR or to WordPress, prove. 70 tools, no key.","description":"Free SEO MCP that closes the loop: find, fix, ship as a PR or to WordPress, prove. 70 tools, no key.","publisher":{"name":"dev.onpage","url":null},"homepage":"https://onpage.dev/mcp","repository":"https://github.com/seoonpage/seo-mcp-server","version":"1.28.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://onpage.dev/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-09T14:11:02.769844Z","publishedAt":"2026-10-09T14:11:02.769844Z","registryName":"dev.onpage/onpage"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"content.writing","name":"Writing & Editing","confidence":1,"provenance":"derived"},{"slug":"content.social","name":"Social Media","confidence":1,"provenance":"derived"},{"slug":"documents.extraction","name":"Data Extraction","confidence":1,"provenance":"derived"},{"slug":"documents.spreadsheets","name":"Spreadsheets","confidence":1,"provenance":"derived"},{"slug":"dev.version-control","name":"Version Control","confidence":1,"provenance":"derived"},{"slug":"commerce.pricing","name":"Pricing & Quotes","confidence":1,"provenance":"derived"},{"slug":"communication.sms-voice","name":"SMS & Voice","confidence":1,"provenance":"derived"},{"slug":"knowledge.knowledge-graph","name":"Knowledge Graphs","confidence":1,"provenance":"derived"}],"categories":["commerce","communication","content","dev","documents","knowledge"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 7h ago.","lastOkAt":"2026-10-11T16:29:27.583Z","lastProbedAt":"2026-10-11T16:29:27.583Z","statusComputedAt":"2026-10-11T16:31:10.527Z","reliability30d":{"probes":19,"successRate":1,"p50Ms":26,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":19,"ok":19,"authBoundaryOk":0,"serviceOk":19,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-11T16:29:27.583Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":24,"error":null,"detail":{"tools":[{"name":"scan_page","description":"Scan one public web page for SEO and AI visibility. Returns a 0-100 score, the issues to fix first with why and how, AI readiness, and the key facts (title, des"},{"name":"check_ai_visibility","description":"Check whether ChatGPT, Claude, Perplexity, Gemini and other AI crawlers may read a page (robots.txt per bot), whether llms.txt exists, how ready and citable the"},{"name":"check_focus_keyword","description":"Check how well a page targets one search term: title, meta description, H1, URL, first 100 words, subheadings, image alt texts and keyword density (flags stuffi"},{"name":"get_fix_pack","description":"Use after a scan to get the fixes as code. Set platform to how the user ships: html (default), wordpress, git for a pull request, or cloudflare for an edge Work"},{"name":"check_web_vitals","description":"Get Core Web Vitals from real Chrome users (the Chrome UX Report, the field data Google uses for ranking): LCP, INP, CLS, FCP and TTFB at the 75th percentile, o"},{"name":"analyze_logs","description":"Analyse server access log lines to see what Googlebot, Bingbot and AI crawlers (GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-User, PerplexityBot, Appl"},{"name":"submit_indexnow","description":"Submit changed URLs to IndexNow, so Bing, Yandex, Naver, Seznam and Yep recrawl them within minutes instead of days. Call it after a fix is live. The first time"},{"name":"check_accessibility","description":"Check a page against WCAG 2.1 level AA, the standard behind the European Accessibility Act (EN 301 549): page language, text alternatives, form labels, link and"},{"name":"check_answer_format","description":"For a question people search (a featured snippet or a People Also Ask question), find the section that answers it on the pages that rank and on your page, and c"},{"name":"check_consent","description":"Quick check of the cookie banner setup from the HTML. To see what GA4 really sends before and after accepting, use check_ga4_tracking. Check a page's cookie con"},{"name":"check_product_page","description":"Check an ecommerce product page for Google: Product structured data with name, image, price, currency and availability, identifiers (SKU, GTIN, MPN, brand), shi"},{"name":"map_topics","description":"Group a site's search queries into topic clusters and map them to pages: which page owns each topic, where several pages compete for the same topic, which topic"},{"name":"check_question_coverage","description":"Check how well a page covers a topic the way AI search reads it. AI Mode and AI Overviews split a search into many sub-questions (a query fan-out) and pick a so"},{"name":"check_hreflang","description":"Check the hreflang setup of a multilingual page: valid language and region codes, x-default, the self-reference and duplicates, then each language version: does"},{"name":"check_trust_signals","description":"Check the trust signals Google and AI models look for across a site, not only on one page: an About page with real content, contact details (email, phone, addre"},{"name":"check_local_seo","description":"Check a local business site for Google Maps and local search: LocalBusiness markup (most specific type, address, phone, opening hours, geo coordinates), whether"},{"name":"map_link_equity","description":"Map how link authority flows through a site from a finished site audit: internal PageRank per page, click depth from the home page, links in and out. Finds page"},{"name":"check_ga4_tracking","description":"Use when GA4 numbers look wrong or consent may not reach GA4. For a quick check of the banner setup from the HTML, use check_consent. Debug Google Analytics 4 o"},{"name":"log_fix","description":"Record SEO fixes after they ship, so OnPage.dev keeps them honest: it checks about every 6 hours that each fix is still live (title, description, canonical, rob"},{"name":"get_fix_log","description":"Show a fix log: per fix whether it is still live, undone or changed since it shipped, with the restore code for every undone fix, the measured impact when measu"},{"name":"explain_index_status","description":"Use when pages are missing from Google: turns Search Console URL Inspection results (or rows from the Pages report: URL plus reason) into causes, fixes and the "},{"name":"build_edge_rules","description":"Use when the same SEO problem repeats across a section of a site (all product pages, all blog posts) and the CMS or templates are hard to change: from a finishe"},{"name":"get_prerender_worker","description":"Use when a site is built in the browser (React, Vue, Angular) and AI crawlers such as GPTBot, ClaudeBot and PerplexityBot, which do not run JavaScript, see an e"},{"name":"diagnose_traffic_drop","description":"Use when organic traffic dropped: fetch two periods of equal length from the user's Search Console (before and after the drop), per page or per page and query, "},{"name":"find_ctr_gaps","description":"Use to find quick wins without ranking changes: from the user's Search Console rows (page, or page and query, with impressions, clicks or CTR and position), fin"},{"name":"find_striking_distance","description":"Use to find the fastest ranking wins: from the user's Search Console rows by query and page, finds queries ranking at positions 8 to 20 with real impressions, g"},{"name":"check_vitals_trend","description":"Use to see whether speed changed for real users and since when, for example after a performance fix: Core Web Vitals (LCP, INP, CLS, FCP, TTFB) at the 75th perc"},{"name":"measure_ai_citations","description":"Use to prove AI visibility gains: pass how often AI assistants cited each page before and after the fixes (from Ahrefs Brand Radar or another AI-visibility tool"},{"name":"check_sitemap","description":"Use to check a site's XML sitemap the way Google reads it: finds it through robots.txt or the usual locations, follows a sitemap index, and checks the format, t"},{"name":"extract_from_pages","description":"Use to check a template change or a data point across many pages at once, like custom extraction in a crawler: give up to 20 URLs and one of a CSS selector (wit"},{"name":"find_duplicate_content","description":"Use to find pages that say almost the same thing, which compete with each other and make Google pick one: groups the pages of a finished site audit by text simi"},{"name":"check_url_parameters","description":"Use when a site has filter, sort, tracking or search URLs that waste crawl budget or create duplicates: classifies every query parameter found in a site audit's"},{"name":"create_dashboard_feed","description":"Use when the user wants an SEO dashboard or client report that stays up to date: OnPage.dev then checks the site's key pages every day and keeps the history (sc"},{"name":"get_dashboard_data","description":"Use to fill an SEO dashboard or report from a feed made with create_dashboard_feed: returns one dataset as a clean table with a date column (YYYY-MM-DD) and ful"},{"name":"build_seo_dashboard","description":"Use when the user wants a live SEO dashboard in Claude (Claude Dashboards or an artifact): returns a complete blueprint that combines a realtime block from the "},{"name":"scan_html","description":"Scan raw HTML that is not published yet, for example a local build, a template or a draft from your editor. Returns the same score, fixes and AI readiness as sc"},{"name":"rescan_and_compare","description":"Scan a live page again and compare it with the previous scan of that page: score change, issues fixed, new issues and AI readiness change. Use this after deploy"},{"name":"check_snippet","description":"Estimate how a title and meta description show in Google: pixel width against the cut-off on desktop and mobile, and the truncated text a searcher would see. No"},{"name":"generate_schema","description":"Writes validated JSON-LD for Article, Product, FAQPage, Organization or BreadcrumbList. For LocalBusiness use check_local_seo; to check JSON-LD you wrote yourse"},{"name":"find_answer_passages","description":"Find the passages on a page that best answer a given question, the way AI answer engines pick text to quote. Returns the top passages with their heading, word c"},{"name":"generate_llms_txt","description":"Build a ready-to-upload llms.txt for a site from its sitemap and home page: site name, summary and the main pages grouped by section. Upload the result to the r"},{"name":"ai_crawler_policy","description":"Write robots.txt rules for AI crawlers based on a policy, and merge them into the site's current robots.txt. Policies: allow_all, search_only (allow AI search a"},{"name":"deep_audit","description":"One page, every measurement by section: use it when scan_page is not detailed enough. For a whole site use start_site_audit. Everything OnPage.dev measures on a"},{"name":"check_urls","description":"Check up to 20 URLs at once: final status code, the full redirect chain and where each one ends up. Built for site migrations, broken link sweeps and launch che"},{"name":"test_robots","description":"Test a URL against the site's live robots.txt for one or more crawlers, using Google's matching rules (most specific user-agent group, longest matching rule, Al"},{"name":"validate_schema","description":"Validate JSON-LD you wrote before you publish it: JSON syntax, @context and @type, absolute URLs, ISO dates, and Google's required and recommended fields per ri"},{"name":"compare_html","description":"Compare two versions of a page's HTML, for example before and after a code change, and report what got better or worse for SEO: score, issues fixed and introduc"},{"name":"start_site_audit","description":"Start an SEO audit of a whole site (up to 25 pages from the sitemap, or from the home page links when there is no sitemap). Returns an audit_id and the first pr"},{"name":"get_site_audit","description":"Continue a site audit started with start_site_audit: each call scans the next pages and reports progress. Keep calling until status is complete, then you get th"},{"name":"suggest_internal_links","description":"Suggest which existing pages should link to a target page, with anchor text, based on a completed site audit. The target can be a page from the audit or a new p"},{"name":"compare_pages","description":"Compare a page with up to 3 competitor pages that rank for the same search: score, AI readiness, words, headings, rich results, speed and more side by side, plu"},{"name":"prioritize_fixes","description":"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 reve"},{"name":"check_entity_graph","description":"Check how a page's structured data describes who and what it is about, the way AI knowledge graphs read it: which entities there are (Organization, Person, Arti"},{"name":"validate_llms_txt","description":"Validate a site's llms.txt against the llmstxt.org format: served as text (not an HTML page), one H1 with the site name, a > summary, ## sections with [name](ur"},{"name":"compare_ai_citations","description":"Compare the pages AI assistants cite with the ones they skip, using citation counts from the user's connected tools. Before calling, check your available tools:"},{"name":"watch_page","description":"Start watching a page. OnPage.dev rescans it about once a day and records what changed for search and AI: the page going down or redirecting, a new noindex, AI "},{"name":"get_watch","description":"Read a watch created with watch_page: the latest snapshot, when it was last checked and every change found so far, newest first."},{"name":"unwatch","description":"Stop a watch created with watch_page and delete its history."},{"name":"create_content_brief","description":"Build a writing brief for a search term from the pages that rank for it. Get the competitor URLs from your own search tool, Ahrefs, Semrush or the user (1 to 3)"},{"name":"plan_redirects","description":"Match old URLs to new ones for a site migration or restructure and write the redirect rules. Give the old URLs (a list, or the old site's address while it is st"},{"name":"share_result","description":"Scan a page again and publish a shareable proof page on onpage.dev with the score before and after, the issues fixed and the ones still open. Useful after fixin"},{"name":"render_page","description":"Use to see what visitors and crawlers without JavaScript (GPTBot, ClaudeBot, PerplexityBot) get on the first screen. Load a page in a real browser on a phone (3"},{"name":"get_layout_probe","description":"Get a small JavaScript measurement script to run in your own browser tool (Claude in Chrome, Playwright, Puppeteer or similar). Run it on the page at each viewp"},{"name":"analyze_layout","description":"Analyse the results of the get_layout_probe script, measured in your own browser: the same checks as render_page (H1 and call to action position, pop-ups, tap t"},{"name":"screen_reader_view","description":"Show a page the way a screen reader announces it, from the browser's accessibility tree: landmarks, the heading outline, and the reading order of links, buttons"},{"name":"export_findings","description":"Turn a page scan or a finished site audit into an action plan the team can work from. Returns: rows for a spreadsheet plus a private CSV link that loads straigh"},{"name":"measure_impact","description":"Use to answer \"did our fixes win traffic?\" with before and after numbers. For the score change of one page use rescan_and_compare. Show whether SEO fixes paid o"},{"name":"match_intent","description":"Check whether a page matches what searchers want for a keyword, based on what actually ranks. Fetch the top organic results for the keyword with the user's conn"},{"name":"check_readability","description":"Check how easy a page is to read, against the right target. A product page should read differently from documentation, so the target depends on the page type (g"},{"name":"check_og_tags","description":"Check how a page looks when it is shared on Facebook, LinkedIn, X, WhatsApp, Slack or iMessage: every Open Graph and Twitter Card tag, and the share image itsel"}],"toolCount":70,"toolsHash":"15fd440274c91445697c2666abaaec69c5bea00673f97b53b66a5090dee4f3af","serverName":"onpage-dev","capabilities":["tools","prompts","resources"],"serverVersion":"1.4.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-11T09:25:45.657Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":30,"error":null,"detail":{"tools":[{"name":"scan_page","description":"Scan one public web page for SEO and AI visibility. Returns a 0-100 score, the issues to fix first with why and how, AI readiness, and the key facts (title, des"},{"name":"check_ai_visibility","description":"Check whether ChatGPT, Claude, Perplexity, Gemini and other AI crawlers may read a page (robots.txt per bot), whether llms.txt exists, how ready and citable the"},{"name":"check_focus_keyword","description":"Check how well a page targets one search term: title, meta description, H1, URL, first 100 words, subheadings, image alt texts and keyword density (flags stuffi"},{"name":"get_fix_pack","description":"Use after a scan to get the fixes as code. Set platform to how the user ships: html (default), wordpress, git for a pull request, or cloudflare for an edge Work"},{"name":"check_web_vitals","description":"Get Core Web Vitals from real Chrome users (the Chrome UX Report, the field data Google uses for ranking): LCP, INP, CLS, FCP and TTFB at the 75th percentile, o"},{"name":"analyze_logs","description":"Analyse server access log lines to see what Googlebot, Bingbot and AI crawlers (GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-User, PerplexityBot, Appl"},{"name":"submit_indexnow","description":"Submit changed URLs to IndexNow, so Bing, Yandex, Naver, Seznam and Yep recrawl them within minutes instead of days. Call it after a fix is live. The first time"},{"name":"check_accessibility","description":"Check a page against WCAG 2.1 level AA, the standard behind the European Accessibility Act (EN 301 549): page language, text alternatives, form labels, link and"},{"name":"check_answer_format","description":"For a question people search (a featured snippet or a People Also Ask question), find the section that answers it on the pages that rank and on your page, and c"},{"name":"check_consent","description":"Quick check of the cookie banner setup from the HTML. To see what GA4 really sends before and after accepting, use check_ga4_tracking. Check a page's cookie con"},{"name":"check_product_page","description":"Check an ecommerce product page for Google: Product structured data with name, image, price, currency and availability, identifiers (SKU, GTIN, MPN, brand), shi"},{"name":"map_topics","description":"Group a site's search queries into topic clusters and map them to pages: which page owns each topic, where several pages compete for the same topic, which topic"},{"name":"check_question_coverage","description":"Check how well a page covers a topic the way AI search reads it. AI Mode and AI Overviews split a search into many sub-questions (a query fan-out) and pick a so"},{"name":"check_hreflang","description":"Check the hreflang setup of a multilingual page: valid language and region codes, x-default, the self-reference and duplicates, then each language version: does"},{"name":"check_trust_signals","description":"Check the trust signals Google and AI models look for across a site, not only on one page: an About page with real content, contact details (email, phone, addre"},{"name":"check_local_seo","description":"Check a local business site for Google Maps and local search: LocalBusiness markup (most specific type, address, phone, opening hours, geo coordinates), whether"},{"name":"map_link_equity","description":"Map how link authority flows through a site from a finished site audit: internal PageRank per page, click depth from the home page, links in and out. Finds page"},{"name":"check_ga4_tracking","description":"Use when GA4 numbers look wrong or consent may not reach GA4. For a quick check of the banner setup from the HTML, use check_consent. Debug Google Analytics 4 o"},{"name":"log_fix","description":"Record SEO fixes after they ship, so OnPage.dev keeps them honest: it checks about every 6 hours that each fix is still live (title, description, canonical, rob"},{"name":"get_fix_log","description":"Show a fix log: per fix whether it is still live, undone or changed since it shipped, with the restore code for every undone fix, the measured impact when measu"},{"name":"explain_index_status","description":"Use when pages are missing from Google: turns Search Console URL Inspection results (or rows from the Pages report: URL plus reason) into causes, fixes and the "},{"name":"build_edge_rules","description":"Use when the same SEO problem repeats across a section of a site (all product pages, all blog posts) and the CMS or templates are hard to change: from a finishe"},{"name":"get_prerender_worker","description":"Use when a site is built in the browser (React, Vue, Angular) and AI crawlers such as GPTBot, ClaudeBot and PerplexityBot, which do not run JavaScript, see an e"},{"name":"diagnose_traffic_drop","description":"Use when organic traffic dropped: fetch two periods of equal length from the user's Search Console (before and after the drop), per page or per page and query, "},{"name":"find_ctr_gaps","description":"Use to find quick wins without ranking changes: from the user's Search Console rows (page, or page and query, with impressions, clicks or CTR and position), fin"},{"name":"find_striking_distance","description":"Use to find the fastest ranking wins: from the user's Search Console rows by query and page, finds queries ranking at positions 8 to 20 with real impressions, g"},{"name":"check_vitals_trend","description":"Use to see whether speed changed for real users and since when, for example after a performance fix: Core Web Vitals (LCP, INP, CLS, FCP, TTFB) at the 75th perc"},{"name":"measure_ai_citations","description":"Use to prove AI visibility gains: pass how often AI assistants cited each page before and after the fixes (from Ahrefs Brand Radar or another AI-visibility tool"},{"name":"check_sitemap","description":"Use to check a site's XML sitemap the way Google reads it: finds it through robots.txt or the usual locations, follows a sitemap index, and checks the format, t"},{"name":"extract_from_pages","description":"Use to check a template change or a data point across many pages at once, like custom extraction in a crawler: give up to 20 URLs and one of a CSS selector (wit"},{"name":"find_duplicate_content","description":"Use to find pages that say almost the same thing, which compete with each other and make Google pick one: groups the pages of a finished site audit by text simi"},{"name":"check_url_parameters","description":"Use when a site has filter, sort, tracking or search URLs that waste crawl budget or create duplicates: classifies every query parameter found in a site audit's"},{"name":"create_dashboard_feed","description":"Use when the user wants an SEO dashboard or client report that stays up to date: OnPage.dev then checks the site's key pages every day and keeps the history (sc"},{"name":"get_dashboard_data","description":"Use to fill an SEO dashboard or report from a feed made with create_dashboard_feed: returns one dataset as a clean table with a date column (YYYY-MM-DD) and ful"},{"name":"build_seo_dashboard","description":"Use when the user wants a live SEO dashboard in Claude (Claude Dashboards or an artifact): returns a complete blueprint that combines a realtime block from the "},{"name":"scan_html","description":"Scan raw HTML that is not published yet, for example a local build, a template or a draft from your editor. Returns the same score, fixes and AI readiness as sc"},{"name":"rescan_and_compare","description":"Scan a live page again and compare it with the previous scan of that page: score change, issues fixed, new issues and AI readiness change. Use this after deploy"},{"name":"check_snippet","description":"Estimate how a title and meta description show in Google: pixel width against the cut-off on desktop and mobile, and the truncated text a searcher would see. No"},{"name":"generate_schema","description":"Writes validated JSON-LD for Article, Product, FAQPage, Organization or BreadcrumbList. For LocalBusiness use check_local_seo; to check JSON-LD you wrote yourse"},{"name":"find_answer_passages","description":"Find the passages on a page that best answer a given question, the way AI answer engines pick text to quote. Returns the top passages with their heading, word c"},{"name":"generate_llms_txt","description":"Build a ready-to-upload llms.txt for a site from its sitemap and home page: site name, summary and the main pages grouped by section. Upload the result to the r"},{"name":"ai_crawler_policy","description":"Write robots.txt rules for AI crawlers based on a policy, and merge them into the site's current robots.txt. Policies: allow_all, search_only (allow AI search a"},{"name":"deep_audit","description":"One page, every measurement by section: use it when scan_page is not detailed enough. For a whole site use start_site_audit. Everything OnPage.dev measures on a"},{"name":"check_urls","description":"Check up to 20 URLs at once: final status code, the full redirect chain and where each one ends up. Built for site migrations, broken link sweeps and launch che"},{"name":"test_robots","description":"Test a URL against the site's live robots.txt for one or more crawlers, using Google's matching rules (most specific user-agent group, longest matching rule, Al"},{"name":"validate_schema","description":"Validate JSON-LD you wrote before you publish it: JSON syntax, @context and @type, absolute URLs, ISO dates, and Google's required and recommended fields per ri"},{"name":"compare_html","description":"Compare two versions of a page's HTML, for example before and after a code change, and report what got better or worse for SEO: score, issues fixed and introduc"},{"name":"start_site_audit","description":"Start an SEO audit of a whole site (up to 25 pages from the sitemap, or from the home page links when there is no sitemap). Returns an audit_id and the first pr"},{"name":"get_site_audit","description":"Continue a site audit started with start_site_audit: each call scans the next pages and reports progress. Keep calling until status is complete, then you get th"},{"name":"suggest_internal_links","description":"Suggest which existing pages should link to a target page, with anchor text, based on a completed site audit. The target can be a page from the audit or a new p"},{"name":"compare_pages","description":"Compare a page with up to 3 competitor pages that rank for the same search: score, AI readiness, words, headings, rich results, speed and more side by side, plu"},{"name":"prioritize_fixes","description":"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 reve"},{"name":"check_entity_graph","description":"Check how a page's structured data describes who and what it is about, the way AI knowledge graphs read it: which entities there are (Organization, Person, Arti"},{"name":"validate_llms_txt","description":"Validate a site's llms.txt against the llmstxt.org format: served as text (not an HTML page), one H1 with the site name, a > summary, ## sections with [name](ur"},{"name":"compare_ai_citations","description":"Compare the pages AI assistants cite with the ones they skip, using citation counts from the user's connected tools. Before calling, check your available tools:"},{"name":"watch_page","description":"Start watching a page. OnPage.dev rescans it about once a day and records what changed for search and AI: the page going down or redirecting, a new noindex, AI "},{"name":"get_watch","description":"Read a watch created with watch_page: the latest snapshot, when it was last checked and every change found so far, newest first."},{"name":"unwatch","description":"Stop a watch created with watch_page and delete its history."},{"name":"create_content_brief","description":"Build a writing brief for a search term from the pages that rank for it. Get the competitor URLs from your own search tool, Ahrefs, Semrush or the user (1 to 3)"},{"name":"plan_redirects","description":"Match old URLs to new ones for a site migration or restructure and write the redirect rules. Give the old URLs (a list, or the old site's address while it is st"},{"name":"share_result","description":"Scan a page again and publish a shareable proof page on onpage.dev with the score before and after, the issues fixed and the ones still open. Useful after fixin"},{"name":"render_page","description":"Use to see what visitors and crawlers without JavaScript (GPTBot, ClaudeBot, PerplexityBot) get on the first screen. Load a page in a real browser on a phone (3"},{"name":"get_layout_probe","description":"Get a small JavaScript measurement script to run in your own browser tool (Claude in Chrome, Playwright, Puppeteer or similar). Run it on the page at each viewp"},{"name":"analyze_layout","description":"Analyse the results of the get_layout_probe script, measured in your own browser: the same checks as render_page (H1 and call to action position, pop-ups, tap t"},{"name":"screen_reader_view","description":"Show a page the way a screen reader announces it, from the browser's accessibility tree: landmarks, the heading outline, and the reading order of links, buttons"},{"name":"export_findings","description":"Turn a page scan or a finished site audit into an action plan the team can work from. Returns: rows for a spreadsheet plus a private CSV link that loads straigh"},{"name":"measure_impact","description":"Use to answer \"did our fixes win traffic?\" with before and after numbers. For the score change of one page use rescan_and_compare. Show whether SEO fixes paid o"},{"name":"match_intent","description":"Check whether a page matches what searchers want for a keyword, based on what actually ranks. Fetch the top organic results for the keyword with the user's conn"},{"name":"check_readability","description":"Check how easy a page is to read, against the right target. A product page should read differently from documentation, so the target depends on the page type (g"},{"name":"check_og_tags","description":"Check how a page looks when it is shared on Facebook, LinkedIn, X, WhatsApp, Slack or iMessage: every Open Graph and Twitter Card tag, and the share image itsel"}],"toolCount":70,"toolsHash":"15fd440274c91445697c2666abaaec69c5bea00673f97b53b66a5090dee4f3af","serverName":"onpage-dev","capabilities":["tools","prompts","resources"],"serverVersion":"1.4.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-11T02:23:25.157Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":19,"error":null,"detail":{"tools":[{"name":"scan_page","description":"Scan one public web page for SEO and AI visibility. Returns a 0-100 score, the issues to fix first with why and how, AI readiness, and the key facts (title, des"},{"name":"check_ai_visibility","description":"Check whether ChatGPT, Claude, Perplexity, Gemini and other AI crawlers may read a page (robots.txt per bot), whether llms.txt exists, how ready and citable the"},{"name":"check_focus_keyword","description":"Check how well a page targets one search term: title, meta description, H1, URL, first 100 words, subheadings, image alt texts and keyword density (flags stuffi"},{"name":"get_fix_pack","description":"Use after a scan to get the fixes as code. Set platform to how the user ships: html (default), wordpress, git for a pull request, or cloudflare for an edge Work"},{"name":"check_web_vitals","description":"Get Core Web Vitals from real Chrome users (the Chrome UX Report, the field data Google uses for ranking): LCP, INP, CLS, FCP and TTFB at the 75th percentile, o"},{"name":"analyze_logs","description":"Analyse server access log lines to see what Googlebot, Bingbot and AI crawlers (GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-User, PerplexityBot, Appl"},{"name":"submit_indexnow","description":"Submit changed URLs to IndexNow, so Bing, Yandex, Naver, Seznam and Yep recrawl them within minutes instead of days. Call it after a fix is live. The first time"},{"name":"check_accessibility","description":"Check a page against WCAG 2.1 level AA, the standard behind the European Accessibility Act (EN 301 549): page language, text alternatives, form labels, link and"},{"name":"check_answer_format","description":"For a question people search (a featured snippet or a People Also Ask question), find the section that answers it on the pages that rank and on your page, and c"},{"name":"check_consent","description":"Quick check of the cookie banner setup from the HTML. To see what GA4 really sends before and after accepting, use check_ga4_tracking. Check a page's cookie con"},{"name":"check_product_page","description":"Check an ecommerce product page for Google: Product structured data with name, image, price, currency and availability, identifiers (SKU, GTIN, MPN, brand), shi"},{"name":"map_topics","description":"Group a site's search queries into topic clusters and map them to pages: which page owns each topic, where several pages compete for the same topic, which topic"},{"name":"check_question_coverage","description":"Check how well a page covers a topic the way AI search reads it. AI Mode and AI Overviews split a search into many sub-questions (a query fan-out) and pick a so"},{"name":"check_hreflang","description":"Check the hreflang setup of a multilingual page: valid language and region codes, x-default, the self-reference and duplicates, then each language version: does"},{"name":"check_trust_signals","description":"Check the trust signals Google and AI models look for across a site, not only on one page: an About page with real content, contact details (email, phone, addre"},{"name":"check_local_seo","description":"Check a local business site for Google Maps and local search: LocalBusiness markup (most specific type, address, phone, opening hours, geo coordinates), whether"},{"name":"map_link_equity","description":"Map how link authority flows through a site from a finished site audit: internal PageRank per page, click depth from the home page, links in and out. Finds page"},{"name":"check_ga4_tracking","description":"Use when GA4 numbers look wrong or consent may not reach GA4. For a quick check of the banner setup from the HTML, use check_consent. Debug Google Analytics 4 o"},{"name":"log_fix","description":"Record SEO fixes after they ship, so OnPage.dev keeps them honest: it checks about every 6 hours that each fix is still live (title, description, canonical, rob"},{"name":"get_fix_log","description":"Show a fix log: per fix whether it is still live, undone or changed since it shipped, with the restore code for every undone fix, the measured impact when measu"},{"name":"explain_index_status","description":"Use when pages are missing from Google: turns Search Console URL Inspection results (or rows from the Pages report: URL plus reason) into causes, fixes and the "},{"name":"build_edge_rules","description":"Use when the same SEO problem repeats across a section of a site (all product pages, all blog posts) and the CMS or templates are hard to change: from a finishe"},{"name":"get_prerender_worker","description":"Use when a site is built in the browser (React, Vue, Angular) and AI crawlers such as GPTBot, ClaudeBot and PerplexityBot, which do not run JavaScript, see an e"},{"name":"diagnose_traffic_drop","description":"Use when organic traffic dropped: fetch two periods of equal length from the user's Search Console (before and after the drop), per page or per page and query, "},{"name":"find_ctr_gaps","description":"Use to find quick wins without ranking changes: from the user's Search Console rows (page, or page and query, with impressions, clicks or CTR and position), fin"},{"name":"find_striking_distance","description":"Use to find the fastest ranking wins: from the user's Search Console rows by query and page, finds queries ranking at positions 8 to 20 with real impressions, g"},{"name":"check_vitals_trend","description":"Use to see whether speed changed for real users and since when, for example after a performance fix: Core Web Vitals (LCP, INP, CLS, FCP, TTFB) at the 75th perc"},{"name":"measure_ai_citations","description":"Use to prove AI visibility gains: pass how often AI assistants cited each page before and after the fixes (from Ahrefs Brand Radar or another AI-visibility tool"},{"name":"check_sitemap","description":"Use to check a site's XML sitemap the way Google reads it: finds it through robots.txt or the usual locations, follows a sitemap index, and checks the format, t"},{"name":"extract_from_pages","description":"Use to check a template change or a data point across many pages at once, like custom extraction in a crawler: give up to 20 URLs and one of a CSS selector (wit"},{"name":"find_duplicate_content","description":"Use to find pages that say almost the same thing, which compete with each other and make Google pick one: groups the pages of a finished site audit by text simi"},{"name":"check_url_parameters","description":"Use when a site has filter, sort, tracking or search URLs that waste crawl budget or create duplicates: classifies every query parameter found in a site audit's"},{"name":"create_dashboard_feed","description":"Use when the user wants an SEO dashboard or client report that stays up to date: OnPage.dev then checks the site's key pages every day and keeps the history (sc"},{"name":"get_dashboard_data","description":"Use to fill an SEO dashboard or report from a feed made with create_dashboard_feed: returns one dataset as a clean table with a date column (YYYY-MM-DD) and ful"},{"name":"build_seo_dashboard","description":"Use when the user wants a live SEO dashboard in Claude (Claude Dashboards or an artifact): returns a complete blueprint that combines a realtime block from the "},{"name":"scan_html","description":"Scan raw HTML that is not published yet, for example a local build, a template or a draft from your editor. Returns the same score, fixes and AI readiness as sc"},{"name":"rescan_and_compare","description":"Scan a live page again and compare it with the previous scan of that page: score change, issues fixed, new issues and AI readiness change. Use this after deploy"},{"name":"check_snippet","description":"Estimate how a title and meta description show in Google: pixel width against the cut-off on desktop and mobile, and the truncated text a searcher would see. No"},{"name":"generate_schema","description":"Writes validated JSON-LD for Article, Product, FAQPage, Organization or BreadcrumbList. For LocalBusiness use check_local_seo; to check JSON-LD you wrote yourse"},{"name":"find_answer_passages","description":"Find the passages on a page that best answer a given question, the way AI answer engines pick text to quote. Returns the top passages with their heading, word c"},{"name":"generate_llms_txt","description":"Build a ready-to-upload llms.txt for a site from its sitemap and home page: site name, summary and the main pages grouped by section. Upload the result to the r"},{"name":"ai_crawler_policy","description":"Write robots.txt rules for AI crawlers based on a policy, and merge them into the site's current robots.txt. Policies: allow_all, search_only (allow AI search a"},{"name":"deep_audit","description":"One page, every measurement by section: use it when scan_page is not detailed enough. For a whole site use start_site_audit. Everything OnPage.dev measures on a"},{"name":"check_urls","description":"Check up to 20 URLs at once: final status code, the full redirect chain and where each one ends up. Built for site migrations, broken link sweeps and launch che"},{"name":"test_robots","description":"Test a URL against the site's live robots.txt for one or more crawlers, using Google's matching rules (most specific user-agent group, longest matching rule, Al"},{"name":"validate_schema","description":"Validate JSON-LD you wrote before you publish it: JSON syntax, @context and @type, absolute URLs, ISO dates, and Google's required and recommended fields per ri"},{"name":"compare_html","description":"Compare two versions of a page's HTML, for example before and after a code change, and report what got better or worse for SEO: score, issues fixed and introduc"},{"name":"start_site_audit","description":"Start an SEO audit of a whole site (up to 25 pages from the sitemap, or from the home page links when there is no sitemap). Returns an audit_id and the first pr"},{"name":"get_site_audit","description":"Continue a site audit started with start_site_audit: each call scans the next pages and reports progress. Keep calling until status is complete, then you get th"},{"name":"suggest_internal_links","description":"Suggest which existing pages should link to a target page, with anchor text, based on a completed site audit. The target can be a page from the audit or a new p"},{"name":"compare_pages","description":"Compare a page with up to 3 competitor pages that rank for the same search: score, AI readiness, words, headings, rich results, speed and more side by side, plu"},{"name":"prioritize_fixes","description":"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 reve"},{"name":"check_entity_graph","description":"Check how a page's structured data describes who and what it is about, the way AI knowledge graphs read it: which entities there are (Organization, Person, Arti"},{"name":"validate_llms_txt","description":"Validate a site's llms.txt against the llmstxt.org format: served as text (not an HTML page), one H1 with the site name, a > summary, ## sections with [name](ur"},{"name":"compare_ai_citations","description":"Compare the pages AI assistants cite with the ones they skip, using citation counts from the user's connected tools. Before calling, check your available tools:"},{"name":"watch_page","description":"Start watching a page. OnPage.dev rescans it about once a day and records what changed for search and AI: the page going down or redirecting, a new noindex, AI "},{"name":"get_watch","description":"Read a watch created with watch_page: the latest snapshot, when it was last checked and every change found so far, newest first."},{"name":"unwatch","description":"Stop a watch created with watch_page and delete its history."},{"name":"create_content_brief","description":"Build a writing brief for a search term from the pages that rank for it. Get the competitor URLs from your own search tool, Ahrefs, Semrush or the user (1 to 3)"},{"name":"plan_redirects","description":"Match old URLs to new ones for a site migration or restructure and write the redirect rules. Give the old URLs (a list, or the old site's address while it is st"},{"name":"share_result","description":"Scan a page again and publish a shareable proof page on onpage.dev with the score before and after, the issues fixed and the ones still open. Useful after fixin"},{"name":"render_page","description":"Use to see what visitors and crawlers without JavaScript (GPTBot, ClaudeBot, PerplexityBot) get on the first screen. Load a page in a real browser on a phone (3"},{"name":"get_layout_probe","description":"Get a small JavaScript measurement script to run in your own browser tool (Claude in Chrome, Playwright, Puppeteer or similar). Run it on the page at each viewp"},{"name":"analyze_layout","description":"Analyse the results of the get_layout_probe script, measured in your own browser: the same checks as render_page (H1 and call to action position, pop-ups, tap t"},{"name":"screen_reader_view","description":"Show a page the way a screen reader announces it, from the browser's accessibility tree: landmarks, the heading outline, and the reading order of links, buttons"},{"name":"export_findings","description":"Turn a page scan or a finished site audit into an action plan the team can work from. Returns: rows for a spreadsheet plus a private CSV link that loads straigh"},{"name":"measure_impact","description":"Use to answer \"did our fixes win traffic?\" with before and after numbers. For the score change of one page use rescan_and_compare. Show whether SEO fixes paid o"},{"name":"match_intent","description":"Check whether a page matches what searchers want for a keyword, based on what actually ranks. Fetch the top organic results for the keyword with the user's conn"},{"name":"check_readability","description":"Check how easy a page is to read, against the right target. A product page should read differently from documentation, so the target depends on the page type (g"},{"name":"check_og_tags","description":"Check how a page looks when it is shared on Facebook, LinkedIn, X, WhatsApp, Slack or iMessage: every Open Graph and Twitter Card tag, and the share image itsel"}],"toolCount":70,"toolsHash":"15fd440274c91445697c2666abaaec69c5bea00673f97b53b66a5090dee4f3af","serverName":"onpage-dev","capabilities":["tools","prompts","resources"],"serverVersion":"1.4.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T20:26:56.824Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":27,"error":null,"detail":{"tools":[{"name":"scan_page","description":"Scan one public web page for SEO and AI visibility. Returns a 0-100 score, the issues to fix first with why and how, AI readiness, and the key facts (title, des"},{"name":"check_ai_visibility","description":"Check whether ChatGPT, Claude, Perplexity, Gemini and other AI crawlers may read a page (robots.txt per bot), whether llms.txt exists, how ready and citable the"},{"name":"check_focus_keyword","description":"Check how well a page targets one search term: title, meta description, H1, URL, first 100 words, subheadings, image alt texts and keyword density (flags stuffi"},{"name":"get_fix_pack","description":"Use after a scan to get the fixes as code. Set platform to how the user ships: html (default), wordpress, git for a pull request, or cloudflare for an edge Work"},{"name":"check_web_vitals","description":"Get Core Web Vitals from real Chrome users (the Chrome UX Report, the field data Google uses for ranking): LCP, INP, CLS, FCP and TTFB at the 75th percentile, o"},{"name":"analyze_logs","description":"Analyse server access log lines to see what Googlebot, Bingbot and AI crawlers (GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-User, PerplexityBot, Appl"},{"name":"submit_indexnow","description":"Submit changed URLs to IndexNow, so Bing, Yandex, Naver, Seznam and Yep recrawl them within minutes instead of days. Call it after a fix is live. The first time"},{"name":"check_accessibility","description":"Check a page against WCAG 2.1 level AA, the standard behind the European Accessibility Act (EN 301 549): page language, text alternatives, form labels, link and"},{"name":"check_answer_format","description":"For a question people search (a featured snippet or a People Also Ask question), find the section that answers it on the pages that rank and on your page, and c"},{"name":"check_consent","description":"Quick check of the cookie banner setup from the HTML. To see what GA4 really sends before and after accepting, use check_ga4_tracking. Check a page's cookie con"},{"name":"check_product_page","description":"Check an ecommerce product page for Google: Product structured data with name, image, price, currency and availability, identifiers (SKU, GTIN, MPN, brand), shi"},{"name":"map_topics","description":"Group a site's search queries into topic clusters and map them to pages: which page owns each topic, where several pages compete for the same topic, which topic"},{"name":"check_question_coverage","description":"Check how well a page covers a topic the way AI search reads it. AI Mode and AI Overviews split a search into many sub-questions (a query fan-out) and pick a so"},{"name":"check_hreflang","description":"Check the hreflang setup of a multilingual page: valid language and region codes, x-default, the self-reference and duplicates, then each language version: does"},{"name":"check_trust_signals","description":"Check the trust signals Google and AI models look for across a site, not only on one page: an About page with real content, contact details (email, phone, addre"},{"name":"check_local_seo","description":"Check a local business site for Google Maps and local search: LocalBusiness markup (most specific type, address, phone, opening hours, geo coordinates), whether"},{"name":"map_link_equity","description":"Map how link authority flows through a site from a finished site audit: internal PageRank per page, click depth from the home page, links in and out. Finds page"},{"name":"check_ga4_tracking","description":"Use when GA4 numbers look wrong or consent may not reach GA4. For a quick check of the banner setup from the HTML, use check_consent. Debug Google Analytics 4 o"},{"name":"log_fix","description":"Record SEO fixes after they ship, so OnPage.dev keeps them honest: it checks about every 6 hours that each fix is still live (title, description, canonical, rob"},{"name":"get_fix_log","description":"Show a fix log: per fix whether it is still live, undone or changed since it shipped, with the restore code for every undone fix, the measured impact when measu"},{"name":"explain_index_status","description":"Use when pages are missing from Google: turns Search Console URL Inspection results (or rows from the Pages report: URL plus reason) into causes, fixes and the "},{"name":"build_edge_rules","description":"Use when the same SEO problem repeats across a section of a site (all product pages, all blog posts) and the CMS or templates are hard to change: from a finishe"},{"name":"get_prerender_worker","description":"Use when a site is built in the browser (React, Vue, Angular) and AI crawlers such as GPTBot, ClaudeBot and PerplexityBot, which do not run JavaScript, see an e"},{"name":"diagnose_traffic_drop","description":"Use when organic traffic dropped: fetch two periods of equal length from the user's Search Console (before and after the drop), per page or per page and query, "},{"name":"find_ctr_gaps","description":"Use to find quick wins without ranking changes: from the user's Search Console rows (page, or page and query, with impressions, clicks or CTR and position), fin"},{"name":"find_striking_distance","description":"Use to find the fastest ranking wins: from the user's Search Console rows by query and page, finds queries ranking at positions 8 to 20 with real impressions, g"},{"name":"check_vitals_trend","description":"Use to see whether speed changed for real users and since when, for example after a performance fix: Core Web Vitals (LCP, INP, CLS, FCP, TTFB) at the 75th perc"},{"name":"measure_ai_citations","description":"Use to prove AI visibility gains: pass how often AI assistants cited each page before and after the fixes (from Ahrefs Brand Radar or another AI-visibility tool"},{"name":"check_sitemap","description":"Use to check a site's XML sitemap the way Google reads it: finds it through robots.txt or the usual locations, follows a sitemap index, and checks the format, t"},{"name":"extract_from_pages","description":"Use to check a template change or a data point across many pages at once, like custom extraction in a crawler: give up to 20 URLs and one of a CSS selector (wit"},{"name":"find_duplicate_content","description":"Use to find pages that say almost the same thing, which compete with each other and make Google pick one: groups the pages of a finished site audit by text simi"},{"name":"check_url_parameters","description":"Use when a site has filter, sort, tracking or search URLs that waste crawl budget or create duplicates: classifies every query parameter found in a site audit's"},{"name":"create_dashboard_feed","description":"Use when the user wants an SEO dashboard or client report that stays up to date: OnPage.dev then checks the site's key pages every day and keeps the history (sc"},{"name":"get_dashboard_data","description":"Use to fill an SEO dashboard or report from a feed made with create_dashboard_feed: returns one dataset as a clean table with a date column (YYYY-MM-DD) and ful"},{"name":"build_seo_dashboard","description":"Use when the user wants a live SEO dashboard in Claude (Claude Dashboards or an artifact): returns a complete blueprint that combines a realtime block from the "},{"name":"scan_html","description":"Scan raw HTML that is not published yet, for example a local build, a template or a draft from your editor. Returns the same score, fixes and AI readiness as sc"},{"name":"rescan_and_compare","description":"Scan a live page again and compare it with the previous scan of that page: score change, issues fixed, new issues and AI readiness change. Use this after deploy"},{"name":"check_snippet","description":"Estimate how a title and meta description show in Google: pixel width against the cut-off on desktop and mobile, and the truncated text a searcher would see. No"},{"name":"generate_schema","description":"Writes validated JSON-LD for Article, Product, FAQPage, Organization or BreadcrumbList. For LocalBusiness use check_local_seo; to check JSON-LD you wrote yourse"},{"name":"find_answer_passages","description":"Find the passages on a page that best answer a given question, the way AI answer engines pick text to quote. Returns the top passages with their heading, word c"},{"name":"generate_llms_txt","description":"Build a ready-to-upload llms.txt for a site from its sitemap and home page: site name, summary and the main pages grouped by section. Upload the result to the r"},{"name":"ai_crawler_policy","description":"Write robots.txt rules for AI crawlers based on a policy, and merge them into the site's current robots.txt. Policies: allow_all, search_only (allow AI search a"},{"name":"deep_audit","description":"One page, every measurement by section: use it when scan_page is not detailed enough. For a whole site use start_site_audit. Everything OnPage.dev measures on a"},{"name":"check_urls","description":"Check up to 20 URLs at once: final status code, the full redirect chain and where each one ends up. Built for site migrations, broken link sweeps and launch che"},{"name":"test_robots","description":"Test a URL against the site's live robots.txt for one or more crawlers, using Google's matching rules (most specific user-agent group, longest matching rule, Al"},{"name":"validate_schema","description":"Validate JSON-LD you wrote before you publish it: JSON syntax, @context and @type, absolute URLs, ISO dates, and Google's required and recommended fields per ri"},{"name":"compare_html","description":"Compare two versions of a page's HTML, for example before and after a code change, and report what got better or worse for SEO: score, issues fixed and introduc"},{"name":"start_site_audit","description":"Start an SEO audit of a whole site (up to 25 pages from the sitemap, or from the home page links when there is no sitemap). Returns an audit_id and the first pr"},{"name":"get_site_audit","description":"Continue a site audit started with start_site_audit: each call scans the next pages and reports progress. Keep calling until status is complete, then you get th"},{"name":"suggest_internal_links","description":"Suggest which existing pages should link to a target page, with anchor text, based on a completed site audit. The target can be a page from the audit or a new p"},{"name":"compare_pages","description":"Compare a page with up to 3 competitor pages that rank for the same search: score, AI readiness, words, headings, rich results, speed and more side by side, plu"},{"name":"prioritize_fixes","description":"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 reve"},{"name":"check_entity_graph","description":"Check how a page's structured data describes who and what it is about, the way AI knowledge graphs read it: which entities there are (Organization, Person, Arti"},{"name":"validate_llms_txt","description":"Validate a site's llms.txt against the llmstxt.org format: served as text (not an HTML page), one H1 with the site name, a > summary, ## sections with [name](ur"},{"name":"compare_ai_citations","description":"Compare the pages AI assistants cite with the ones they skip, using citation counts from the user's connected tools. Before calling, check your available tools:"},{"name":"watch_page","description":"Start watching a page. OnPage.dev rescans it about once a day and records what changed for search and AI: the page going down or redirecting, a new noindex, AI "},{"name":"get_watch","description":"Read a watch created with watch_page: the latest snapshot, when it was last checked and every change found so far, newest first."},{"name":"unwatch","description":"Stop a watch created with watch_page and delete its history."},{"name":"create_content_brief","description":"Build a writing brief for a search term from the pages that rank for it. Get the competitor URLs from your own search tool, Ahrefs, Semrush or the user (1 to 3)"},{"name":"plan_redirects","description":"Match old URLs to new ones for a site migration or restructure and write the redirect rules. Give the old URLs (a list, or the old site's address while it is st"},{"name":"share_result","description":"Scan a page again and publish a shareable proof page on onpage.dev with the score before and after, the issues fixed and the ones still open. Useful after fixin"},{"name":"render_page","description":"Use to see what visitors and crawlers without JavaScript (GPTBot, ClaudeBot, PerplexityBot) get on the first screen. Load a page in a real browser on a phone (3"},{"name":"get_layout_probe","description":"Get a small JavaScript measurement script to run in your own browser tool (Claude in Chrome, Playwright, Puppeteer or similar). Run it on the page at each viewp"},{"name":"analyze_layout","description":"Analyse the results of the get_layout_probe script, measured in your own browser: the same checks as render_page (H1 and call to action position, pop-ups, tap t"},{"name":"screen_reader_view","description":"Show a page the way a screen reader announces it, from the browser's accessibility tree: landmarks, the heading outline, and the reading order of links, buttons"},{"name":"export_findings","description":"Turn a page scan or a finished site audit into an action plan the team can work from. Returns: rows for a spreadsheet plus a private CSV link that loads straigh"},{"name":"measure_impact","description":"Use to answer \"did our fixes win traffic?\" with before and after numbers. For the score change of one page use rescan_and_compare. Show whether SEO fixes paid o"},{"name":"match_intent","description":"Check whether a page matches what searchers want for a keyword, based on what actually ranks. Fetch the top organic results for the keyword with the user's conn"},{"name":"check_readability","description":"Check how easy a page is to read, against the right target. A product page should read differently from documentation, so the target depends on the page type (g"},{"name":"check_og_tags","description":"Check how a page looks when it is shared on Facebook, LinkedIn, X, WhatsApp, Slack or iMessage: every Open Graph and Twitter Card tag, and the share image itsel"}],"toolCount":70,"toolsHash":"15fd440274c91445697c2666abaaec69c5bea00673f97b53b66a5090dee4f3af","serverName":"onpage-dev","capabilities":["tools","prompts","resources"],"serverVersion":"1.4.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T13:26:00.919Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":43,"error":null,"detail":{"tools":[{"name":"scan_page","description":"Scan one public web page for SEO and AI visibility. Returns a 0-100 score, the issues to fix first with why and how, AI readiness, and the key facts (title, des"},{"name":"check_ai_visibility","description":"Check whether ChatGPT, Claude, Perplexity, Gemini and other AI crawlers may read a page (robots.txt per bot), whether llms.txt exists, how ready and citable the"},{"name":"check_focus_keyword","description":"Check how well a page targets one search term: title, meta description, H1, URL, first 100 words, subheadings, image alt texts and keyword density (flags stuffi"},{"name":"get_fix_pack","description":"Use after a scan to get the fixes as code. Set platform to how the user ships: html (default), wordpress, git for a pull request, or cloudflare for an edge Work"},{"name":"check_web_vitals","description":"Get Core Web Vitals from real Chrome users (the Chrome UX Report, the field data Google uses for ranking): LCP, INP, CLS, FCP and TTFB at the 75th percentile, o"},{"name":"analyze_logs","description":"Analyse server access log lines to see what Googlebot, Bingbot and AI crawlers (GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-User, PerplexityBot, Appl"},{"name":"submit_indexnow","description":"Submit changed URLs to IndexNow, so Bing, Yandex, Naver, Seznam and Yep recrawl them within minutes instead of days. Call it after a fix is live. The first time"},{"name":"check_accessibility","description":"Check a page against WCAG 2.1 level AA, the standard behind the European Accessibility Act (EN 301 549): page language, text alternatives, form labels, link and"},{"name":"check_answer_format","description":"For a question people search (a featured snippet or a People Also Ask question), find the section that answers it on the pages that rank and on your page, and c"},{"name":"check_consent","description":"Quick check of the cookie banner setup from the HTML. To see what GA4 really sends before and after accepting, use check_ga4_tracking. Check a page's cookie con"},{"name":"check_product_page","description":"Check an ecommerce product page for Google: Product structured data with name, image, price, currency and availability, identifiers (SKU, GTIN, MPN, brand), shi"},{"name":"map_topics","description":"Group a site's search queries into topic clusters and map them to pages: which page owns each topic, where several pages compete for the same topic, which topic"},{"name":"check_question_coverage","description":"Check how well a page covers a topic the way AI search reads it. AI Mode and AI Overviews split a search into many sub-questions (a query fan-out) and pick a so"},{"name":"check_hreflang","description":"Check the hreflang setup of a multilingual page: valid language and region codes, x-default, the self-reference and duplicates, then each language version: does"},{"name":"check_trust_signals","description":"Check the trust signals Google and AI models look for across a site, not only on one page: an About page with real content, contact details (email, phone, addre"},{"name":"check_local_seo","description":"Check a local business site for Google Maps and local search: LocalBusiness markup (most specific type, address, phone, opening hours, geo coordinates), whether"},{"name":"map_link_equity","description":"Map how link authority flows through a site from a finished site audit: internal PageRank per page, click depth from the home page, links in and out. Finds page"},{"name":"check_ga4_tracking","description":"Use when GA4 numbers look wrong or consent may not reach GA4. For a quick check of the banner setup from the HTML, use check_consent. Debug Google Analytics 4 o"},{"name":"log_fix","description":"Record SEO fixes after they ship, so OnPage.dev keeps them honest: it checks about every 6 hours that each fix is still live (title, description, canonical, rob"},{"name":"get_fix_log","description":"Show a fix log: per fix whether it is still live, undone or changed since it shipped, with the restore code for every undone fix, the measured impact when measu"},{"name":"explain_index_status","description":"Use when pages are missing from Google: turns Search Console URL Inspection results (or rows from the Pages report: URL plus reason) into causes, fixes and the "},{"name":"build_edge_rules","description":"Use when the same SEO problem repeats across a section of a site (all product pages, all blog posts) and the CMS or templates are hard to change: from a finishe"},{"name":"get_prerender_worker","description":"Use when a site is built in the browser (React, Vue, Angular) and AI crawlers such as GPTBot, ClaudeBot and PerplexityBot, which do not run JavaScript, see an e"},{"name":"diagnose_traffic_drop","description":"Use when organic traffic dropped: fetch two periods of equal length from the user's Search Console (before and after the drop), per page or per page and query, "},{"name":"find_ctr_gaps","description":"Use to find quick wins without ranking changes: from the user's Search Console rows (page, or page and query, with impressions, clicks or CTR and position), fin"},{"name":"find_striking_distance","description":"Use to find the fastest ranking wins: from the user's Search Console rows by query and page, finds queries ranking at positions 8 to 20 with real impressions, g"},{"name":"check_vitals_trend","description":"Use to see whether speed changed for real users and since when, for example after a performance fix: Core Web Vitals (LCP, INP, CLS, FCP, TTFB) at the 75th perc"},{"name":"measure_ai_citations","description":"Use to prove AI visibility gains: pass how often AI assistants cited each page before and after the fixes (from Ahrefs Brand Radar or another AI-visibility tool"},{"name":"check_sitemap","description":"Use to check a site's XML sitemap the way Google reads it: finds it through robots.txt or the usual locations, follows a sitemap index, and checks the format, t"},{"name":"extract_from_pages","description":"Use to check a template change or a data point across many pages at once, like custom extraction in a crawler: give up to 20 URLs and one of a CSS selector (wit"},{"name":"find_duplicate_content","description":"Use to find pages that say almost the same thing, which compete with each other and make Google pick one: groups the pages of a finished site audit by text simi"},{"name":"check_url_parameters","description":"Use when a site has filter, sort, tracking or search URLs that waste crawl budget or create duplicates: classifies every query parameter found in a site audit's"},{"name":"create_dashboard_feed","description":"Use when the user wants an SEO dashboard or client report that stays up to date: OnPage.dev then checks the site's key pages every day and keeps the history (sc"},{"name":"get_dashboard_data","description":"Use to fill an SEO dashboard or report from a feed made with create_dashboard_feed: returns one dataset as a clean table with a date column (YYYY-MM-DD) and ful"},{"name":"build_seo_dashboard","description":"Use when the user wants a live SEO dashboard in Claude (Claude Dashboards or an artifact): returns a complete blueprint that combines a realtime block from the "},{"name":"scan_html","description":"Scan raw HTML that is not published yet, for example a local build, a template or a draft from your editor. Returns the same score, fixes and AI readiness as sc"},{"name":"rescan_and_compare","description":"Scan a live page again and compare it with the previous scan of that page: score change, issues fixed, new issues and AI readiness change. Use this after deploy"},{"name":"check_snippet","description":"Estimate how a title and meta description show in Google: pixel width against the cut-off on desktop and mobile, and the truncated text a searcher would see. No"},{"name":"generate_schema","description":"Writes validated JSON-LD for Article, Product, FAQPage, Organization or BreadcrumbList. For LocalBusiness use check_local_seo; to check JSON-LD you wrote yourse"},{"name":"find_answer_passages","description":"Find the passages on a page that best answer a given question, the way AI answer engines pick text to quote. Returns the top passages with their heading, word c"},{"name":"generate_llms_txt","description":"Build a ready-to-upload llms.txt for a site from its sitemap and home page: site name, summary and the main pages grouped by section. Upload the result to the r"},{"name":"ai_crawler_policy","description":"Write robots.txt rules for AI crawlers based on a policy, and merge them into the site's current robots.txt. Policies: allow_all, search_only (allow AI search a"},{"name":"deep_audit","description":"One page, every measurement by section: use it when scan_page is not detailed enough. For a whole site use start_site_audit. Everything OnPage.dev measures on a"},{"name":"check_urls","description":"Check up to 20 URLs at once: final status code, the full redirect chain and where each one ends up. Built for site migrations, broken link sweeps and launch che"},{"name":"test_robots","description":"Test a URL against the site's live robots.txt for one or more crawlers, using Google's matching rules (most specific user-agent group, longest matching rule, Al"},{"name":"validate_schema","description":"Validate JSON-LD you wrote before you publish it: JSON syntax, @context and @type, absolute URLs, ISO dates, and Google's required and recommended fields per ri"},{"name":"compare_html","description":"Compare two versions of a page's HTML, for example before and after a code change, and report what got better or worse for SEO: score, issues fixed and introduc"},{"name":"start_site_audit","description":"Start an SEO audit of a whole site (up to 25 pages from the sitemap, or from the home page links when there is no sitemap). Returns an audit_id and the first pr"},{"name":"get_site_audit","description":"Continue a site audit started with start_site_audit: each call scans the next pages and reports progress. Keep calling until status is complete, then you get th"},{"name":"suggest_internal_links","description":"Suggest which existing pages should link to a target page, with anchor text, based on a completed site audit. The target can be a page from the audit or a new p"},{"name":"compare_pages","description":"Compare a page with up to 3 competitor pages that rank for the same search: score, AI readiness, words, headings, rich results, speed and more side by side, plu"},{"name":"prioritize_fixes","description":"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 reve"},{"name":"check_entity_graph","description":"Check how a page's structured data describes who and what it is about, the way AI knowledge graphs read it: which entities there are (Organization, Person, Arti"},{"name":"validate_llms_txt","description":"Validate a site's llms.txt against the llmstxt.org format: served as text (not an HTML page), one H1 with the site name, a > summary, ## sections with [name](ur"},{"name":"compare_ai_citations","description":"Compare the pages AI assistants cite with the ones they skip, using citation counts from the user's connected tools. Before calling, check your available tools:"},{"name":"watch_page","description":"Start watching a page. OnPage.dev rescans it about once a day and records what changed for search and AI: the page going down or redirecting, a new noindex, AI "},{"name":"get_watch","description":"Read a watch created with watch_page: the latest snapshot, when it was last checked and every change found so far, newest first."},{"name":"unwatch","description":"Stop a watch created with watch_page and delete its history."},{"name":"create_content_brief","description":"Build a writing brief for a search term from the pages that rank for it. Get the competitor URLs from your own search tool, Ahrefs, Semrush or the user (1 to 3)"},{"name":"plan_redirects","description":"Match old URLs to new ones for a site migration or restructure and write the redirect rules. Give the old URLs (a list, or the old site's address while it is st"},{"name":"share_result","description":"Scan a page again and publish a shareable proof page on onpage.dev with the score before and after, the issues fixed and the ones still open. Useful after fixin"},{"name":"render_page","description":"Use to see what visitors and crawlers without JavaScript (GPTBot, ClaudeBot, PerplexityBot) get on the first screen. Load a page in a real browser on a phone (3"},{"name":"get_layout_probe","description":"Get a small JavaScript measurement script to run in your own browser tool (Claude in Chrome, Playwright, Puppeteer or similar). Run it on the page at each viewp"},{"name":"analyze_layout","description":"Analyse the results of the get_layout_probe script, measured in your own browser: the same checks as render_page (H1 and call to action position, pop-ups, tap t"},{"name":"screen_reader_view","description":"Show a page the way a screen reader announces it, from the browser's accessibility tree: landmarks, the heading outline, and the reading order of links, buttons"},{"name":"export_findings","description":"Turn a page scan or a finished site audit into an action plan the team can work from. Returns: rows for a spreadsheet plus a private CSV link that loads straigh"},{"name":"measure_impact","description":"Use to answer \"did our fixes win traffic?\" with before and after numbers. For the score change of one page use rescan_and_compare. Show whether SEO fixes paid o"},{"name":"match_intent","description":"Check whether a page matches what searchers want for a keyword, based on what actually ranks. Fetch the top organic results for the keyword with the user's conn"},{"name":"check_readability","description":"Check how easy a page is to read, against the right target. A product page should read differently from documentation, so the target depends on the page type (g"},{"name":"check_og_tags","description":"Check how a page looks when it is shared on Facebook, LinkedIn, X, WhatsApp, Slack or iMessage: every Open Graph and Twitter Card tag, and the share image itsel"}],"toolCount":70,"toolsHash":"15fd440274c91445697c2666abaaec69c5bea00673f97b53b66a5090dee4f3af","serverName":"onpage-dev","capabilities":["tools","prompts","resources"],"serverVersion":"1.4.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T07:24:13.505Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":18,"error":null,"detail":{"tools":[{"name":"scan_page","description":"Scan one public web page for SEO and AI visibility. Returns a 0-100 score, the issues to fix first with why and how, AI readiness, and the key facts (title, des"},{"name":"check_ai_visibility","description":"Check whether ChatGPT, Claude, Perplexity, Gemini and other AI crawlers may read a page (robots.txt per bot), whether llms.txt exists, how ready and citable the"},{"name":"check_focus_keyword","description":"Check how well a page targets one search term: title, meta description, H1, URL, first 100 words, subheadings, image alt texts and keyword density (flags stuffi"},{"name":"get_fix_pack","description":"Use after a scan to get the fixes as code. Set platform to how the user ships: html (default), wordpress, git for a pull request, or cloudflare for an edge Work"},{"name":"check_web_vitals","description":"Get Core Web Vitals from real Chrome users (the Chrome UX Report, the field data Google uses for ranking): LCP, INP, CLS, FCP and TTFB at the 75th percentile, o"},{"name":"analyze_logs","description":"Analyse server access log lines to see what Googlebot, Bingbot and AI crawlers (GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-User, PerplexityBot, Appl"},{"name":"submit_indexnow","description":"Submit changed URLs to IndexNow, so Bing, Yandex, Naver, Seznam and Yep recrawl them within minutes instead of days. Call it after a fix is live. The first time"},{"name":"check_accessibility","description":"Check a page against WCAG 2.1 level AA, the standard behind the European Accessibility Act (EN 301 549): page language, text alternatives, form labels, link and"},{"name":"check_answer_format","description":"For a question people search (a featured snippet or a People Also Ask question), find the section that answers it on the pages that rank and on your page, and c"},{"name":"check_consent","description":"Quick check of the cookie banner setup from the HTML. To see what GA4 really sends before and after accepting, use check_ga4_tracking. Check a page's cookie con"},{"name":"check_product_page","description":"Check an ecommerce product page for Google: Product structured data with name, image, price, currency and availability, identifiers (SKU, GTIN, MPN, brand), shi"},{"name":"map_topics","description":"Group a site's search queries into topic clusters and map them to pages: which page owns each topic, where several pages compete for the same topic, which topic"},{"name":"check_question_coverage","description":"Check how well a page covers a topic the way AI search reads it. AI Mode and AI Overviews split a search into many sub-questions (a query fan-out) and pick a so"},{"name":"check_hreflang","description":"Check the hreflang setup of a multilingual page: valid language and region codes, x-default, the self-reference and duplicates, then each language version: does"},{"name":"check_trust_signals","description":"Check the trust signals Google and AI models look for across a site, not only on one page: an About page with real content, contact details (email, phone, addre"},{"name":"check_local_seo","description":"Check a local business site for Google Maps and local search: LocalBusiness markup (most specific type, address, phone, opening hours, geo coordinates), whether"},{"name":"map_link_equity","description":"Map how link authority flows through a site from a finished site audit: internal PageRank per page, click depth from the home page, links in and out. Finds page"},{"name":"check_ga4_tracking","description":"Use when GA4 numbers look wrong or consent may not reach GA4. For a quick check of the banner setup from the HTML, use check_consent. Debug Google Analytics 4 o"},{"name":"log_fix","description":"Record SEO fixes after they ship, so OnPage.dev keeps them honest: it checks about every 6 hours that each fix is still live (title, description, canonical, rob"},{"name":"get_fix_log","description":"Show a fix log: per fix whether it is still live, undone or changed since it shipped, with the restore code for every undone fix, the measured impact when measu"},{"name":"explain_index_status","description":"Use when pages are missing from Google: turns Search Console URL Inspection results (or rows from the Pages report: URL plus reason) into causes, fixes and the "},{"name":"build_edge_rules","description":"Use when the same SEO problem repeats across a section of a site (all product pages, all blog posts) and the CMS or templates are hard to change: from a finishe"},{"name":"get_prerender_worker","description":"Use when a site is built in the browser (React, Vue, Angular) and AI crawlers such as GPTBot, ClaudeBot and PerplexityBot, which do not run JavaScript, see an e"},{"name":"diagnose_traffic_drop","description":"Use when organic traffic dropped: fetch two periods of equal length from the user's Search Console (before and after the drop), per page or per page and query, "},{"name":"find_ctr_gaps","description":"Use to find quick wins without ranking changes: from the user's Search Console rows (page, or page and query, with impressions, clicks or CTR and position), fin"},{"name":"find_striking_distance","description":"Use to find the fastest ranking wins: from the user's Search Console rows by query and page, finds queries ranking at positions 8 to 20 with real impressions, g"},{"name":"check_vitals_trend","description":"Use to see whether speed changed for real users and since when, for example after a performance fix: Core Web Vitals (LCP, INP, CLS, FCP, TTFB) at the 75th perc"},{"name":"measure_ai_citations","description":"Use to prove AI visibility gains: pass how often AI assistants cited each page before and after the fixes (from Ahrefs Brand Radar or another AI-visibility tool"},{"name":"check_sitemap","description":"Use to check a site's XML sitemap the way Google reads it: finds it through robots.txt or the usual locations, follows a sitemap index, and checks the format, t"},{"name":"extract_from_pages","description":"Use to check a template change or a data point across many pages at once, like custom extraction in a crawler: give up to 20 URLs and one of a CSS selector (wit"},{"name":"find_duplicate_content","description":"Use to find pages that say almost the same thing, which compete with each other and make Google pick one: groups the pages of a finished site audit by text simi"},{"name":"check_url_parameters","description":"Use when a site has filter, sort, tracking or search URLs that waste crawl budget or create duplicates: classifies every query parameter found in a site audit's"},{"name":"create_dashboard_feed","description":"Use when the user wants an SEO dashboard or client report that stays up to date: OnPage.dev then checks the site's key pages every day and keeps the history (sc"},{"name":"get_dashboard_data","description":"Use to fill an SEO dashboard or report from a feed made with create_dashboard_feed: returns one dataset as a clean table with a date column (YYYY-MM-DD) and ful"},{"name":"build_seo_dashboard","description":"Use when the user wants a live SEO dashboard in Claude (Claude Dashboards or an artifact): returns a complete blueprint that combines a realtime block from the "},{"name":"scan_html","description":"Scan raw HTML that is not published yet, for example a local build, a template or a draft from your editor. Returns the same score, fixes and AI readiness as sc"},{"name":"rescan_and_compare","description":"Scan a live page again and compare it with the previous scan of that page: score change, issues fixed, new issues and AI readiness change. Use this after deploy"},{"name":"check_snippet","description":"Estimate how a title and meta description show in Google: pixel width against the cut-off on desktop and mobile, and the truncated text a searcher would see. No"},{"name":"generate_schema","description":"Writes validated JSON-LD for Article, Product, FAQPage, Organization or BreadcrumbList. For LocalBusiness use check_local_seo; to check JSON-LD you wrote yourse"},{"name":"find_answer_passages","description":"Find the passages on a page that best answer a given question, the way AI answer engines pick text to quote. Returns the top passages with their heading, word c"},{"name":"generate_llms_txt","description":"Build a ready-to-upload llms.txt for a site from its sitemap and home page: site name, summary and the main pages grouped by section. Upload the result to the r"},{"name":"ai_crawler_policy","description":"Write robots.txt rules for AI crawlers based on a policy, and merge them into the site's current robots.txt. Policies: allow_all, search_only (allow AI search a"},{"name":"deep_audit","description":"One page, every measurement by section: use it when scan_page is not detailed enough. For a whole site use start_site_audit. Everything OnPage.dev measures on a"},{"name":"check_urls","description":"Check up to 20 URLs at once: final status code, the full redirect chain and where each one ends up. Built for site migrations, broken link sweeps and launch che"},{"name":"test_robots","description":"Test a URL against the site's live robots.txt for one or more crawlers, using Google's matching rules (most specific user-agent group, longest matching rule, Al"},{"name":"validate_schema","description":"Validate JSON-LD you wrote before you publish it: JSON syntax, @context and @type, absolute URLs, ISO dates, and Google's required and recommended fields per ri"},{"name":"compare_html","description":"Compare two versions of a page's HTML, for example before and after a code change, and report what got better or worse for SEO: score, issues fixed and introduc"},{"name":"start_site_audit","description":"Start an SEO audit of a whole site (up to 25 pages from the sitemap, or from the home page links when there is no sitemap). Returns an audit_id and the first pr"},{"name":"get_site_audit","description":"Continue a site audit started with start_site_audit: each call scans the next pages and reports progress. Keep calling until status is complete, then you get th"},{"name":"suggest_internal_links","description":"Suggest which existing pages should link to a target page, with anchor text, based on a completed site audit. The target can be a page from the audit or a new p"},{"name":"compare_pages","description":"Compare a page with up to 3 competitor pages that rank for the same search: score, AI readiness, words, headings, rich results, speed and more side by side, plu"},{"name":"prioritize_fixes","description":"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 reve"},{"name":"check_entity_graph","description":"Check how a page's structured data describes who and what it is about, the way AI knowledge graphs read it: which entities there are (Organization, Person, Arti"},{"name":"validate_llms_txt","description":"Validate a site's llms.txt against the llmstxt.org format: served as text (not an HTML page), one H1 with the site name, a > summary, ## sections with [name](ur"},{"name":"compare_ai_citations","description":"Compare the pages AI assistants cite with the ones they skip, using citation counts from the user's connected tools. Before calling, check your available tools:"},{"name":"watch_page","description":"Start watching a page. OnPage.dev rescans it about once a day and records what changed for search and AI: the page going down or redirecting, a new noindex, AI "},{"name":"get_watch","description":"Read a watch created with watch_page: the latest snapshot, when it was last checked and every change found so far, newest first."},{"name":"unwatch","description":"Stop a watch created with watch_page and delete its history."},{"name":"create_content_brief","description":"Build a writing brief for a search term from the pages that rank for it. Get the competitor URLs from your own search tool, Ahrefs, Semrush or the user (1 to 3)"},{"name":"plan_redirects","description":"Match old URLs to new ones for a site migration or restructure and write the redirect rules. Give the old URLs (a list, or the old site's address while it is st"},{"name":"share_result","description":"Scan a page again and publish a shareable proof page on onpage.dev with the score before and after, the issues fixed and the ones still open. Useful after fixin"},{"name":"render_page","description":"Use to see what visitors and crawlers without JavaScript (GPTBot, ClaudeBot, PerplexityBot) get on the first screen. Load a page in a real browser on a phone (3"},{"name":"get_layout_probe","description":"Get a small JavaScript measurement script to run in your own browser tool (Claude in Chrome, Playwright, Puppeteer or similar). Run it on the page at each viewp"},{"name":"analyze_layout","description":"Analyse the results of the get_layout_probe script, measured in your own browser: the same checks as render_page (H1 and call to action position, pop-ups, tap t"},{"name":"screen_reader_view","description":"Show a page the way a screen reader announces it, from the browser's accessibility tree: landmarks, the heading outline, and the reading order of links, buttons"},{"name":"export_findings","description":"Turn a page scan or a finished site audit into an action plan the team can work from. Returns: rows for a spreadsheet plus a private CSV link that loads straigh"},{"name":"measure_impact","description":"Use to answer \"did our fixes win traffic?\" with before and after numbers. For the score change of one page use rescan_and_compare. Show whether SEO fixes paid o"},{"name":"match_intent","description":"Check whether a page matches what searchers want for a keyword, based on what actually ranks. Fetch the top organic results for the keyword with the user's conn"},{"name":"check_readability","description":"Check how easy a page is to read, against the right target. A product page should read differently from documentation, so the target depends on the page type (g"},{"name":"check_og_tags","description":"Check how a page looks when it is shared on Facebook, LinkedIn, X, WhatsApp, Slack or iMessage: every Open Graph and Twitter Card tag, and the share image itsel"}],"toolCount":70,"toolsHash":"15fd440274c91445697c2666abaaec69c5bea00673f97b53b66a5090dee4f3af","serverName":"onpage-dev","capabilities":["tools","prompts","resources"],"serverVersion":"1.4.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T00:28:20.751Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":15,"error":null,"detail":{"tools":[{"name":"scan_page","description":"Scan one public web page for SEO and AI visibility. Returns a 0-100 score, the issues to fix first with why and how, AI readiness, and the key facts (title, des"},{"name":"check_ai_visibility","description":"Check whether ChatGPT, Claude, Perplexity, Gemini and other AI crawlers may read a page (robots.txt per bot), whether llms.txt exists, how ready and citable the"},{"name":"check_focus_keyword","description":"Check how well a page targets one search term: title, meta description, H1, URL, first 100 words, subheadings, image alt texts and keyword density (flags stuffi"},{"name":"get_fix_pack","description":"Use after a scan to get the fixes as code. Set platform to how the user ships: html (default), wordpress, git for a pull request, or cloudflare for an edge Work"},{"name":"check_web_vitals","description":"Get Core Web Vitals from real Chrome users (the Chrome UX Report, the field data Google uses for ranking): LCP, INP, CLS, FCP and TTFB at the 75th percentile, o"},{"name":"analyze_logs","description":"Analyse server access log lines to see what Googlebot, Bingbot and AI crawlers (GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-User, PerplexityBot, Appl"},{"name":"submit_indexnow","description":"Submit changed URLs to IndexNow, so Bing, Yandex, Naver, Seznam and Yep recrawl them within minutes instead of days. Call it after a fix is live. The first time"},{"name":"check_accessibility","description":"Check a page against WCAG 2.1 level AA, the standard behind the European Accessibility Act (EN 301 549): page language, text alternatives, form labels, link and"},{"name":"check_answer_format","description":"For a question people search (a featured snippet or a People Also Ask question), find the section that answers it on the pages that rank and on your page, and c"},{"name":"check_consent","description":"Quick check of the cookie banner setup from the HTML. To see what GA4 really sends before and after accepting, use check_ga4_tracking. Check a page's cookie con"},{"name":"check_product_page","description":"Check an ecommerce product page for Google: Product structured data with name, image, price, currency and availability, identifiers (SKU, GTIN, MPN, brand), shi"},{"name":"map_topics","description":"Group a site's search queries into topic clusters and map them to pages: which page owns each topic, where several pages compete for the same topic, which topic"},{"name":"check_question_coverage","description":"Check how well a page covers a topic the way AI search reads it. AI Mode and AI Overviews split a search into many sub-questions (a query fan-out) and pick a so"},{"name":"check_hreflang","description":"Check the hreflang setup of a multilingual page: valid language and region codes, x-default, the self-reference and duplicates, then each language version: does"},{"name":"check_trust_signals","description":"Check the trust signals Google and AI models look for across a site, not only on one page: an About page with real content, contact details (email, phone, addre"},{"name":"check_local_seo","description":"Check a local business site for Google Maps and local search: LocalBusiness markup (most specific type, address, phone, opening hours, geo coordinates), whether"},{"name":"map_link_equity","description":"Map how link authority flows through a site from a finished site audit: internal PageRank per page, click depth from the home page, links in and out. Finds page"},{"name":"check_ga4_tracking","description":"Use when GA4 numbers look wrong or consent may not reach GA4. For a quick check of the banner setup from the HTML, use check_consent. Debug Google Analytics 4 o"},{"name":"log_fix","description":"Record SEO fixes after they ship, so OnPage.dev keeps them honest: it checks about every 6 hours that each fix is still live (title, description, canonical, rob"},{"name":"get_fix_log","description":"Show a fix log: per fix whether it is still live, undone or changed since it shipped, with the restore code for every undone fix, the measured impact when measu"},{"name":"explain_index_status","description":"Use when pages are missing from Google: turns Search Console URL Inspection results (or rows from the Pages report: URL plus reason) into causes, fixes and the "},{"name":"build_edge_rules","description":"Use when the same SEO problem repeats across a section of a site (all product pages, all blog posts) and the CMS or templates are hard to change: from a finishe"},{"name":"get_prerender_worker","description":"Use when a site is built in the browser (React, Vue, Angular) and AI crawlers such as GPTBot, ClaudeBot and PerplexityBot, which do not run JavaScript, see an e"},{"name":"diagnose_traffic_drop","description":"Use when organic traffic dropped: fetch two periods of equal length from the user's Search Console (before and after the drop), per page or per page and query, "},{"name":"find_ctr_gaps","description":"Use to find quick wins without ranking changes: from the user's Search Console rows (page, or page and query, with impressions, clicks or CTR and position), fin"},{"name":"find_striking_distance","description":"Use to find the fastest ranking wins: from the user's Search Console rows by query and page, finds queries ranking at positions 8 to 20 with real impressions, g"},{"name":"check_vitals_trend","description":"Use to see whether speed changed for real users and since when, for example after a performance fix: Core Web Vitals (LCP, INP, CLS, FCP, TTFB) at the 75th perc"},{"name":"measure_ai_citations","description":"Use to prove AI visibility gains: pass how often AI assistants cited each page before and after the fixes (from Ahrefs Brand Radar or another AI-visibility tool"},{"name":"check_sitemap","description":"Use to check a site's XML sitemap the way Google reads it: finds it through robots.txt or the usual locations, follows a sitemap index, and checks the format, t"},{"name":"extract_from_pages","description":"Use to check a template change or a data point across many pages at once, like custom extraction in a crawler: give up to 20 URLs and one of a CSS selector (wit"},{"name":"find_duplicate_content","description":"Use to find pages that say almost the same thing, which compete with each other and make Google pick one: groups the pages of a finished site audit by text simi"},{"name":"check_url_parameters","description":"Use when a site has filter, sort, tracking or search URLs that waste crawl budget or create duplicates: classifies every query parameter found in a site audit's"},{"name":"create_dashboard_feed","description":"Use when the user wants an SEO dashboard or client report that stays up to date: OnPage.dev then checks the site's key pages every day and keeps the history (sc"},{"name":"get_dashboard_data","description":"Use to fill an SEO dashboard or report from a feed made with create_dashboard_feed: returns one dataset as a clean table with a date column (YYYY-MM-DD) and ful"},{"name":"build_seo_dashboard","description":"Use when the user wants a live SEO dashboard in Claude (Claude Dashboards or an artifact): returns a complete blueprint that combines a realtime block from the "},{"name":"scan_html","description":"Scan raw HTML that is not published yet, for example a local build, a template or a draft from your editor. Returns the same score, fixes and AI readiness as sc"},{"name":"rescan_and_compare","description":"Scan a live page again and compare it with the previous scan of that page: score change, issues fixed, new issues and AI readiness change. Use this after deploy"},{"name":"check_snippet","description":"Estimate how a title and meta description show in Google: pixel width against the cut-off on desktop and mobile, and the truncated text a searcher would see. No"},{"name":"generate_schema","description":"Writes validated JSON-LD for Article, Product, FAQPage, Organization or BreadcrumbList. For LocalBusiness use check_local_seo; to check JSON-LD you wrote yourse"},{"name":"find_answer_passages","description":"Find the passages on a page that best answer a given question, the way AI answer engines pick text to quote. Returns the top passages with their heading, word c"},{"name":"generate_llms_txt","description":"Build a ready-to-upload llms.txt for a site from its sitemap and home page: site name, summary and the main pages grouped by section. Upload the result to the r"},{"name":"ai_crawler_policy","description":"Write robots.txt rules for AI crawlers based on a policy, and merge them into the site's current robots.txt. Policies: allow_all, search_only (allow AI search a"},{"name":"deep_audit","description":"One page, every measurement by section: use it when scan_page is not detailed enough. For a whole site use start_site_audit. Everything OnPage.dev measures on a"},{"name":"check_urls","description":"Check up to 20 URLs at once: final status code, the full redirect chain and where each one ends up. Built for site migrations, broken link sweeps and launch che"},{"name":"test_robots","description":"Test a URL against the site's live robots.txt for one or more crawlers, using Google's matching rules (most specific user-agent group, longest matching rule, Al"},{"name":"validate_schema","description":"Validate JSON-LD you wrote before you publish it: JSON syntax, @context and @type, absolute URLs, ISO dates, and Google's required and recommended fields per ri"},{"name":"compare_html","description":"Compare two versions of a page's HTML, for example before and after a code change, and report what got better or worse for SEO: score, issues fixed and introduc"},{"name":"start_site_audit","description":"Start an SEO audit of a whole site (up to 25 pages from the sitemap, or from the home page links when there is no sitemap). Returns an audit_id and the first pr"},{"name":"get_site_audit","description":"Continue a site audit started with start_site_audit: each call scans the next pages and reports progress. Keep calling until status is complete, then you get th"},{"name":"suggest_internal_links","description":"Suggest which existing pages should link to a target page, with anchor text, based on a completed site audit. The target can be a page from the audit or a new p"},{"name":"compare_pages","description":"Compare a page with up to 3 competitor pages that rank for the same search: score, AI readiness, words, headings, rich results, speed and more side by side, plu"},{"name":"prioritize_fixes","description":"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 reve"},{"name":"check_entity_graph","description":"Check how a page's structured data describes who and what it is about, the way AI knowledge graphs read it: which entities there are (Organization, Person, Arti"},{"name":"validate_llms_txt","description":"Validate a site's llms.txt against the llmstxt.org format: served as text (not an HTML page), one H1 with the site name, a > summary, ## sections with [name](ur"},{"name":"compare_ai_citations","description":"Compare the pages AI assistants cite with the ones they skip, using citation counts from the user's connected tools. Before calling, check your available tools:"},{"name":"watch_page","description":"Start watching a page. OnPage.dev rescans it about once a day and records what changed for search and AI: the page going down or redirecting, a new noindex, AI "},{"name":"get_watch","description":"Read a watch created with watch_page: the latest snapshot, when it was last checked and every change found so far, newest first."},{"name":"unwatch","description":"Stop a watch created with watch_page and delete its history."},{"name":"create_content_brief","description":"Build a writing brief for a search term from the pages that rank for it. Get the competitor URLs from your own search tool, Ahrefs, Semrush or the user (1 to 3)"},{"name":"plan_redirects","description":"Match old URLs to new ones for a site migration or restructure and write the redirect rules. Give the old URLs (a list, or the old site's address while it is st"},{"name":"share_result","description":"Scan a page again and publish a shareable proof page on onpage.dev with the score before and after, the issues fixed and the ones still open. Useful after fixin"},{"name":"render_page","description":"Use to see what visitors and crawlers without JavaScript (GPTBot, ClaudeBot, PerplexityBot) get on the first screen. Load a page in a real browser on a phone (3"},{"name":"get_layout_probe","description":"Get a small JavaScript measurement script to run in your own browser tool (Claude in Chrome, Playwright, Puppeteer or similar). Run it on the page at each viewp"},{"name":"analyze_layout","description":"Analyse the results of the get_layout_probe script, measured in your own browser: the same checks as render_page (H1 and call to action position, pop-ups, tap t"},{"name":"screen_reader_view","description":"Show a page the way a screen reader announces it, from the browser's accessibility tree: landmarks, the heading outline, and the reading order of links, buttons"},{"name":"export_findings","description":"Turn a page scan or a finished site audit into an action plan the team can work from. Returns: rows for a spreadsheet plus a private CSV link that loads straigh"},{"name":"measure_impact","description":"Use to answer \"did our fixes win traffic?\" with before and after numbers. For the score change of one page use rescan_and_compare. Show whether SEO fixes paid o"},{"name":"match_intent","description":"Check whether a page matches what searchers want for a keyword, based on what actually ranks. Fetch the top organic results for the keyword with the user's conn"},{"name":"check_readability","description":"Check how easy a page is to read, against the right target. A product page should read differently from documentation, so the target depends on the page type (g"},{"name":"check_og_tags","description":"Check how a page looks when it is shared on Facebook, LinkedIn, X, WhatsApp, Slack or iMessage: every Open Graph and Twitter Card tag, and the share image itsel"}],"toolCount":70,"toolsHash":"15fd440274c91445697c2666abaaec69c5bea00673f97b53b66a5090dee4f3af","serverName":"onpage-dev","capabilities":["tools","prompts","resources"],"serverVersion":"1.4.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T17:27:50.434Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":36,"error":null,"detail":{"tools":[{"name":"scan_page","description":"Scan one public web page for SEO and AI visibility. Returns a 0-100 score, the issues to fix first with why and how, AI readiness, and the key facts (title, des"},{"name":"check_ai_visibility","description":"Check whether ChatGPT, Claude, Perplexity, Gemini and other AI crawlers may read a page (robots.txt per bot), whether llms.txt exists, how ready and citable the"},{"name":"check_focus_keyword","description":"Check how well a page targets one search term: title, meta description, H1, URL, first 100 words, subheadings, image alt texts and keyword density (flags stuffi"},{"name":"get_fix_pack","description":"Use after a scan to get the fixes as code. Set platform to how the user ships: html (default), wordpress, git for a pull request, or cloudflare for an edge Work"},{"name":"check_web_vitals","description":"Get Core Web Vitals from real Chrome users (the Chrome UX Report, the field data Google uses for ranking): LCP, INP, CLS, FCP and TTFB at the 75th percentile, o"},{"name":"analyze_logs","description":"Analyse server access log lines to see what Googlebot, Bingbot and AI crawlers (GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-User, PerplexityBot, Appl"},{"name":"submit_indexnow","description":"Submit changed URLs to IndexNow, so Bing, Yandex, Naver, Seznam and Yep recrawl them within minutes instead of days. Call it after a fix is live. The first time"},{"name":"check_accessibility","description":"Check a page against WCAG 2.1 level AA, the standard behind the European Accessibility Act (EN 301 549): page language, text alternatives, form labels, link and"},{"name":"check_answer_format","description":"For a question people search (a featured snippet or a People Also Ask question), find the section that answers it on the pages that rank and on your page, and c"},{"name":"check_consent","description":"Quick check of the cookie banner setup from the HTML. To see what GA4 really sends before and after accepting, use check_ga4_tracking. Check a page's cookie con"},{"name":"check_product_page","description":"Check an ecommerce product page for Google: Product structured data with name, image, price, currency and availability, identifiers (SKU, GTIN, MPN, brand), shi"},{"name":"map_topics","description":"Group a site's search queries into topic clusters and map them to pages: which page owns each topic, where several pages compete for the same topic, which topic"},{"name":"check_question_coverage","description":"Check how well a page covers a topic the way AI search reads it. AI Mode and AI Overviews split a search into many sub-questions (a query fan-out) and pick a so"},{"name":"check_hreflang","description":"Check the hreflang setup of a multilingual page: valid language and region codes, x-default, the self-reference and duplicates, then each language version: does"},{"name":"check_trust_signals","description":"Check the trust signals Google and AI models look for across a site, not only on one page: an About page with real content, contact details (email, phone, addre"},{"name":"check_local_seo","description":"Check a local business site for Google Maps and local search: LocalBusiness markup (most specific type, address, phone, opening hours, geo coordinates), whether"},{"name":"map_link_equity","description":"Map how link authority flows through a site from a finished site audit: internal PageRank per page, click depth from the home page, links in and out. Finds page"},{"name":"check_ga4_tracking","description":"Use when GA4 numbers look wrong or consent may not reach GA4. For a quick check of the banner setup from the HTML, use check_consent. Debug Google Analytics 4 o"},{"name":"log_fix","description":"Record SEO fixes after they ship, so OnPage.dev keeps them honest: it checks about every 6 hours that each fix is still live (title, description, canonical, rob"},{"name":"get_fix_log","description":"Show a fix log: per fix whether it is still live, undone or changed since it shipped, with the restore code for every undone fix, the measured impact when measu"},{"name":"explain_index_status","description":"Use when pages are missing from Google: turns Search Console URL Inspection results (or rows from the Pages report: URL plus reason) into causes, fixes and the "},{"name":"build_edge_rules","description":"Use when the same SEO problem repeats across a section of a site (all product pages, all blog posts) and the CMS or templates are hard to change: from a finishe"},{"name":"get_prerender_worker","description":"Use when a site is built in the browser (React, Vue, Angular) and AI crawlers such as GPTBot, ClaudeBot and PerplexityBot, which do not run JavaScript, see an e"},{"name":"diagnose_traffic_drop","description":"Use when organic traffic dropped: fetch two periods of equal length from the user's Search Console (before and after the drop), per page or per page and query, "},{"name":"find_ctr_gaps","description":"Use to find quick wins without ranking changes: from the user's Search Console rows (page, or page and query, with impressions, clicks or CTR and position), fin"},{"name":"find_striking_distance","description":"Use to find the fastest ranking wins: from the user's Search Console rows by query and page, finds queries ranking at positions 8 to 20 with real impressions, g"},{"name":"check_vitals_trend","description":"Use to see whether speed changed for real users and since when, for example after a performance fix: Core Web Vitals (LCP, INP, CLS, FCP, TTFB) at the 75th perc"},{"name":"measure_ai_citations","description":"Use to prove AI visibility gains: pass how often AI assistants cited each page before and after the fixes (from Ahrefs Brand Radar or another AI-visibility tool"},{"name":"check_sitemap","description":"Use to check a site's XML sitemap the way Google reads it: finds it through robots.txt or the usual locations, follows a sitemap index, and checks the format, t"},{"name":"extract_from_pages","description":"Use to check a template change or a data point across many pages at once, like custom extraction in a crawler: give up to 20 URLs and one of a CSS selector (wit"},{"name":"find_duplicate_content","description":"Use to find pages that say almost the same thing, which compete with each other and make Google pick one: groups the pages of a finished site audit by text simi"},{"name":"check_url_parameters","description":"Use when a site has filter, sort, tracking or search URLs that waste crawl budget or create duplicates: classifies every query parameter found in a site audit's"},{"name":"create_dashboard_feed","description":"Use when the user wants an SEO dashboard or client report that stays up to date: OnPage.dev then checks the site's key pages every day and keeps the history (sc"},{"name":"get_dashboard_data","description":"Use to fill an SEO dashboard or report from a feed made with create_dashboard_feed: returns one dataset as a clean table with a date column (YYYY-MM-DD) and ful"},{"name":"build_seo_dashboard","description":"Use when the user wants a live SEO dashboard in Claude (Claude Dashboards or an artifact): returns a complete blueprint that combines a realtime block from the "},{"name":"scan_html","description":"Scan raw HTML that is not published yet, for example a local build, a template or a draft from your editor. Returns the same score, fixes and AI readiness as sc"},{"name":"rescan_and_compare","description":"Scan a live page again and compare it with the previous scan of that page: score change, issues fixed, new issues and AI readiness change. Use this after deploy"},{"name":"check_snippet","description":"Estimate how a title and meta description show in Google: pixel width against the cut-off on desktop and mobile, and the truncated text a searcher would see. No"},{"name":"generate_schema","description":"Writes validated JSON-LD for Article, Product, FAQPage, Organization or BreadcrumbList. For LocalBusiness use check_local_seo; to check JSON-LD you wrote yourse"},{"name":"find_answer_passages","description":"Find the passages on a page that best answer a given question, the way AI answer engines pick text to quote. Returns the top passages with their heading, word c"},{"name":"generate_llms_txt","description":"Build a ready-to-upload llms.txt for a site from its sitemap and home page: site name, summary and the main pages grouped by section. Upload the result to the r"},{"name":"ai_crawler_policy","description":"Write robots.txt rules for AI crawlers based on a policy, and merge them into the site's current robots.txt. Policies: allow_all, search_only (allow AI search a"},{"name":"deep_audit","description":"One page, every measurement by section: use it when scan_page is not detailed enough. For a whole site use start_site_audit. Everything OnPage.dev measures on a"},{"name":"check_urls","description":"Check up to 20 URLs at once: final status code, the full redirect chain and where each one ends up. Built for site migrations, broken link sweeps and launch che"},{"name":"test_robots","description":"Test a URL against the site's live robots.txt for one or more crawlers, using Google's matching rules (most specific user-agent group, longest matching rule, Al"},{"name":"validate_schema","description":"Validate JSON-LD you wrote before you publish it: JSON syntax, @context and @type, absolute URLs, ISO dates, and Google's required and recommended fields per ri"},{"name":"compare_html","description":"Compare two versions of a page's HTML, for example before and after a code change, and report what got better or worse for SEO: score, issues fixed and introduc"},{"name":"start_site_audit","description":"Start an SEO audit of a whole site (up to 25 pages from the sitemap, or from the home page links when there is no sitemap). Returns an audit_id and the first pr"},{"name":"get_site_audit","description":"Continue a site audit started with start_site_audit: each call scans the next pages and reports progress. Keep calling until status is complete, then you get th"},{"name":"suggest_internal_links","description":"Suggest which existing pages should link to a target page, with anchor text, based on a completed site audit. The target can be a page from the audit or a new p"},{"name":"compare_pages","description":"Compare a page with up to 3 competitor pages that rank for the same search: score, AI readiness, words, headings, rich results, speed and more side by side, plu"},{"name":"prioritize_fixes","description":"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 reve"},{"name":"check_entity_graph","description":"Check how a page's structured data describes who and what it is about, the way AI knowledge graphs read it: which entities there are (Organization, Person, Arti"},{"name":"validate_llms_txt","description":"Validate a site's llms.txt against the llmstxt.org format: served as text (not an HTML page), one H1 with the site name, a > summary, ## sections with [name](ur"},{"name":"compare_ai_citations","description":"Compare the pages AI assistants cite with the ones they skip, using citation counts from the user's connected tools. Before calling, check your available tools:"},{"name":"watch_page","description":"Start watching a page. OnPage.dev rescans it about once a day and records what changed for search and AI: the page going down or redirecting, a new noindex, AI "},{"name":"get_watch","description":"Read a watch created with watch_page: the latest snapshot, when it was last checked and every change found so far, newest first."},{"name":"unwatch","description":"Stop a watch created with watch_page and delete its history."},{"name":"create_content_brief","description":"Build a writing brief for a search term from the pages that rank for it. Get the competitor URLs from your own search tool, Ahrefs, Semrush or the user (1 to 3)"},{"name":"plan_redirects","description":"Match old URLs to new ones for a site migration or restructure and write the redirect rules. Give the old URLs (a list, or the old site's address while it is st"},{"name":"share_result","description":"Scan a page again and publish a shareable proof page on onpage.dev with the score before and after, the issues fixed and the ones still open. Useful after fixin"},{"name":"render_page","description":"Use to see what visitors and crawlers without JavaScript (GPTBot, ClaudeBot, PerplexityBot) get on the first screen. Load a page in a real browser on a phone (3"},{"name":"get_layout_probe","description":"Get a small JavaScript measurement script to run in your own browser tool (Claude in Chrome, Playwright, Puppeteer or similar). Run it on the page at each viewp"},{"name":"analyze_layout","description":"Analyse the results of the get_layout_probe script, measured in your own browser: the same checks as render_page (H1 and call to action position, pop-ups, tap t"},{"name":"screen_reader_view","description":"Show a page the way a screen reader announces it, from the browser's accessibility tree: landmarks, the heading outline, and the reading order of links, buttons"},{"name":"export_findings","description":"Turn a page scan or a finished site audit into an action plan the team can work from. Returns: rows for a spreadsheet plus a private CSV link that loads straigh"},{"name":"measure_impact","description":"Use to answer \"did our fixes win traffic?\" with before and after numbers. For the score change of one page use rescan_and_compare. Show whether SEO fixes paid o"},{"name":"match_intent","description":"Check whether a page matches what searchers want for a keyword, based on what actually ranks. Fetch the top organic results for the keyword with the user's conn"},{"name":"check_readability","description":"Check how easy a page is to read, against the right target. A product page should read differently from documentation, so the target depends on the page type (g"},{"name":"check_og_tags","description":"Check how a page looks when it is shared on Facebook, LinkedIn, X, WhatsApp, Slack or iMessage: every Open Graph and Twitter Card tag, and the share image itsel"}],"toolCount":70,"toolsHash":"15fd440274c91445697c2666abaaec69c5bea00673f97b53b66a5090dee4f3af","serverName":"onpage-dev","capabilities":["tools","prompts","resources"],"serverVersion":"1.4.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T11:27:18.281Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":14,"error":null,"detail":{"tools":[{"name":"scan_page","description":"Scan one public web page for SEO and AI visibility. Returns a 0-100 score, the issues to fix first with why and how, AI readiness, and the key facts (title, des"},{"name":"check_ai_visibility","description":"Check whether ChatGPT, Claude, Perplexity, Gemini and other AI crawlers may read a page (robots.txt per bot), whether llms.txt exists, how ready and citable the"},{"name":"check_focus_keyword","description":"Check how well a page targets one search term: title, meta description, H1, URL, first 100 words, subheadings, image alt texts and keyword density (flags stuffi"},{"name":"get_fix_pack","description":"Generate ready-to-paste fixes for the issues on a page, built from the page's own content: a title tag, meta description, canonical, social (Open Graph) tags, v"},{"name":"check_web_vitals","description":"Get Core Web Vitals from real Chrome users (the Chrome UX Report, the field data Google uses for ranking): LCP, INP, CLS, FCP and TTFB at the 75th percentile, o"},{"name":"analyze_logs","description":"Analyse server access log lines to see what Googlebot, Bingbot and AI crawlers (GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-User, PerplexityBot, Appl"},{"name":"submit_indexnow","description":"Submit changed URLs to IndexNow, so Bing, Yandex, Naver, Seznam and Yep recrawl them within minutes instead of days. Call it after a fix is live. The first time"},{"name":"check_accessibility","description":"Check a page against WCAG 2.1 level AA, the standard behind the European Accessibility Act (EN 301 549): page language, text alternatives, form labels, link and"},{"name":"check_answer_format","description":"For a question people search (a featured snippet or a People Also Ask question), find the section that answers it on the pages that rank and on your page, and c"},{"name":"check_consent","description":"Check a page's cookie consent setup from its HTML: which consent platform runs (Cookiebot, OneTrust, Usercentrics, CookieYes, Complianz, Didomi and more), wheth"},{"name":"check_product_page","description":"Check an ecommerce product page for Google: Product structured data with name, image, price, currency and availability, identifiers (SKU, GTIN, MPN, brand), shi"},{"name":"map_topics","description":"Group a site's search queries into topic clusters and map them to pages: which page owns each topic, where several pages compete for the same topic, which topic"},{"name":"check_question_coverage","description":"Check how well a page covers a topic the way AI search reads it. AI Mode and AI Overviews split a search into many sub-questions (a query fan-out) and pick a so"},{"name":"check_hreflang","description":"Check the hreflang setup of a multilingual page: valid language and region codes, x-default, the self-reference and duplicates, then each language version: does"},{"name":"check_trust_signals","description":"Check the trust signals Google and AI models look for across a site, not only on one page: an About page with real content, contact details (email, phone, addre"},{"name":"check_local_seo","description":"Check a local business site for Google Maps and local search: LocalBusiness markup (most specific type, address, phone, opening hours, geo coordinates), whether"},{"name":"map_link_equity","description":"Map how link authority flows through a site from a finished site audit: internal PageRank per page, click depth from the home page, links in and out. Finds page"},{"name":"check_ga4_tracking","description":"Debug Google Analytics 4 on a live page in a real browser, the way Tag Assistant would: which GA4 measurement IDs (G-), Google Tag Manager containers (GTM-) and"},{"name":"log_fix","description":"Record SEO fixes after they ship, so OnPage.dev keeps them honest: it checks about every 6 hours that each fix is still live (title, description, canonical, rob"},{"name":"get_fix_log","description":"Show a fix log: per fix whether it is still live, undone or changed since it shipped, with the restore code for every undone fix, the measured impact when measu"},{"name":"scan_html","description":"Scan raw HTML that is not published yet, for example a local build, a template or a draft from your editor. Returns the same score, fixes and AI readiness as sc"},{"name":"rescan_and_compare","description":"Scan a live page again and compare it with the previous scan of that page: score change, issues fixed, new issues and AI readiness change. Use this after deploy"},{"name":"check_snippet","description":"Estimate how a title and meta description show in Google: pixel width against the cut-off on desktop and mobile, and the truncated text a searcher would see. No"},{"name":"generate_schema","description":"Generate a JSON-LD block for a page from its own content and validate it against Google's rich result rules. Types: Article, Product, FAQPage (built from questi"},{"name":"find_answer_passages","description":"Find the passages on a page that best answer a given question, the way AI answer engines pick text to quote. Returns the top passages with their heading, word c"},{"name":"generate_llms_txt","description":"Build a ready-to-upload llms.txt for a site from its sitemap and home page: site name, summary and the main pages grouped by section. Upload the result to the r"},{"name":"ai_crawler_policy","description":"Write robots.txt rules for AI crawlers based on a policy, and merge them into the site's current robots.txt. Policies: allow_all, search_only (allow AI search a"},{"name":"deep_audit","description":"Everything OnPage.dev measures on a page, by section: speed hints from the HTML, links and anchor texts, accessibility basics, image SEO, rich results, security"},{"name":"check_urls","description":"Check up to 20 URLs at once: final status code, the full redirect chain and where each one ends up. Built for site migrations, broken link sweeps and launch che"},{"name":"test_robots","description":"Test a URL against the site's live robots.txt for one or more crawlers, using Google's matching rules (most specific user-agent group, longest matching rule, Al"},{"name":"validate_schema","description":"Validate JSON-LD you wrote before you publish it: JSON syntax, @context and @type, absolute URLs, ISO dates, and Google's required and recommended fields per ri"},{"name":"compare_html","description":"Compare two versions of a page's HTML, for example before and after a code change, and report what got better or worse for SEO: score, issues fixed and introduc"},{"name":"start_site_audit","description":"Start an SEO audit of a whole site (up to 25 pages from the sitemap, or from the home page links when there is no sitemap). Returns an audit_id and the first pr"},{"name":"get_site_audit","description":"Continue a site audit started with start_site_audit: each call scans the next pages and reports progress. Keep calling until status is complete, then you get th"},{"name":"suggest_internal_links","description":"Suggest which existing pages should link to a target page, with anchor text, based on a completed site audit. The target can be a page from the audit or a new p"},{"name":"compare_pages","description":"Compare a page with up to 3 competitor pages that rank for the same search: score, AI readiness, words, headings, rich results, speed and more side by side, plu"},{"name":"prioritize_fixes","description":"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 even"},{"name":"check_entity_graph","description":"Check how a page's structured data describes who and what it is about, the way AI knowledge graphs read it: which entities there are (Organization, Person, Arti"},{"name":"validate_llms_txt","description":"Validate a site's llms.txt against the llmstxt.org format: served as text (not an HTML page), one H1 with the site name, a > summary, ## sections with [name](ur"},{"name":"compare_ai_citations","description":"Compare the pages AI assistants cite with the ones they skip, using citation counts from the user's connected tools. Before calling, check your available tools:"},{"name":"watch_page","description":"Start watching a page. OnPage.dev rescans it about once a day and records what changed for search and AI: the page going down or redirecting, a new noindex, AI "},{"name":"get_watch","description":"Read a watch created with watch_page: the latest snapshot, when it was last checked and every change found so far, newest first."},{"name":"unwatch","description":"Stop a watch created with watch_page and delete its history."},{"name":"create_content_brief","description":"Build a writing brief for a search term from the pages that rank for it. Get the competitor URLs from your own search tool, Ahrefs, Semrush or the user (1 to 3)"},{"name":"plan_redirects","description":"Match old URLs to new ones for a site migration or restructure and write the redirect rules. Give the old URLs (a list, or the old site's address while it is st"},{"name":"share_result","description":"Scan a page again and publish a shareable proof page on onpage.dev with the score before and after, the issues fixed and the ones still open. Useful after fixin"},{"name":"render_page","description":"Load a page in a real browser on a phone (390x844), tablet (820x1180) and desktop (1440x900) and check the first screen: is the H1 visible, is there a call to a"},{"name":"get_layout_probe","description":"Get a small JavaScript measurement script to run in your own browser tool (Claude in Chrome, Playwright, Puppeteer or similar). Run it on the page at each viewp"},{"name":"analyze_layout","description":"Analyse the results of the get_layout_probe script, measured in your own browser: the same checks as render_page (H1 and call to action position, pop-ups, tap t"},{"name":"screen_reader_view","description":"Show a page the way a screen reader announces it, from the browser's accessibility tree: landmarks, the heading outline, and the reading order of links, buttons"},{"name":"export_findings","description":"Turn a page scan or a finished site audit into an action plan the team can work from. Returns: rows for a spreadsheet plus a private CSV link that loads straigh"},{"name":"measure_impact","description":"Show whether SEO fixes paid off, using numbers from the user's connected tools. Fetch two periods of equal length from Google Search Console, GA4, Ahrefs or Sem"},{"name":"match_intent","description":"Check whether a page matches what searchers want for a keyword, based on what actually ranks. Fetch the top organic results for the keyword with the user's conn"},{"name":"check_readability","description":"Check how easy a page is to read, against the right target. A product page should read differently from documentation, so the target depends on the page type (g"},{"name":"check_og_tags","description":"Check how a page looks when it is shared on Facebook, LinkedIn, X, WhatsApp, Slack or iMessage: every Open Graph and Twitter Card tag, and the share image itsel"}],"toolCount":55,"toolsHash":"1bf569d27cbf70a443546ba7c40619fec9fb00b0db3a808252d3eebfa7db1738","serverName":"onpage-dev","capabilities":["tools","prompts","resources"],"serverVersion":"1.4.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T04:29:14.444Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":16,"error":null,"detail":{"tools":[{"name":"scan_page","description":"Scan one public web page for SEO and AI visibility. Returns a 0-100 score, the issues to fix first with why and how, AI readiness, and the key facts (title, des"},{"name":"check_ai_visibility","description":"Check whether ChatGPT, Claude, Perplexity, Gemini and other AI crawlers may read a page (robots.txt per bot), whether llms.txt exists, how ready and citable the"},{"name":"check_focus_keyword","description":"Check how well a page targets one search term: title, meta description, H1, URL, first 100 words, subheadings, image alt texts and keyword density (flags stuffi"},{"name":"get_fix_pack","description":"Generate ready-to-paste fixes for the issues on a page, built from the page's own content: a title tag, meta description, canonical, social (Open Graph) tags, v"},{"name":"check_web_vitals","description":"Get Core Web Vitals from real Chrome users (the Chrome UX Report, the field data Google uses for ranking): LCP, INP, CLS, FCP and TTFB at the 75th percentile, o"},{"name":"analyze_logs","description":"Analyse server access log lines to see what Googlebot, Bingbot and AI crawlers (GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-User, PerplexityBot, Appl"},{"name":"submit_indexnow","description":"Submit changed URLs to IndexNow, so Bing, Yandex, Naver, Seznam and Yep recrawl them within minutes instead of days. Call it after a fix is live. The first time"},{"name":"check_accessibility","description":"Check a page against WCAG 2.1 level AA, the standard behind the European Accessibility Act (EN 301 549): page language, text alternatives, form labels, link and"},{"name":"check_answer_format","description":"For a question people search (a featured snippet or a People Also Ask question), find the section that answers it on the pages that rank and on your page, and c"},{"name":"check_consent","description":"Check a page's cookie consent setup from its HTML: which consent platform runs (Cookiebot, OneTrust, Usercentrics, CookieYes, Complianz, Didomi and more), wheth"},{"name":"check_product_page","description":"Check an ecommerce product page for Google: Product structured data with name, image, price, currency and availability, identifiers (SKU, GTIN, MPN, brand), shi"},{"name":"map_topics","description":"Group a site's search queries into topic clusters and map them to pages: which page owns each topic, where several pages compete for the same topic, which topic"},{"name":"check_question_coverage","description":"Check how well a page covers a topic the way AI search reads it. AI Mode and AI Overviews split a search into many sub-questions (a query fan-out) and pick a so"},{"name":"check_hreflang","description":"Check the hreflang setup of a multilingual page: valid language and region codes, x-default, the self-reference and duplicates, then each language version: does"},{"name":"check_trust_signals","description":"Check the trust signals Google and AI models look for across a site, not only on one page: an About page with real content, contact details (email, phone, addre"},{"name":"scan_html","description":"Scan raw HTML that is not published yet, for example a local build, a template or a draft from your editor. Returns the same score, fixes and AI readiness as sc"},{"name":"rescan_and_compare","description":"Scan a live page again and compare it with the previous scan of that page: score change, issues fixed, new issues and AI readiness change. Use this after deploy"},{"name":"check_snippet","description":"Estimate how a title and meta description show in Google: pixel width against the cut-off on desktop and mobile, and the truncated text a searcher would see. No"},{"name":"generate_schema","description":"Generate a JSON-LD block for a page from its own content and validate it against Google's rich result rules. Types: Article, Product, FAQPage (built from questi"},{"name":"find_answer_passages","description":"Find the passages on a page that best answer a given question, the way AI answer engines pick text to quote. Returns the top passages with their heading, word c"},{"name":"generate_llms_txt","description":"Build a ready-to-upload llms.txt for a site from its sitemap and home page: site name, summary and the main pages grouped by section. Upload the result to the r"},{"name":"ai_crawler_policy","description":"Write robots.txt rules for AI crawlers based on a policy, and merge them into the site's current robots.txt. Policies: allow_all, search_only (allow AI search a"},{"name":"deep_audit","description":"Everything OnPage.dev measures on a page, by section: speed hints from the HTML, links and anchor texts, accessibility basics, image SEO, rich results, security"},{"name":"check_urls","description":"Check up to 20 URLs at once: final status code, the full redirect chain and where each one ends up. Built for site migrations, broken link sweeps and launch che"},{"name":"test_robots","description":"Test a URL against the site's live robots.txt for one or more crawlers, using Google's matching rules (most specific user-agent group, longest matching rule, Al"},{"name":"validate_schema","description":"Validate JSON-LD you wrote before you publish it: JSON syntax, @context and @type, absolute URLs, ISO dates, and Google's required and recommended fields per ri"},{"name":"compare_html","description":"Compare two versions of a page's HTML, for example before and after a code change, and report what got better or worse for SEO: score, issues fixed and introduc"},{"name":"start_site_audit","description":"Start an SEO audit of a whole site (up to 25 pages from the sitemap, or from the home page links when there is no sitemap). Returns an audit_id and the first pr"},{"name":"get_site_audit","description":"Continue a site audit started with start_site_audit: each call scans the next pages and reports progress. Keep calling until status is complete, then you get th"},{"name":"suggest_internal_links","description":"Suggest which existing pages should link to a target page, with anchor text, based on a completed site audit. The target can be a page from the audit or a new p"},{"name":"compare_pages","description":"Compare a page with up to 3 competitor pages that rank for the same search: score, AI readiness, words, headings, rich results, speed and more side by side, plu"},{"name":"prioritize_fixes","description":"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 even"},{"name":"check_entity_graph","description":"Check how a page's structured data describes who and what it is about, the way AI knowledge graphs read it: which entities there are (Organization, Person, Arti"},{"name":"validate_llms_txt","description":"Validate a site's llms.txt against the llmstxt.org format: served as text (not an HTML page), one H1 with the site name, a > summary, ## sections with [name](ur"},{"name":"compare_ai_citations","description":"Compare the pages AI assistants cite with the ones they skip, using citation counts from the user's connected tools. Before calling, check your available tools:"},{"name":"watch_page","description":"Start watching a page. OnPage.dev rescans it about once a day and records what changed for search and AI: the page going down or redirecting, a new noindex, AI "},{"name":"get_watch","description":"Read a watch created with watch_page: the latest snapshot, when it was last checked and every change found so far, newest first."},{"name":"unwatch","description":"Stop a watch created with watch_page and delete its history."},{"name":"create_content_brief","description":"Build a writing brief for a search term from the pages that rank for it. Get the competitor URLs from your own search tool, Ahrefs, Semrush or the user (1 to 3)"},{"name":"plan_redirects","description":"Match old URLs to new ones for a site migration or restructure and write the redirect rules. Give the old URLs (a list, or the old site's address while it is st"},{"name":"share_result","description":"Scan a page again and publish a shareable proof page on onpage.dev with the score before and after, the issues fixed and the ones still open. Useful after fixin"},{"name":"render_page","description":"Load a page in a real browser on a phone (390x844), tablet (820x1180) and desktop (1440x900) and check the first screen: is the H1 visible, is there a call to a"},{"name":"get_layout_probe","description":"Get a small JavaScript measurement script to run in your own browser tool (Claude in Chrome, Playwright, Puppeteer or similar). Run it on the page at each viewp"},{"name":"analyze_layout","description":"Analyse the results of the get_layout_probe script, measured in your own browser: the same checks as render_page (H1 and call to action position, pop-ups, tap t"},{"name":"screen_reader_view","description":"Show a page the way a screen reader announces it, from the browser's accessibility tree: landmarks, the heading outline, and the reading order of links, buttons"},{"name":"export_findings","description":"Turn a page scan or a finished site audit into an action plan the team can work from. Returns: rows for a spreadsheet plus a private CSV link that loads straigh"},{"name":"measure_impact","description":"Show whether SEO fixes paid off, using numbers from the user's connected tools. Fetch two periods of equal length from Google Search Console, GA4, Ahrefs or Sem"},{"name":"match_intent","description":"Check whether a page matches what searchers want for a keyword, based on what actually ranks. Fetch the top organic results for the keyword with the user's conn"},{"name":"check_readability","description":"Check how easy a page is to read, against the right target. A product page should read differently from documentation, so the target depends on the page type (g"},{"name":"check_og_tags","description":"Check how a page looks when it is shared on Facebook, LinkedIn, X, WhatsApp, Slack or iMessage: every Open Graph and Twitter Card tag, and the share image itsel"}],"toolCount":50,"toolsHash":"96942238d0669096be230ad3ba2c362f6261e2fed65e73998c0d365a5d0eea18","serverName":"onpage-dev","capabilities":["tools","prompts","resources"],"serverVersion":"1.4.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"scan_page","description":"Scan one public web page for SEO and AI visibility. Returns a 0-100 score, the issues to fix first with why and how, AI readiness, and the key facts (title, des"},{"name":"check_ai_visibility","description":"Check whether ChatGPT, Claude, Perplexity, Gemini and other AI crawlers may read a page (robots.txt per bot), whether llms.txt exists, how ready and citable the"},{"name":"check_focus_keyword","description":"Check how well a page targets one search term: title, meta description, H1, URL, first 100 words, subheadings, image alt texts and keyword density (flags stuffi"},{"name":"get_fix_pack","description":"Use after a scan to get the fixes as code. Set platform to how the user ships: html (default), wordpress, git for a pull request, or cloudflare for an edge Work"},{"name":"check_web_vitals","description":"Get Core Web Vitals from real Chrome users (the Chrome UX Report, the field data Google uses for ranking): LCP, INP, CLS, FCP and TTFB at the 75th percentile, o"},{"name":"analyze_logs","description":"Analyse server access log lines to see what Googlebot, Bingbot and AI crawlers (GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-User, PerplexityBot, Appl"},{"name":"submit_indexnow","description":"Submit changed URLs to IndexNow, so Bing, Yandex, Naver, Seznam and Yep recrawl them within minutes instead of days. Call it after a fix is live. The first time"},{"name":"check_accessibility","description":"Check a page against WCAG 2.1 level AA, the standard behind the European Accessibility Act (EN 301 549): page language, text alternatives, form labels, link and"},{"name":"check_answer_format","description":"For a question people search (a featured snippet or a People Also Ask question), find the section that answers it on the pages that rank and on your page, and c"},{"name":"check_consent","description":"Quick check of the cookie banner setup from the HTML. To see what GA4 really sends before and after accepting, use check_ga4_tracking. Check a page's cookie con"},{"name":"check_product_page","description":"Check an ecommerce product page for Google: Product structured data with name, image, price, currency and availability, identifiers (SKU, GTIN, MPN, brand), shi"},{"name":"map_topics","description":"Group a site's search queries into topic clusters and map them to pages: which page owns each topic, where several pages compete for the same topic, which topic"},{"name":"check_question_coverage","description":"Check how well a page covers a topic the way AI search reads it. AI Mode and AI Overviews split a search into many sub-questions (a query fan-out) and pick a so"},{"name":"check_hreflang","description":"Check the hreflang setup of a multilingual page: valid language and region codes, x-default, the self-reference and duplicates, then each language version: does"},{"name":"check_trust_signals","description":"Check the trust signals Google and AI models look for across a site, not only on one page: an About page with real content, contact details (email, phone, addre"},{"name":"check_local_seo","description":"Check a local business site for Google Maps and local search: LocalBusiness markup (most specific type, address, phone, opening hours, geo coordinates), whether"},{"name":"map_link_equity","description":"Map how link authority flows through a site from a finished site audit: internal PageRank per page, click depth from the home page, links in and out. Finds page"},{"name":"check_ga4_tracking","description":"Use when GA4 numbers look wrong or consent may not reach GA4. For a quick check of the banner setup from the HTML, use check_consent. Debug Google Analytics 4 o"},{"name":"log_fix","description":"Record SEO fixes after they ship, so OnPage.dev keeps them honest: it checks about every 6 hours that each fix is still live (title, description, canonical, rob"},{"name":"get_fix_log","description":"Show a fix log: per fix whether it is still live, undone or changed since it shipped, with the restore code for every undone fix, the measured impact when measu"},{"name":"explain_index_status","description":"Use when pages are missing from Google: turns Search Console URL Inspection results (or rows from the Pages report: URL plus reason) into causes, fixes and the "},{"name":"build_edge_rules","description":"Use when the same SEO problem repeats across a section of a site (all product pages, all blog posts) and the CMS or templates are hard to change: from a finishe"},{"name":"get_prerender_worker","description":"Use when a site is built in the browser (React, Vue, Angular) and AI crawlers such as GPTBot, ClaudeBot and PerplexityBot, which do not run JavaScript, see an e"},{"name":"diagnose_traffic_drop","description":"Use when organic traffic dropped: fetch two periods of equal length from the user's Search Console (before and after the drop), per page or per page and query, "},{"name":"find_ctr_gaps","description":"Use to find quick wins without ranking changes: from the user's Search Console rows (page, or page and query, with impressions, clicks or CTR and position), fin"},{"name":"find_striking_distance","description":"Use to find the fastest ranking wins: from the user's Search Console rows by query and page, finds queries ranking at positions 8 to 20 with real impressions, g"},{"name":"check_vitals_trend","description":"Use to see whether speed changed for real users and since when, for example after a performance fix: Core Web Vitals (LCP, INP, CLS, FCP, TTFB) at the 75th perc"},{"name":"measure_ai_citations","description":"Use to prove AI visibility gains: pass how often AI assistants cited each page before and after the fixes (from Ahrefs Brand Radar or another AI-visibility tool"},{"name":"check_sitemap","description":"Use to check a site's XML sitemap the way Google reads it: finds it through robots.txt or the usual locations, follows a sitemap index, and checks the format, t"},{"name":"extract_from_pages","description":"Use to check a template change or a data point across many pages at once, like custom extraction in a crawler: give up to 20 URLs and one of a CSS selector (wit"},{"name":"find_duplicate_content","description":"Use to find pages that say almost the same thing, which compete with each other and make Google pick one: groups the pages of a finished site audit by text simi"},{"name":"check_url_parameters","description":"Use when a site has filter, sort, tracking or search URLs that waste crawl budget or create duplicates: classifies every query parameter found in a site audit's"},{"name":"create_dashboard_feed","description":"Use when the user wants an SEO dashboard or client report that stays up to date: OnPage.dev then checks the site's key pages every day and keeps the history (sc"},{"name":"get_dashboard_data","description":"Use to fill an SEO dashboard or report from a feed made with create_dashboard_feed: returns one dataset as a clean table with a date column (YYYY-MM-DD) and ful"},{"name":"build_seo_dashboard","description":"Use when the user wants a live SEO dashboard in Claude (Claude Dashboards or an artifact): returns a complete blueprint that combines a realtime block from the "},{"name":"scan_html","description":"Scan raw HTML that is not published yet, for example a local build, a template or a draft from your editor. Returns the same score, fixes and AI readiness as sc"},{"name":"rescan_and_compare","description":"Scan a live page again and compare it with the previous scan of that page: score change, issues fixed, new issues and AI readiness change. Use this after deploy"},{"name":"check_snippet","description":"Estimate how a title and meta description show in Google: pixel width against the cut-off on desktop and mobile, and the truncated text a searcher would see. No"},{"name":"generate_schema","description":"Writes validated JSON-LD for Article, Product, FAQPage, Organization or BreadcrumbList. For LocalBusiness use check_local_seo; to check JSON-LD you wrote yourse"},{"name":"find_answer_passages","description":"Find the passages on a page that best answer a given question, the way AI answer engines pick text to quote. Returns the top passages with their heading, word c"},{"name":"generate_llms_txt","description":"Build a ready-to-upload llms.txt for a site from its sitemap and home page: site name, summary and the main pages grouped by section. Upload the result to the r"},{"name":"ai_crawler_policy","description":"Write robots.txt rules for AI crawlers based on a policy, and merge them into the site's current robots.txt. Policies: allow_all, search_only (allow AI search a"},{"name":"deep_audit","description":"One page, every measurement by section: use it when scan_page is not detailed enough. For a whole site use start_site_audit. Everything OnPage.dev measures on a"},{"name":"check_urls","description":"Check up to 20 URLs at once: final status code, the full redirect chain and where each one ends up. Built for site migrations, broken link sweeps and launch che"},{"name":"test_robots","description":"Test a URL against the site's live robots.txt for one or more crawlers, using Google's matching rules (most specific user-agent group, longest matching rule, Al"},{"name":"validate_schema","description":"Validate JSON-LD you wrote before you publish it: JSON syntax, @context and @type, absolute URLs, ISO dates, and Google's required and recommended fields per ri"},{"name":"compare_html","description":"Compare two versions of a page's HTML, for example before and after a code change, and report what got better or worse for SEO: score, issues fixed and introduc"},{"name":"start_site_audit","description":"Start an SEO audit of a whole site (up to 25 pages from the sitemap, or from the home page links when there is no sitemap). Returns an audit_id and the first pr"},{"name":"get_site_audit","description":"Continue a site audit started with start_site_audit: each call scans the next pages and reports progress. Keep calling until status is complete, then you get th"},{"name":"suggest_internal_links","description":"Suggest which existing pages should link to a target page, with anchor text, based on a completed site audit. The target can be a page from the audit or a new p"},{"name":"compare_pages","description":"Compare a page with up to 3 competitor pages that rank for the same search: score, AI readiness, words, headings, rich results, speed and more side by side, plu"},{"name":"prioritize_fixes","description":"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 reve"},{"name":"check_entity_graph","description":"Check how a page's structured data describes who and what it is about, the way AI knowledge graphs read it: which entities there are (Organization, Person, Arti"},{"name":"validate_llms_txt","description":"Validate a site's llms.txt against the llmstxt.org format: served as text (not an HTML page), one H1 with the site name, a > summary, ## sections with [name](ur"},{"name":"compare_ai_citations","description":"Compare the pages AI assistants cite with the ones they skip, using citation counts from the user's connected tools. Before calling, check your available tools:"},{"name":"watch_page","description":"Start watching a page. OnPage.dev rescans it about once a day and records what changed for search and AI: the page going down or redirecting, a new noindex, AI "},{"name":"get_watch","description":"Read a watch created with watch_page: the latest snapshot, when it was last checked and every change found so far, newest first."},{"name":"unwatch","description":"Stop a watch created with watch_page and delete its history."},{"name":"create_content_brief","description":"Build a writing brief for a search term from the pages that rank for it. Get the competitor URLs from your own search tool, Ahrefs, Semrush or the user (1 to 3)"},{"name":"plan_redirects","description":"Match old URLs to new ones for a site migration or restructure and write the redirect rules. Give the old URLs (a list, or the old site's address while it is st"},{"name":"share_result","description":"Scan a page again and publish a shareable proof page on onpage.dev with the score before and after, the issues fixed and the ones still open. Useful after fixin"},{"name":"render_page","description":"Use to see what visitors and crawlers without JavaScript (GPTBot, ClaudeBot, PerplexityBot) get on the first screen. Load a page in a real browser on a phone (3"},{"name":"get_layout_probe","description":"Get a small JavaScript measurement script to run in your own browser tool (Claude in Chrome, Playwright, Puppeteer or similar). Run it on the page at each viewp"},{"name":"analyze_layout","description":"Analyse the results of the get_layout_probe script, measured in your own browser: the same checks as render_page (H1 and call to action position, pop-ups, tap t"},{"name":"screen_reader_view","description":"Show a page the way a screen reader announces it, from the browser's accessibility tree: landmarks, the heading outline, and the reading order of links, buttons"},{"name":"export_findings","description":"Turn a page scan or a finished site audit into an action plan the team can work from. Returns: rows for a spreadsheet plus a private CSV link that loads straigh"},{"name":"measure_impact","description":"Use to answer \"did our fixes win traffic?\" with before and after numbers. For the score change of one page use rescan_and_compare. Show whether SEO fixes paid o"},{"name":"match_intent","description":"Check whether a page matches what searchers want for a keyword, based on what actually ranks. Fetch the top organic results for the keyword with the user's conn"},{"name":"check_readability","description":"Check how easy a page is to read, against the right target. A product page should read differently from documentation, so the target depends on the page type (g"},{"name":"check_og_tags","description":"Check how a page looks when it is shared on Facebook, LinkedIn, X, WhatsApp, Slack or iMessage: every Open Graph and Twitter Card tag, and the share image itsel"}],"package":null,"toolSurface":{"id":"ts_wer5gbu7h6e4","endpointId":"ep_j56ea3r4b42q","hash":"15fd440274c91445697c2666abaaec69c5bea00673f97b53b66a5090dee4f3af","toolCount":70,"serverName":"onpage-dev","serverVersion":"1.4.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-09T17:27:50.441Z","lastSeenAt":"2026-10-11T16:29:27.589Z","observations":8,"toolNames":["scan_page","check_ai_visibility","check_focus_keyword","get_fix_pack","check_web_vitals","analyze_logs","submit_indexnow","check_accessibility","check_answer_format","check_consent","check_product_page","map_topics","check_question_coverage","check_hreflang","check_trust_signals","check_local_seo","map_link_equity","check_ga4_tracking","log_fix","get_fix_log","explain_index_status","build_edge_rules","get_prerender_worker","diagnose_traffic_drop","find_ctr_gaps","find_striking_distance","check_vitals_trend","measure_ai_citations","check_sitemap","extract_from_pages","find_duplicate_content","check_url_parameters","create_dashboard_feed","get_dashboard_data","build_seo_dashboard","scan_html","rescan_and_compare","check_snippet","generate_schema","find_answer_passages","generate_llms_txt","ai_crawler_policy","deep_audit","check_urls","test_robots","validate_schema","compare_html","start_site_audit","get_site_audit","suggest_internal_links","compare_pages","prioritize_fixes","check_entity_graph","validate_llms_txt","compare_ai_citations","watch_page","get_watch","unwatch","create_content_brief","plan_redirects","share_result","render_page","get_layout_probe","analyze_layout","screen_reader_view","export_findings","measure_impact","match_intent","check_readability","check_og_tags"],"distinctSurfaces":7},"endpointFacts":[{"id":"ep_j56ea3r4b42q","url":"https://onpage.dev/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-10T20:26:56.836Z","auth":{"observedAt":"2026-10-10T20:26:57.002Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-10T20:26:57.019Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"onpage.dev","issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validFrom":"2026-10-01T12:44:27.000Z","validTo":"2026-12-30T13:44:24.000Z","daysToExpiry":79,"sanCount":3,"fingerprint256":"87:AE:47:90:DD:9F:29:BB:EF:AD:A6:0D:01:1B:AC:BA:9A:92:80:81:FE:4A:4D:7B:D0:A1:A7:B2:C2:84:7F:C9"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"dev.onpage/onpage","url":"https://registry.modelcontextprotocol.io/v0/servers/dev.onpage%2Fonpage","firstSeenAt":"2026-10-06T17:20:22.905Z","fetchedAt":"2026-10-09T14:21:07.904Z","normalizedAt":"2026-10-09T14:21:07.904Z"}]},"firstSeenAt":"2026-10-06T17:20:22.905Z","updatedAt":"2026-10-11T16:32:11.304Z"}