nPage.dev

OnPage.dev inside your AI assistant.

Ask Claude, ChatGPT or Cursor how a page does in Google and AI search. Your AI agent scans it with OnPage.dev, writes the fixes and checks they worked. Free, no account.

Or install in one clickInstall inCursorInstall inVS Code

Add it in one minute

Pick where you work. One URL, no account, no key.

Claude

  1. Open Settings, then Connectors, on claude.ai or in the desktop app.
  2. Choose Add custom connector, name it OnPage.dev and paste the server URL:
    https://onpage.dev/mcp
  3. Turn the connector on in a chat. Ask: Scan example.com with OnPage.dev. You get a score and the fixes.

Claude Code

  1. Run this once:
    claude mcp add --transport http onpage https://onpage.dev/mcp
  2. Start Claude Code and type /mcp to see onpage connected.
  3. Ask: Scan example.com with OnPage.dev. You get a score and the fixes. Want slash commands and the fix skill too? See the plugin below.

ChatGPT

  1. Open Settings, then Connectors, and turn on developer mode. Which plans can do this is up to OpenAI.
  2. Create a connector with the server URL:
    https://onpage.dev/mcp
  3. Add the connector to a chat. Ask: Scan example.com with OnPage.dev. You get a score and the fixes.

Cursor

  1. Install inCursor
  2. Or add it to ~/.cursor/mcp.json:
    {
      "mcpServers": {
        "onpage": { "url": "https://onpage.dev/mcp" }
      }
    }
  3. Open the Agent chat. Ask: Scan example.com with OnPage.dev. You get a score and the fixes.

VS Code

  1. Install inVS Code
  2. Or add it to .vscode/mcp.json:
    {
      "servers": {
        "onpage": { "type": "http", "url": "https://onpage.dev/mcp" }
      }
    }
  3. Open Copilot Chat in agent mode. Ask: Scan example.com with OnPage.dev. You get a score and the fixes.

Other clients

  1. Any client that supports remote MCP servers over HTTP works. Add the server URL:
    https://onpage.dev/mcp
  2. Many clients read this format:
    {
      "mcpServers": {
        "onpage": { "url": "https://onpage.dev/mcp" }
      }
    }
  3. Your agent already loads many servers? Use https://onpage.dev/mcp?tools=core for the 10 main tools.

Even closer to your code

The same tools, wired into where you build and ship. Docs and examples on GitHub.

In Claude Code

Plugin

The server plus /seo-check, /ai-visibility and a skill that fixes your source, checks the build before deploy and confirms after.

/plugin marketplace add seoonpage/seo-mcp-server
/plugin install onpage@onpage-dev

On every pull request

SEO gate

Scans the HTML your build produces, comments the scores on the pull request and fails below your minimum.

- uses: seoonpage/seo-mcp-server@v1
  with:
    paths: "dist/**/*.html"
    min-score: "80"

Every day

Fix guard

Checks your fix log and opens an issue with the restore code when a deploy undid a fix. Closes it once all are live.

- uses: seoonpage/seo-mcp-server/guard@v1
  with:
    fix-log-id: "YOUR_FIX_LOG_ID"

Not a report. A fix, checked and confirmed.

Your assistant runs the tools in a loop until the page is right. This is what that looks like in Claude Code.

  1. 46First scan
  2. 92Checked before deploy
  3. 94Confirmed live

Built for agents, not dashboards

And the rest of the toolbox. Every tool, step by step

Ships anywhere

Verifies templates at scale
One value pulled from up to 20 pages at once.
Checks the sitemap
Redirects, noindex and fake lastmod dates in the sitemap.
Fixes a whole section at once
One edge rule for every product page or blog post.
Ships to WordPress
Yoast and Rank Math fields, through your own connection.
Ships as a pull request
Code for Next.js, Nuxt, Astro, Vue and more.
From finding to done
One task per issue to Sheets, Slack, Notion or Jira.
Closes the loop after shipping
IndexNow for Bing, URL Inspection for Google.
Every fix in your GA4 charts
An annotation for each day fixes shipped.
Checks the code it writes
New HTML and JSON-LD tested before deploy.
Keeps watching after you ship
Daily alerts for noindex, redirects and blocked bots.

AI search

