OnPage.dev
by onpage.dev in Other
Free SEO MCP that closes the loop: find, fix, ship as a PR or to WordPress, prove. 70 tools, no key.
https://onpage.dev/mcp
Last 30 days
- Uptime
- 100%
- Response time
- 246 ms typical, 246 ms slowest 5%
- Last check
- 4 h ago
- Next check
- in 2 h
How to call it
Add it to any MCP client that supports remote servers.
{
"mcpServers": {
"onpage-dev": {
"type": "http",
"url": "https://onpage.dev/mcp"
}
}
}70 tools
- scan_page
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, description, headings, words, speed, structured data). Client-side apps (React, Angular, Vue) are loaded in a real browser
- check_ai_visibility
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 content is for AI answers (15 checks, including fact density, cited outside sources, whether question headings get a di
- check_focus_keyword
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 stuffing over 3%). Returns 8 checks with a tip each.
- get_fix_pack
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 Worker. Generate ready-to-paste fixes for the issues on a page, built from the page's own content: a title tag, meta descrip
- check_web_vitals
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, on phones and desktops, each rated good, needs improvement or poor. Falls back to the whole site when the page has too li
- analyze_logs
Analyse server access log lines to see what Googlebot, Bingbot and AI crawlers (GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-User, PerplexityBot, Applebot, Meta, Amazon, ByteDance, CCBot) actually request: hits per bot, the pages they crawl most, errors and redirects th
- submit_indexnow
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, call it without key: it returns a key and the file to put on the site (ship it with the user's Git or WordPress tools)
- check_accessibility
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 button names, headings, page title, zoom, landmarks and frames, each mapped to its WCAG success criterion. Contrast, re
- check_answer_format
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 compare the format: a paragraph (and its length), a list (and its items) or a table (and its rows). Returns the format th
- check_consent
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 consent setup from its HTML: which consent platform runs (Cookiebot, OneTrust, Usercentrics, CookieYes, Complianz, Didomi a
- check_product_page
Check an ecommerce product page for Google: Product structured data with name, image, price, currency and availability, identifiers (SKU, GTIN, MPN, brand), shipping and return policy for merchant listings, ratings, variants (ProductGroup), out-of-stock handling, breadcrumbs, and
- map_topics
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 topics have no page that targets them, and which internal links would strengthen the owner page. Fetch Search Console rows by
- check_question_coverage
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 source for each. Before calling, write the sub-questions an AI search engine would ask for the topic yourself: 8 to 20 sho
- check_hreflang
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 it return 200, is it indexable, does its canonical point to itself, does it link back (return tags) and does its html l
- check_trust_signals
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, address), privacy and terms pages, company identifiers (Chamber of Commerce, VAT), Organization markup with logo and profile
- check_local_seo
Check a local business site for Google Maps and local search: LocalBusiness markup (most specific type, address, phone, opening hours, geo coordinates), whether name, address and phone (NAP) in the markup match what the pages show, a link to the Google Business Profile, a map, th
- map_link_equity
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 pages the home page cannot reach, pages too many clicks deep, dead ends that pass nothing on, strong pages that link to few
- check_ga4_tracking
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 on a live page in a real browser, the way Tag Assistant would: which GA4 measurement IDs (G-), Google Tag Manager contain
- log_fix
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, robots, H1, Open Graph, hreflang, JSON-LD type, redirect target), sends the restore code to a webhook when a deploy undoes
- get_fix_log
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 measure_impact ran with this fix_log_id, and a rollback plan (the old value back) for fixes that made a page do worse. format
- explain_index_status
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 next OnPage.dev tool to run. Fetch them with the user's Search Console tool: for each URL its coverageState, verdict, in
- build_edge_rules
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 finished site audit, writes one Cloudflare Worker with a rule per section that fixes missing or badly sized titles and meta des
- get_prerender_worker
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 empty page. Checks the page first, then writes a Cloudflare Worker that serves those crawlers the rendered HTML (made wit
- diagnose_traffic_drop
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, and pass them here. Separates the causes per page: lost rankings, lower search demand or seasonality, a lower click-thro
- find_ctr_gaps
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), finds results on page 1 whose click-through rate is well below normal for their position, and estimates the clicks a better
- find_striking_distance
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, groups them per page, estimates the clicks a move into the top 5 could win, and flags queries where two pages compete. Ne
- check_vitals_trend
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 percentile from Google's Chrome UX Report history, weekly for about 9 months, on phone and desktop. With change_date it comp
- measure_ai_citations
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 connected in the chat), for the pages you changed and a few you did not as a control group. Compares the change per pag
- check_sitemap
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, the 50,000 URL and 50 MB limits, URLs on another host or protocol, and lastmod dates (missing, in the future, or all the
- extract_from_pages
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 (with an optional attribute, for example meta[property='og:image'] with content), a regular expression, or a JSON-LD path su
- find_duplicate_content
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 similarity (near-duplicates from about 75% the same), with their titles, word counts and canonicals, and per group the page
- check_url_parameters
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 internal links (and in URLs you pass from server logs or Search Console) as tracking, session, internal search, sort, p
- create_dashboard_feed
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 (score, AI readiness, errors and warnings with their codes, AI crawler access, and Core Web Vitals per week), ready for get
- get_dashboard_data
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 full page URLs, so it joins with GA4 and Search Console data or their BigQuery exports. Datasets: overview (site score, AI
- build_seo_dashboard
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 user's own GA4 connection (active users per minute, pages, events, countries, devices), traffic from GA4 or Search Conso
- scan_html
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 scan_page. Pass the full HTML document; url is optional and only used to resolve relative links. Use this in coding assist
- rescan_and_compare
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 deploying fixes to confirm they worked, or to catch regressions such as a robots.txt change that suddenly blocks AI crawlers.
- check_snippet
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 network call. Use it to iterate on title and description variants until they fit.
- generate_schema
Writes validated JSON-LD for Article, Product, FAQPage, Organization or BreadcrumbList. For LocalBusiness use check_local_seo; to check JSON-LD you wrote yourself use validate_schema. Generate a JSON-LD block for a page from its own content and validate it against Google's rich r
- find_answer_passages
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 count and whether they are a quotable length (40 to 90 words). Use the result to judge whether the page answers the quest
Security scan
- No findings. We scan names, descriptions and tool definitions for hidden instructions and other prompt-injection patterns.
Recent checks
| When | Result | HTTP | Time |
|---|---|---|---|
| 4 h ago | Passed | 200 | 246 ms |
| 12 h ago | Passed | 200 | 393 ms |