JavaScript apps readable for AI
Rendered pages served to GPTBot and ClaudeBot.
Makes AI read and quote you
AI crawler rules, llms.txt and quotable answers.
Ready for AI Mode
The sub-questions AI search fans out.
Learns from what AI already cites
What the cited pages do differently.
Wins the snippet
The answer format that wins on the pages that rank.
Multilingual and trusted
Hreflang and E-E-A-T across the site.

Diagnoses

Tames parameters and filters
Tracking, search and filter URLs that trap crawlers.
Finds duplicate pages
Near-duplicates grouped, with the page to keep.
A head that ends early
An image or iframe in the head hides your canonical.
Why Google skips a page
URL Inspection results turned into fixes.
Debugs your GA4
Double counting and tracking before consent.
Real users, real bots
Core Web Vitals and your server logs.
Sees every screen
Phone, tablet and desktop in a real browser.
Reads it like a screen reader
Every link and button without a name.
Handles JavaScript apps
React, Vue and Angular, rendered like Google.
Accessibility for the EAA
WCAG 2.1 AA, per success criterion.
Ecommerce and consent
Product markup, cookie banner, Consent Mode v2.
Local and linked
LocalBusiness, NAP and internal link equity.
Share previews that work
The real share image for Facebook, LinkedIn and X.

Made for agents

Light on context
The 10 core tools with ?tools=core.
Stable issue codes
Track every issue until it is gone.
No made-up advice
The scanner's own rules as a reference.

Strategy and data

Uses the data you already have
Fixes ranked by Search Console or Ahrefs traffic.
Ranked by revenue
GA4 conversions decide the order.
Maps your topics
Which page owns each group of queries.
Matches search intent
The page type Google ranks for the keyword.
Readability that fits the page
Reading ease against the pages that rank.
Reads every language right
The reading formula made for each language.
You vs the pages that rank
Up to 3 competitors side by side.
Briefs, migrations and proof
Content briefs, redirect plans and share links.
Launch and migration
Redirect chains and robots.txt rules tested.
Whole sites, step by step
Audits of up to 25 pages.

70 tools, one loop

Every step from finding a problem to proving the fix worked is a tool your AI agent can call. Pick a step to see what it does.

Find

What is wrong, for Google, AI search, phones and screen readers, and what matters most.

  • Scan a page

    A 0 to 100 score for one page, the issues to fix first with why and how, AI readiness and the key facts: title, description, headings, words, speed and structured data. Client-side apps are scanned as rendered.

    scan_page46/100, 5 fixes
  • Audit a whole site

    Up to 25 pages from the sitemap, or from the home page links when there is none, worked through step by step. Finds issues across the site, broken, orphan and duplicate pages, and powers link equity, internal links and edge rules.

    start_site_audit25 pages, avg 92
  • Continue the audit

    Scans the next pages of a running audit on every call, so a whole site fits a free service. When it is complete you get the issues by code with the pages they affect, plus the average score.

    get_site_audit9 of 25 scanned
  • Everything measured

    Everything OnPage.dev measures on one page, by section: speed hints from the HTML, links and anchor texts, accessibility basics, image SEO, rich results and security headers. Use it when scan_page is not detailed enough.

    deep_audit8 sections
  • Check AI visibility

    Which AI crawlers may read the page per robots.txt (GPTBot, ClaudeBot, PerplexityBot, Google-Extended and more), whether llms.txt exists, 15 checks for being quoted in AI answers, and the page as a model reads it.

    check_ai_visibility7 of 8 crawlers
  • Rank fixes by traffic

    Takes the clicks, positions and revenue from your Search Console, GA4, Ahrefs or Semrush and ranks every fix by the traffic it can win. Also explains a drop: pass last period's clicks and decaying pages come first.

    prioritize_fixes#6 → top 3, ~336 clicks
  • Compare with competitors

    Your page next to up to 3 competitors that rank for the same search: score, AI readiness, words, headings, rich results and speed side by side, the facts only they give, and the fixes to catch up.

    compare_pagesYou lead 12 of 14
  • Learn from AI citations

    With citation counts from Ahrefs Brand Radar or a similar tool, scans the pages ChatGPT, Perplexity and Google AI cite and the ones they skip, and shows which checks the cited pages pass that yours do not.

    compare_ai_citationsCited: 100% vs 0%
  • Check a focus keyword

    Eight checks for one search term: title, meta description, H1, URL, the first 100 words, subheadings, image alt texts and keyword density, with a flag for stuffing over 3%. Each check comes with a tip.

    check_focus_keyword6 of 8
  • Match search intent

    Scans the pages that rank for a keyword and works out the page type Google rewards: guide, listicle, product, category, service page, forum or video. Then tells you whether your page matches, and what to change if not.

    match_intent5 of 7 results are listicles
  • Map your topics

    Groups your Search Console queries into topics and shows which page owns each one, where two pages compete for the same topic, which topics have no page yet, and which internal links to add.

    map_topics3 topics compete
  • Ready for AI Mode

    Your assistant writes the sub-questions AI Mode and AI Overviews fan out for a topic. OnPage.dev rates each one answered, buried, partial or missing on your page and on up to 2 competitors, with the sections to add.

    check_question_coverage6 of 10 answered
  • Link equity

    Internal PageRank and click depth from a site audit: pages the home page cannot reach, pages too many clicks deep, dead ends, strong pages that pass little on, and important pages that need more links.

    map_link_equity3 pages need links
  • Audit example.com and rank the fixes by the traffic they can win.

    Your agent runsstart_site_auditprioritize_fixes

Diagnose

Specialist checks: speed, tracking, accessibility, languages, local search and what bots and screen readers really get.

  • See the first screen

    A real browser on phone, tablet and desktop: is the H1 and call to action visible, does a cookie wall cover it. With screenshots. With screenshots, plus design checks such as low contrast and uneven spacing.

    render_pageCTA below the fold
  • Read it like a screen reader

    The page the way screen readers and browsing AI agents read it, from the accessibility tree: landmarks, the heading outline, and every link, button, image and field with the name it gets, including the ones announced as just "link".

    screen_reader_view3 links without a name
  • Check the entity graph

    How the structured data describes who and what the page is about, the way AI knowledge graphs read it: which entities there are, how they connect, dead profile links, and the JSON-LD that is missing.

    check_entity_graph5 entities, 2 fixes
  • Find quotable answers

    Finds the passages on a page that best answer a question, the way AI answer engines pick text to quote, with their length and fit. Shows whether the answer is easy to lift out or buried in a long block.

    find_answer_passagesBest passage, 64 words
  • Check readability

    Reading ease with the formula made for the page language, measured against the right target: the pages that rank for the keyword, or the norm for the page type. Lists the sentences that are hardest to read.

    check_readability59 vs 52, 5 sentences to rewrite
  • Check the share card

    Every Open Graph and Twitter Card tag, and the share image itself: does it load, its real size in pixels, type and weight, against what Facebook, LinkedIn, X, WhatsApp and Slack need. Also a free REST API.

    check_og_tagsImage 404, score 73
  • Debug GA4 tracking

    Opens the page in a real browser and captures the hits it really sends to Google: on a first visit, after accepting cookies and on a return visit. Finds double counting, tracking before consent, a banner that never updates Consent Mode and debug mode left on.

    check_ga4_tracking2 page_views per load
  • Real-user speed

    Core Web Vitals from real Chrome visitors, the field data Google uses: LCP, INP, CLS, FCP and TTFB on phone and desktop, with a pass or fail and the share of good visits. For the trend over time, use check_vitals_trend.

    check_web_vitalsLCP 2.1 s, passed
  • Read the server logs

    Reads your server access log lines and shows what Googlebot, Bingbot and AI crawlers really request: hits per bot, the errors and redirects they get, crawl budget lost on parameters, and sitemap pages Googlebot never visits.

    analyze_logsGPTBot: 9% errors
  • Accessibility for the EAA

    A WCAG 2.1 AA report for the European Accessibility Act, every check mapped to its success criterion: language, alt texts, form labels, link names, headings and contrast, plus a list of what to test by hand.

    check_accessibility4 criteria fail
  • Cookie banner and Consent Mode

    Quick check of the cookie setup from the HTML: which consent platform runs, whether Consent Mode v2 is set to denied before the tags load, and whether the v2 signals are there. For live hits, use check_ga4_tracking.

    check_consentdefault set too late
  • Product pages

    Product structured data checked for Google: name, image, price, currency and availability, identifiers like SKU and GTIN, shipping and returns, variants, and the fields merchant listings need. Missing values come with the fix.

    check_product_pageno shippingDetails
  • Win the snippet

    For a question people search, finds the section that answers it on the pages that rank and on yours, and compares the format: a paragraph and its length, a list and its items, or a table. Then tells you how to rewrite yours.

    check_answer_formatWinning: list of 7
  • Multilingual sites

    Valid language and region codes, x-default and the self-reference on a multilingual page, then every language version: does it load, is it indexable, does it link back, and do the canonical and html lang match. Writes the corrected tag set.

    check_hreflang1 missing return tag
  • Trust signals

    The trust signals Google and AI models look for across the site: About, Contact, Privacy and Terms pages, email, phone and address, company and VAT numbers, Organization markup and social profiles, and on articles the author and dates.

    check_trust_signals6 of 8 pass
  • Local SEO

    For a business with a location: LocalBusiness markup with address, phone, opening hours and geo, whether name, address and phone match the pages, a Google Business Profile link, a map, and a page per location. Writes corrected JSON-LD.

    check_local_seoNAP mismatch: phone
  • Why Google skips a page

    Search Console URL Inspection results turned into causes, fixes and the next tool: noindex, robots.txt, a canonical Google ignores, crawled but not indexed. Fetch the rows with your own Search Console tool.

    explain_index_status12 crawled, not indexed
  • Find duplicate pages

    Groups the pages of a site audit by text similarity and shows which ones say almost the same thing, with their titles, words and canonicals. Per group the page to keep, and whether to merge with a 301, set a canonical or rewrite.

    find_duplicate_content2 groups, 5 pages
  • Tame parameters and filters

    Classifies every query parameter in the site's links as tracking, session, search, sort, pagination or filter, and finds crawl traps: tracking in internal links, crawlable search results, filter combinations and pagination that canonicalises to page 1. Writes the robots.txt rules.

    check_url_parametersutm in 14 internal links
  • Our GA4 numbers look doubled. Check the tracking and whether the cookie banner passes consent on.

    Your agent runscheck_ga4_trackingcheck_consent

Fix

Ready code and plans, written from the page itself.

  • Get the fix code

    The fixes for every issue: as HTML to paste, as a pull request, applied in WordPress, or served at the edge by a Cloudflare Worker on any CMS.

    get_fix_pack<title>, <meta>, canonical
  • Generate structured data

    Writes JSON-LD for Article, Product, FAQPage, Organization or BreadcrumbList from the page's own content and checks it against Google's rich result rules. Values it cannot read are marked TODO, so nothing is guessed.

    generate_schemaProduct: eligible
  • Write an llms.txt

    A ready-to-upload llms.txt built from the sitemap and home page: the site name, a short summary, and the main pages grouped by section with their titles. Check it afterwards with validate_llms_txt.

    generate_llms_txtllms.txt, 42 pages
  • Set the AI crawler rules

    Writes robots.txt rules for 13 AI crawlers from a policy you choose: allow all, AI search only, block training, or block all. Merged into the site's current robots.txt, so your existing rules stay in place.

    ai_crawler_policy13 bots, merged
  • Plan the redirects

    For a migration or a restructure: matches old URLs to new ones by path and title with a confidence score, lists the ones to check by hand, and writes the rules for _redirects, nginx, Apache or Next.js.

    plan_redirects212 matched, 9 to review
  • Write titles that fit

    Shows how a title and meta description appear in Google: the pixel width against the cut-off on desktop and mobile, and the truncated text a searcher would see. Iterate on variants until they fit.

    check_snippet612 px, cut off
  • Brief the next page

    A writing brief for a search term from the pages that rank for it: the subtopics and questions they cover, the facts and figures they give, the length and the schema they use, and what your page could add.

    create_content_brief8 topics, 5 questions
  • Suggest internal links

    From a site audit, which existing pages should link to a page and with what anchor text, based on shared topics. Works for a new page too, by topic, so it gets links from the day it goes live.

    suggest_internal_links3 links to add
  • Fix a whole section at once

    From a site audit, one Cloudflare Worker rule per section: titles, descriptions, canonicals and social tags fixed on every matching page, with a preview. Only missing or out-of-range values change.

    build_edge_rules/products/*: 212 pages
  • Make a JavaScript app readable for AI

    A Worker that serves GPTBot, ClaudeBot and PerplexityBot the rendered page from your own Cloudflare account, while visitors and Google get the normal one. It says so when a page does not need it.

    get_prerender_worker12 → 900 words for GPTBot
  • Write the fixes for our pricing page and the JSON-LD it is missing.

    Your agent runsget_fix_packgenerate_schema

Check

Test the work before it goes live, then confirm it on the live page.

  • Scan HTML before deploy

    Scans HTML that is not live yet: a local build, a template or a draft from your editor. The same score and issues as scan_page, so your agent can check its own work before anything is deployed.

    scan_html92/100 before deploy
  • Compare two versions

    An SEO diff between two versions of a page, for example before and after a code change: the score change, issues fixed and introduced, and regressions like a stray noindex or a lost canonical, flagged before merging.

    compare_html72 → 18, noindex added
  • Validate JSON-LD

    Checks JSON-LD before you publish it: JSON syntax, @context and @type, full URLs, ISO dates, valid prices and currency codes, and Google's required and recommended fields for each rich result.

    validate_schema2 errors
  • Validate llms.txt

    Checks a site's llms.txt against the llmstxt.org format: served as plain text, one H1 with the site name, a summary, sections with proper links, its size, and whether the links it lists actually load.

    validate_llms_txtValid, 3 sections
  • Test robots.txt

    May Googlebot, GPTBot or ClaudeBot fetch this URL? Tests it against the live robots.txt with Google's own matching rules, and shows the exact user-agent group and rule that decides, so you know what to change.

    test_robotsBlocked by /search?
  • Check redirects

    Status codes and the full redirect chain for up to 20 URLs at once, and where each one ends up. Give the expected targets after a migration and every URL that lands somewhere else is flagged.

    check_urls19 of 20 OK
  • Confirm it is fixed

    Scans a live page again and compares it with the previous scan: the score change, the issues that got fixed, new issues that appeared and the change in AI readiness. The proof that a deploy did what it should.

    rescan_and_compare46 → 94
  • Measure in your own browser

    A small measurement script for your own browser tool, such as Claude in Chrome or Playwright, for staging sites, localhost and pages behind a login, where OnPage.dev cannot reach. No daily limit.

    get_layout_probeNo daily limit
  • Analyse those measurements

    Runs the first-screen checks of render_page on the results from your own browser: is the H1 and call to action visible, pop-ups and cookie walls, tap targets, small text and what crawlers without JavaScript miss.

    analyze_layout3 devices
  • Check the sitemap

    Finds the sitemap through robots.txt, follows the index and checks the format, the 50,000 URL limit, foreign hosts and lastmod dates that are all the same. Then checks a sample of URLs for redirects, errors, noindex and canonicals elsewhere, with corrected entries.

    check_sitemap4 of 12 URLs do not belong
  • Pull a value from many pages

    Custom extraction for up to 20 pages: a CSS selector, a regular expression or a JSON-LD path such as Product.offers.price. See which pages have the value, which miss it and how many distinct values there are, to verify a template fix at scale.

    extract_from_pages18 of 20 have a price
  • Check the new build before we deploy, and confirm the live page after.

    Your agent runsscan_htmlrescan_and_compare

Act

Hand the plan to the tools your team already works in.

  • Send it to the team

    Google Sheets rows and a CSV link, a Slack message, one task per issue for Linear, Jira or Asana, and a checklist. Your agent sends it with the tools it already has.

    export_findingsSheet, Slack, 12 tasks
  • Share the before and after

    Scans a page again and publishes a shareable proof page on onpage.dev with the score before and after, the issues fixed and the ones still open. Made for clients. Not indexed, and it expires after 90 days.

    share_result46 → 94, shareable
  • Log what shipped

    Records every fix that shipped with its old and new value, the date and how it went out. OnPage.dev then keeps it live, measure_impact saves the result per fix, and get_fix_log turns it into a client report.

    log_fix4 fixes logged, all live
  • Tell search engines

    Tells Bing, Yandex, Naver, Seznam and Yep that the fixed pages changed, so they recrawl within minutes instead of days. The first call sets up the key file to upload. For Google, use URL Inspection in Search Console.

    submit_indexnow12 URLs accepted
  • Put every fix in a Google Sheet and post the summary in #seo.

    Your agent runsstart_site_auditexport_findings

Watch

Catch what breaks after launch.

  • Watch a page

    A daily check for regressions, with a private RSS feed and optional Slack or Discord alerts. Watch a competitor and every change they make comes with the counter-move for your page.

    watch_pagenoindex added, alert sent
  • Read the history

    Every change found on a watched page, newest first: the page going down or redirecting, a new noindex, blocked AI crawlers, a changed canonical or title, the score dropping, new and fixed issues, and the counter-moves for competitors.

    get_watch3 changes this week
  • Stop watching

    Stops a watch and deletes its history, including the private RSS feed. Each connection can watch 3 pages at a time, so use it to swap a finished page for the next one you want to keep an eye on.

    unwatchStopped
  • Keep fixes live

    Every logged fix is checked about every 6 hours. When a deploy undoes one, the restore code goes to your webhook or, with the fix guard GitHub Action, into an issue in your repo.

    get_fix_log1 undone, restore ready
  • Feed a live dashboard

    Picks the home page and up to 10 key pages and checks them every day: score, AI readiness, issues with their codes, AI crawler access and Core Web Vitals per week. The history builds up for dashboards and client reports.

    create_dashboard_feed10 pages, checked daily
  • Keep an eye on our top pages and tell me in Slack if something breaks.

    Your agent runswatch_page

Measure

Prove what the fixes did for traffic.

  • Measure the impact

    Search Console, GA4 or Ahrefs numbers from before and after, against pages you did not touch, so seasonality is not counted as your win. With a fix log, the result is saved per fix.

    measure_impact+66% clicks vs control
  • Find why traffic dropped

    Two periods from Search Console, compared page by page: lost rankings, lower search demand, fewer clicks at the same position because of an AI Overview, or pages that dropped out. Ranked by lost clicks, with the next tool per cause.

    diagnose_traffic_drop3 pages lost rankings
  • Find pages nobody clicks

    Results on page 1 whose click-through rate is far below normal for their position, with the clicks a better title and description could win. Quick wins that need no ranking change, tested with check_snippet.

    find_ctr_gaps+700 clicks from 4 titles
  • Find queries almost on page 1

    Queries at positions 8 to 20 with real impressions, grouped per page, with the clicks a move into the top 5 could win and the pages that compete for the same query. The fastest ranking wins first.

    find_striking_distance23 queries, +1,900 clicks
  • See speed change over time

    Core Web Vitals from real Chrome users, weekly for about 9 months, on phone and desktop. Give the date a speed fix went live and see the weeks before and after, and since when each metric passes.

    check_vitals_trendLCP 4.2 s → 2.2 s since July
  • Prove the AI citations

    How often AI assistants cited your pages before and after the fixes, per engine, against pages you did not change, so a general rise in AI traffic is not counted as your result.

    measure_ai_citations+190% vs control
  • Fill the dashboard

    The feed as clean tables: overview, pages, issues over time, open issues, vitals, AI access and fixes. Dates and full URLs, so they join with GA4 and Search Console or their BigQuery exports in Claude Dashboards.

    get_dashboard_data90 days, 7 datasets
  • Build the SEO command center

    A complete blueprint for a live dashboard in Claude: realtime visitors from your own GA4, traffic from Search Console, and SEO health, fixes, speed and AI visibility from OnPage.dev, with ready BigQuery SQL and the prompt.

    build_seo_dashboardRealtime + SEO, one view
  • Did last month’s fixes win us more clicks than the pages we did not touch?

    Your agent runsmeasure_impact

Try asking

Limits and privacy

  • Only public pages are scanned, and only the HTML the server returns. Scans are read-only and change nothing on the site.
  • About 20 scans per minute per connection, with a shared cap for everyone. No account and no key.
  • No page content is stored. Traffic numbers passed to prioritize_fixes are used for that answer only. Your assistant receives the results; what it does with them falls under its own privacy rules.