Skip to content

online.pageaudit/pageaudit

by pageaudit.online · remote · no sign-in to list tools · v1.0.1 · published by online.pageaudit

Technical SEO, passive security and page-delivery audits with evidence and suggested fixes.

Deletes · 10Changes · 28

55 tools: 10 can delete or cancel things, 28 change things and 17 only read.

Scanned Oct 21, 2026

8 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http pageaudit https://pageaudit.online/mcp

Findings

Matches of fixed checks, with the text they matched.

5 warn3 info
  • The server marks "track_search_queries" destructive (destructiveHint: true), and its name says "search", a word for reading.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":false}; The name "track_search_queries" says "search": a word for reading.

    What this check looks for
  • The server marks "disconnect_search_console" destructive (destructiveHint: true), and its name says "search", a word for reading.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":false}; The name "disconnect_search_console" says "search": a word for reading.

    What this check looks for
  • The server marks "ai_search_visibility" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "ai_search_visibility" says "search": a word for reading.

    What this check looks for
  • The server marks "preview_domain_alerts" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "preview_domain_alerts" says "preview": a word for reading.

    What this check looks for
  • The server marks "get_tool" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "get_tool" says "get": a word for reading.

    What this check looks for
  • The input schema at properties.url.description mentions "credentials".

    Matched text

    inputSchema.properties.url.description: "Public HTTP(S) URL, without credentials."

    What this check looks for
Show 2 more findings

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

55 tools

Deletes or cancels 10Claude Code: deny
  • apply_domain_alertsRequires the account session, current X-Organization-Id and CSRF for writes.No findings

    Why it is in this group

    • The name "apply_domain_alerts" says "apply": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Requires the account session, current X-Organization-Id and CSRF for writes. Apply the reviewed selection. Requires the preview from preview_domain_alerts. A stale preview changes nothing. Select up to 25 saved pages. Repeated registrable domains count once. The server checks the account, organization and current revisions again. A stale preview changes nothing.

    Annotations the server declares

    • title: Apply domain alerts
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • cancel_connection_reviewRequires the account session, current X-Organization-Id and CSRF for writes.No findings

    Why it is in this group

    • The name "cancel_connection_review" says "cancel": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Requires the account session, current X-Organization-Id and CSRF for writes. Cancel the current TLS review and preserve completed evidence. One review per account, organization, origin and UTC day. Starting requires current domain monitoring rights. The account has three starts per UTC day. Retries return the same review. The scanner samples one public IP, with three stages and a 170-second deadline. Partial results do not establish safety. GET never starts a scan. The shared realtime channel reports stage changes. Reports expire after 26 hours.

    Annotations the server declares

    • title: Cancel connection review
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • configure_domain_dnsRequires the account session, current X-Organization-Id and CSRF for writes.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Requires the account session, current X-Organization-Id and CSRF for writes. Set up to three known DKIM selectors and choose whether IP rotation is expected. Expected rotation keeps history without notices; alias changes still notify. Does not discover selectors, enable monitoring or authenticate sent messages. Send manual_expires_on, dns, or both. Omitted settings are preserved. DNS requires both selectors and rotating_addresses. An identical retry is idempotent. A conflicting revision returns 409.

    Annotations the server declares

    • title: Configure domain DNS
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • configure_domain_monitorRequires the account session, current X-Organization-Id and CSRF for writes.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Requires the account session, current X-Organization-Id and CSRF for writes. Enable or stop domain monitoring, or pause notices for maintenance. Count a registry domain once per account, including its organization copies. Add only the tab's origin. HTTP receives DNS checks only. Maintenance pauses notices while collection continues. Confirm enabled, no suspension and next_check_at after saving.

    Annotations the server declares

    • title: Configure domain monitor
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
  • disconnect_search_consoleRemove the local Google credential and stop collection.2 findings

    Why it is in this group

    • The name "disconnect_search_console" says "search": a word for reading.
    • The description's first verb is "remove": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).

    Findings

    • Info

      The description mentions "credential".

      Matched text

      description: "Remove the local Google credential and stop collection. Keep the last good..."

      What this check looks for
    • Warn

      The server marks "disconnect_search_console" destructive (destructiveHint: true), and its name says "search", a word for reading.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":false}; The name "disconnect_search_console" says "search": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Remove the local Google credential and stop collection. Keep the last good sample. The last good sample stays available. An in-flight callback or collection cannot reconnect the site.

    Annotations the server declares

    • title: Disconnect search console
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • save_ai_search_queriesSave up to ten searches for the weekly report to track (three without a watch package).No findings

    Why it is in this group

    • The name "save_ai_search_queries" says "save": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Save up to ten searches for the weekly report to track (three without a watch package). Saves use the expected version. Without a current watch package, an account tracks up to three searches. Uses the shared 240 writes per site and UTC day.

    Annotations the server declares

    • title: Save ai search queries
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • save_weekly_site_reportTurn the weekly report of a site on or off and set up to 3 competitors.No findings

    Why it is in this group

    • The name "save_weekly_site_report" says "save": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Turn the weekly report of a site on or off and set up to 3 competitors. Turning on needs a watch package in force. Turning on needs a watch package in force and a free site in it (409 with `limit` and `plans` otherwise). The first report runs right away; later ones run a week after the last. A new competitor gets its base this week and its new pages from the next. Saves use the expected version.

    Annotations the server declares

    • title: Save weekly site report
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • set_domain_expiryRequires the account session, current X-Organization-Id and CSRF for writes.No findings

    Why it is in this group

    • The name "set_domain_expiry" says "set": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Requires the account session, current X-Organization-Id and CSRF for writes. Set or remove the private manual expiry. Send manual_expires_on, dns, or both. Omitted settings are preserved. DNS requires both selectors and rotating_addresses. An identical retry is idempotent. A conflicting revision returns 409.

    Annotations the server declares

    • title: Set domain expiry
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • track_search_queriesReplace the site's tracked query selection (up to 20).1 finding

    Why it is in this group

    • The name "track_search_queries" says "search": a word for reading.
    • The description's first verb is "replace": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    Findings

    • Warn

      The server marks "track_search_queries" destructive (destructiveHint: true), and its name says "search", a word for reading.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":false}; The name "track_search_queries" says "search": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Replace the site's tracked query selection (up to 20). Read search_console first to preserve existing selections. Removed queries keep their stored history. E-mail alerts require an active site package. Accepts up to 20 exact queries. Removed queries become inactive; their stored history is retained. Saving schedules the Search Console connection for collection. E-mail delivery requires an active site package.

    Annotations the server declares

    • title: Track search queries
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • watch_tabTurns the daily watch on or off for a tab: it re-audits the page once a day and e-mails when the score drops or a new error/warning appears.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Turns the daily watch on or off for a tab: it re-audits the page once a day and e-mails when the score drops or a new error/warning appears. Needs the signed-in account (its browser session cookie); a guest token gets 403 `account_required`. With `monitor: true` the page is re-audited once a day and an e-mail goes out when the score drops or a new error/warning appears — never on an improvement. Watching needs an account (the alert has to reach someone) and each account watches a limited number of pages.

    Annotations the server declares

    • title: Watch tab
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
Changes things 28Claude Code: ask
  • acknowledge_domain_eventRequires the account session, current X-Organization-Id and CSRF for writes.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Requires the account session, current X-Organization-Id and CSRF for writes. Acknowledge an expected event. Suppress its notice only if sending has not started. Preserve the event and its evidence. Preserve the event and observation. Acknowledgement does not erase a confirmed risk or retract a sent notice. Repetition is idempotent.

    Annotations the server declares

    • title: Acknowledge domain event
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • add_siteAdd a site to the account.1 finding

    Why it is in this group

    • The name "add_site" says "add": a word for a change.

    Findings

    • Info

      The input schema at properties.url.description mentions "credentials".

      Matched text

      inputSchema.properties.url.description: "Public HTTP(S) URL, without credentials."

      What this check looks for
    Description, as the server wrote it
    Add a site to the account. No site count limit. An account holds up to 1,000 sites (409 site_limit). The existing guest audit workspace stays separate.

    Annotations the server declares

    • title: Add site
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • ai_search_visibilityCheck whether the site's page appears in AI search for each target search, at which position, and which sites appear in its place, with plain recommendations.1 finding

    Why it is in this group

    • The name "ai_search_visibility" says "search": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    Findings

    • Warn

      The server marks "ai_search_visibility" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "ai_search_visibility" says "search": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Check whether the site's page appears in AI search for each target search, at which position, and which sites appear in its place, with plain recommendations. Uses the saved searches or the ones the page suggests when queries is omitted. Send {} to use the saved searches, or the searches the page title and H1 suggest; send {queries} to choose. One index check plus one search per query, each USD 0.00075 when it returns results. Without a watch package: one run per week, three searches. With one: twenty runs per UTC day, ten searches. Result titles and snippets are third-party data.

    Annotations the server declares

    • title: Ai search visibility
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • api_indexDiscovers the whole PageAudit API (self-describing index).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Discovers the whole PageAudit API (self-describing index).

    Annotations the server declares

    • title: API index
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • audit_siteCheck the first 20 URLs of a site's sitemap: status, redirects, robots.txt, noindex, canonical, titles and descriptions.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Check the first 20 URLs of a site's sitemap: status, redirects, robots.txt, noindex, canonical, titles and descriptions. Free, without an account. The same site within one hour returns the stored sample. URLs of another host are counted, never requested. The free sample of the SEO audit. URLs of another host are counted, never requested. The same site within one hour returns the stored sample (`cached_at`) without requesting the site again and without spending the allowance.

    Annotations the server declares

    • title: Audit site
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • audit_urlCheck a web page's search metadata, crawl access, structured data and selected discovery files.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Check a web page's search metadata, crawl access, structured data and selected discovery files. Return evidence, limits and suggested changes without creating a saved tab. A blocked target returns HTTP 502 with target_blocked. The report does not certify security or accessibility. This is the product for agents. The free alternative: a person signs in with an account to get the trial.

    Annotations the server declares

    • title: Audit URL
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • check_ai_accessRequest a page as Googlebot, Bingbot and the AI crawlers (OAI-SearchBot, Claude-SearchBot, PerplexityBot, ChatGPT-User, GPTBot, ClaudeBot) and see who gets a 403, a 429 or a firewa…No findings

    Why it is in this group

    • The description's first verb is "request": a word for a change.
    Description, as the server wrote it
    Request a page as Googlebot, Bingbot and the AI crawlers (OAI-SearchBot, Claude-SearchBot, PerplexityBot, ChatGPT-User, GPTBot, ClaudeBot) and see who gets a 403, a 429 or a firewall challenge that robots.txt does not show. Also returns the date of the newest sitemap lastmod and whether Cloudflare is in front. Free, without an account. The same page within one hour returns the stored result. The page is requested with the published user agent of Googlebot, Bingbot, OAI-SearchBot, Claude-SearchBot, PerplexityBot, ChatGPT-User, GPTBot, ClaudeBot, and once as a browser. A 403, a 429 or a firewall challenge that only a crawler gets is the block that robots.txt does not show. The sitemap is the one that robots.txt declares, or `/sitemap.xml`; it is stale when its newest `lastmod` is more than 30 days old. Limit: Cloudflare recognises the real crawler by its IP address, so a rule that trusts verified bots can treat the real crawler differently. The same page within one hour returns the stored result (`cached_at`) without requesting the site again.

    Annotations the server declares

    • title: Check ai access
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • check_domainRefresh due registration, contacts, TLS, DNS, mail policies, certificate issuance and a limited DNS/TLS sample.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Refresh due registration, contacts, TLS, DNS, mail policies, certificate issuance and a limited DNS/TLS sample. Reuses fresh public data. Reuse fresh observations. A failed or partial query preserves the last complete observation and its date. Up to 100 cold page reads per owner and UTC day.

    Annotations the server declares

    • title: Check domain
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • connect_search_consoleStart read-only Google consent.No findings

    Why it is in this group

    • The name "connect_search_console" says "search": a word for reading.
    • The description's first verb is "start": a word for a change.
    Description, as the server wrote it
    Start read-only Google consent. The account owner must follow redirect in their browser. Follow redirect in the account's browser. Consent expires after five minutes. The callback is single-use and bound to the account and site. The property must match the site and Google must authorize it before the connection is saved.

    Annotations the server declares

    • title: Connect search console
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • connection_reviewRequires the account session, current X-Organization-Id and CSRF for writes.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Requires the account session, current X-Organization-Id and CSRF for writes. Read today's private TLS review without starting a scan. One review per account, organization, origin and UTC day. Starting requires current domain monitoring rights. The account has three starts per UTC day. Retries return the same review. The scanner samples one public IP, with three stages and a 170-second deadline. Partial results do not establish safety. GET never starts a scan. The shared realtime channel reports stage changes. Reports expire after 26 hours.

    Annotations the server declares

    • title: Connection review
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • contactWrite to the people behind the product: a question, or a sponsorship/partnership/advertising proposal.No findings

    Why it is in this group

    • The description's first verb is "write": a word for a change.
    Description, as the server wrote it
    Write to the people behind the product: a question, or a sponsorship/partnership/advertising proposal. One route for a question and for a sponsorship, partnership or ad proposal (`tipo`, with the placements of `GET /api/partners`). One message every 10 seconds per network: one that arrives sooner waits its turn and then goes out — no error. The message reaches the team by e-mail, with `email` as the reply address. For voice, send multipart/form-data: `dados` is this JSON (up to 32 KiB), and `audio` is one WebM, Ogg or M4A audio file (up to 2 MB). Audio can replace message. The browser records up to two minutes. Audio is attached to the owner's e-mail.

    Annotations the server declares

    • title: Contact
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_guestCreates a guest token pa_… for the tab workspace.No findings

    Why it is in this group

    • The name "create_guest" says "create": a word for a change.
    Description, as the server wrote it
    Creates a guest token pa_… for the tab workspace. Keep the token: it is the identity of the tabs and of the audits tied to them.

    Annotations the server declares

    • title: Create guest
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_tabOpens a saved URL.No findings

    Why it is in this group

    • The name "create_tab" says "create": a word for a change.
    Description, as the server wrote it
    Opens a saved URL. Set queue_audit=false to monitor a discovered origin without a page audit.

    Annotations the server declares

    • title: Create tab
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • domain_historyRequires the account session, current X-Organization-Id and CSRF for writes.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Requires the account session, current X-Organization-Id and CSRF for writes. Read up to 50 private incidents with notice delivery. Send the last event number as before for the next page. A first observed risk is an initial incident, not evidence of an external change. The first DNS and certificate-issuance snapshots are silent baselines. DNS changes, incompatible server samples and connection failures need two distinct observations. Expected IP rotation is silent. Repeated observations do not duplicate a notice. Contact changes expose field states only. Issuance does not prove installation. DNS records do not prove authentication of sent mail.

    Annotations the server declares

    • title: Domain history
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • domain_portfolioRequires the account session, current X-Organization-Id and CSRF for writes.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Requires the account session, current X-Organization-Id and CSRF for writes. Read cached domain monitoring and deadlines for selected saved pages. Does not start external collection or activate monitoring. Every tab must belong to the current account and organization. Repeat with the next group of IDs for a larger workspace.

    Annotations the server declares

    • title: Domain portfolio
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • embed_snippetThe embeddable widget's snippet, already assembled with the site's name and colour — one script tag, no account, no lead capture.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    The embeddable widget's snippet, already assembled with the site's name and colour — one script tag, no account, no lead capture. One script tag puts the audit form on your own site, with your name and colour, and no account or key. Send the same query you would send to `/embed` and the answer comes back with `snippet` already assembled. The widget never asks the visitor for an e-mail.

    Annotations the server declares

    • title: Embed snippet
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • generate_domain_fix_promptGenerate a fix prompt from saved domain observations.No findings

    Why it is in this group

    • The name "generate_domain_fix_prompt" says "generate": a word for a change.
    Description, as the server wrote it
    Generate a fix prompt from saved domain observations. Prepare a coding-agent prompt from an owned report within the free allowance or active plan. Read prompt_allowance first. A check uses one unit; full uses three. Preserve request_id for retries.

    Annotations the server declares

    • title: Generate domain fix prompt
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • generate_fix_promptPrepare a coding-agent prompt from an owned report within the free allowance or active plan.No findings

    Why it is in this group

    • The name "generate_fix_prompt" says "generate": a word for a change.
    Description, as the server wrote it
    Prepare a coding-agent prompt from an owned report within the free allowance or active plan. Read prompt_allowance first. A check uses one unit; full uses three. Preserve request_id for retries.

    Annotations the server declares

    • title: Generate fix prompt
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • generate_site_fix_promptGenerate a fix prompt for a weekly finding or a Search Console opportunity.No findings

    Why it is in this group

    • The name "generate_site_fix_prompt" says "generate": a word for a change.
    Description, as the server wrote it
    Generate a fix prompt for a weekly finding or a Search Console opportunity. Prepare a coding-agent prompt from an owned report within the free allowance or active plan. Read prompt_allowance first. A check uses one unit; full uses three. Preserve request_id for retries.

    Annotations the server declares

    • title: Generate site fix prompt
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • get_toolCopy and checks of one micro-tool by slug (e.g.1 finding

    Why it is in this group

    • The name "get_tool" says "get": a word for reading.
    • The description's first verb is "copy": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "get_tool" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "get_tool" says "get": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Copy and checks of one micro-tool by slug (e.g. title-tag-checker).

    Annotations the server declares

    • title: Get tool
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • healthLiveness and the commit deployed right now — it is how the smoke waits for its own deploy.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Liveness and the commit deployed right now — it is how the smoke waits for its own deploy.

    Annotations the server declares

    • title: Health
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • lab_resultThe lab tests of an audit (mobile and desktop): running, finished with scores, metrics and biggest savings, or failed.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    The lab tests of an audit (mobile and desktop): running, finished with scores, metrics and biggest savings, or failed. With wait (up to 25) it answers as soon as a running test finishes. Long-poll: with `wait` the answer comes as soon as a running test finishes, or after `wait` seconds with `status: running`. Repeat until it is not running.

    Annotations the server declares

    • title: Lab result
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • lab_testStarts a lab test of an audit's page: Lighthouse run by Google PageSpeed Insights (performance, accessibility, best practices, SEO).No findings

    Why it is in this group

    • The description's first verb is "start": a word for a change.
    Description, as the server wrote it
    Starts a lab test of an audit's page: Lighthouse run by Google PageSpeed Insights (performance, accessibility, best practices, SEO). Answers 202 at once; the test takes ~25 s to 2+ minutes — then read it with lab_result. Does not change the audit score. Answers **202** at once; the test runs for ~25 s to over 2 minutes and its summary is stored in the audit (`summary.lab.<strategy>`), so it comes back in `GET /api/audits/:id`, in the tab and in the shared report. It does not change the audit score. Calling again while the same strategy is running does not start a second test. Limits: 4 tests at a time on the server, 6 per network per hour and 500 per day for the whole product.

    Annotations the server declares

    • title: Lab test
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • preview_domain_alertsRequires the account session, current X-Organization-Id and CSRF for writes.1 finding

    Why it is in this group

    • The name "preview_domain_alerts" says "preview": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    Findings

    • Warn

      The server marks "preview_domain_alerts" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "preview_domain_alerts" says "preview": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Requires the account session, current X-Organization-Id and CSRF for writes. Review the exact selected domains before changing renewal notices. Select up to 25 saved pages. Repeated registrable domains count once. The server checks the account, organization and current revisions again. A stale preview changes nothing.

    Annotations the server declares

    • title: Preview domain alerts
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • review_connectionRequires the account session, current X-Organization-Id and CSRF for writes.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Requires the account session, current X-Organization-Id and CSRF for writes. Start a TLS review of the saved HTTPS origin using current domain monitoring rights. At most three starts per account and UTC day, one per site. A repeated request reuses today's review. Do not claim complete safety from a partial result. One review per account, organization, origin and UTC day. Starting requires current domain monitoring rights. The account has three starts per UTC day. Retries return the same review. The scanner samples one public IP, with three stages and a 170-second deadline. Partial results do not establish safety. GET never starts a scan. The shared realtime channel reports stage changes. Reports expire after 26 hours.

    Annotations the server declares

    • title: Review connection
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • run_tabRe-audits the tab's URL.No findings

    Why it is in this group

    • The name "run_tab" says "run": a word for a change.
    Description, as the server wrote it
    Re-audits the tab's URL.

    Annotations the server declares

    • title: Run tab
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • sync_search_consoleCollect a due sample.No findings

    Why it is in this group

    • The name "sync_search_console" says "sync": a word for a change.
    Description, as the server wrote it
    Collect a due sample. Repeated calls cannot bypass the daily reservation. The hourly schedule uses the same durable reservation. A failure preserves the last good sample and schedules the next attempt 24 hours later. This route cannot force an extra collection.

    Annotations the server declares

    • title: Sync search console
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • tab_historyThe tab's previous runs and what changed between each one and the one before it (score delta, findings that appeared and that disappeared).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    The tab's previous runs and what changed between each one and the one before it (score delta, findings that appeared and that disappeared). Every run has always been kept; this is where you read the series. Each entry carries the score, the counts and a `change` with the point delta and the findings that appeared (`broke`) or disappeared (`fixed`) since the previous run — compared by finding code, never by message. Runs older than the watch feature are matched by URL.

    Annotations the server declares

    • title: Tab history
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
Only reads 17Claude Code: allow
  • ai_search_historyRead the plan, the saved searches, the last runs and the position trend of each search.No findings

    Why it is in this group

    • The name "ai_search_history" says "search": a word for reading.
    Description, as the server wrote it
    Read the plan, the saved searches, the last runs and the position trend of each search. Reads never call the search engine. The trend compares each search of the newest run with the previous run that had it: up, down, same, new or lost.

    Annotations the server declares

    • title: Ai search history
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • domain_statusRead registration, contact visibility, TLS, DNS, CAA, mail policies, certificate issuance and a limited server comparison.No findings

    Why it is in this group

    • The name "domain_status" says "status": a word for reading.
    Description, as the server wrote it
    Read registration, contact visibility, TLS, DNS, CAA, mail policies, certificate issuance and a limited server comparison. Read source dates and collection gaps. Private options require the account session. A discovered name never starts monitoring automatically. Pages share public observations by registry domain and HTTPS origin. Private settings and history stay with the account and organization. Missing data is not a healthy result.

    Annotations the server declares

    • title: Domain status
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_auditRe-read an audit with its findings and evidence.No findings

    Why it is in this group

    • The name "get_audit" says "get": a word for reading.
    Description, as the server wrote it
    Re-read an audit with its findings and evidence. Use generate_fix_prompt for correction steps.

    Annotations the server declares

    • title: Get audit
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_badgeMetadata and markdown of the SVG badge of a shared report.No findings

    Why it is in this group

    • The name "get_badge" says "get": a word for reading.
    Description, as the server wrote it
    Metadata and markdown of the SVG badge of a shared report.

    Annotations the server declares

    • title: Get badge
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_fix_promptPreserve the complete prompt and license.No findings

    Why it is in this group

    • The name "get_fix_prompt" says "get": a word for reading.
    Description, as the server wrote it
    Preserve the complete prompt and license. Use it only for license.domain. This does not authorize deployments or infrastructure changes. Uses the authenticated owner and active organization. Returns the immutable text. A missing or foreign prompt returns 404.

    Annotations the server declares

    • title: Get fix prompt
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_siteRead one site owned by the signed-in account.No findings

    Why it is in this group

    • The name "get_site" says "get": a word for reading.
    Description, as the server wrote it
    Read one site owned by the signed-in account.

    Annotations the server declares

    • title: Get site
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • journeysRead the owned site's installation, actions, paths and ordered conversion funnel for the last seven days.No findings

    Why it is in this group

    • The description's first verb is "read": a word for reading.
    Description, as the server wrote it
    Read the owned site's installation, actions, paths and ordered conversion funnel for the last seven days. Requires the account's browser session. Only this site's owner can read it. Data updates through the shared realtime transport. No user identity, typed text or screen recording.

    Annotations the server declares

    • title: Journeys
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_audit_fix_promptsFind saved audits prompts before generation.No findings

    Why it is in this group

    • The name "list_audit_fix_prompts" says "list": a word for reading.
    Description, as the server wrote it
    Find saved audits prompts before generation. Listing is free. Keep language and source filters when following the cursor. At most 100 saved rows per page, plus up to three earlier free audit receipts. Follow _links.next. The result belongs to the authenticated owner and active organization.

    Annotations the server declares

    • title: List audit fix prompts
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_domain_fix_promptsFind saved tabs prompts before generation.No findings

    Why it is in this group

    • The name "list_domain_fix_prompts" says "list": a word for reading.
    Description, as the server wrote it
    Find saved tabs prompts before generation. Listing is free. Keep language and source filters when following the cursor. At most 100 saved rows per page, plus up to three earlier free audit receipts. Follow _links.next. The result belongs to the authenticated owner and active organization.

    Annotations the server declares

    • title: List domain fix prompts
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_site_fix_promptsFind saved sites prompts before generation.No findings

    Why it is in this group

    • The name "list_site_fix_prompts" says "list": a word for reading.
    Description, as the server wrote it
    Find saved sites prompts before generation. Listing is free. Keep language and source filters when following the cursor. At most 100 saved rows per page, plus up to three earlier free audit receipts. Follow _links.next. The result belongs to the authenticated owner and active organization.

    Annotations the server declares

    • title: List site fix prompts
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_sitesRead up to 50 sites owned by the signed-in account.No findings

    Why it is in this group

    • The name "list_sites" says "list": a word for reading.
    Description, as the server wrote it
    Read up to 50 sites owned by the signed-in account. Follow next_cursor.

    Annotations the server declares

    • title: List sites
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_tabsLists the owner's saved pages (guest or session), with the active page's last report.No findings

    Why it is in this group

    • The name "list_tabs" says "list": a word for reading.
    Description, as the server wrote it
    Lists the owner's saved pages (guest or session), with the active page's last report. Group pages by site to match the Projects table. One call loads the saved pages and the active page's last report. The UI groups pages by site in Projects and opens each site in a work tab. The introduction stays in Welcome. A signed-in account sends `X-Organization-Id`; a guest has one temporary workspace.

    Annotations the server declares

    • title: List tabs
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_toolsLists the micro-tools (title, meta, canonical, OG, JSON-LD…).No findings

    Why it is in this group

    • The name "list_tools" says "list": a word for reading.
    Description, as the server wrote it
    Lists the micro-tools (title, meta, canonical, OG, JSON-LD…).

    Annotations the server declares

    • title: List tools
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • prompt_allowanceRead remaining prompt units before generating.No findings

    Why it is in this group

    • The description's first verb is "read": a word for reading.
    Description, as the server wrote it
    Read remaining prompt units before generating.

    Annotations the server declares

    • title: Prompt allowance
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • search_consoleRead own-site keywords, opportunities at average positions 4–20, up to 20 tracked queries and daily history.1 finding

    Why it is in this group

    • The name "search_console" says "search": a word for reading.

    Findings

    • Info

      The description mentions "Credentials".

      Matched text

      description: "...eighted averages, not fixed SERP ranks. Credentials and raw provider responses are not retu..."

      What this check looks for
    Description, as the server wrote it
    Read own-site keywords, opportunities at average positions 4–20, up to 20 tracked queries and daily history. Check dates, partial coverage and collection failure before proposing edits. These are not market search volumes. The sample covers 28 days, at most 50 queries and 50 pages. Use queries for keyword research and opportunities for average positions 4–20. The terms array adds daily history and 7-day comparisons for up to 20 selected queries. Coverage is partial: impressions are for this property, not market search volume. Positions are impression-weighted averages, not fixed SERP ranks. Credentials and raw provider responses are not returned.

    Annotations the server declares

    • title: Search console
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • weekly_site_reportRead the weekly report of a site: what changed since last week, the new pages of up to 3 competitors and every finding.No findings

    Why it is in this group

    • The description's first verb is "read": a word for reading.
    Description, as the server wrote it
    Read the weekly report of a site: what changed since last week, the new pages of up to 3 competitors and every finding. Reading never runs the report. Once a week the report checks the first 500 URLs of the site's sitemap, says what changed since the week before (new and fixed problems, new pages) and lists the new pages of up to 3 competitor sitemaps. Reading never runs the report.

    Annotations the server declares

    • title: Weekly site report
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • weekly_site_report_historyRead one weekly report of a site's history by its id.No findings

    Why it is in this group

    • The description's first verb is "read": a word for reading.
    Description, as the server wrote it
    Read one weekly report of a site's history by its id.

    Annotations the server declares

    • title: Weekly site report history
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.0.1. Values in angle brackets are yours to fill in.

claude mcp add --transport http pageaudit https://pageaudit.online/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__pageaudit__list_sites",
      "mcp__pageaudit__get_site",
      "mcp__pageaudit__search_console",
      "mcp__pageaudit__prompt_allowance",
      "mcp__pageaudit__get_fix_prompt",
      "mcp__pageaudit__list_audit_fix_prompts",
      "mcp__pageaudit__list_domain_fix_prompts",
      "mcp__pageaudit__list_site_fix_prompts",
      "mcp__pageaudit__weekly_site_report",
      "mcp__pageaudit__weekly_site_report_history",
      "mcp__pageaudit__ai_search_history",
      "mcp__pageaudit__journeys",
      "mcp__pageaudit__domain_status",
      "mcp__pageaudit__list_tools",
      "mcp__pageaudit__list_tabs",
      "mcp__pageaudit__get_audit",
      "mcp__pageaudit__get_badge"
    ],
    "ask": [
      "mcp__pageaudit__add_site",
      "mcp__pageaudit__connect_search_console",
      "mcp__pageaudit__sync_search_console",
      "mcp__pageaudit__generate_fix_prompt",
      "mcp__pageaudit__generate_domain_fix_prompt",
      "mcp__pageaudit__generate_site_fix_prompt",
      "mcp__pageaudit__ai_search_visibility",
      "mcp__pageaudit__connection_review",
      "mcp__pageaudit__review_connection",
      "mcp__pageaudit__domain_portfolio",
      "mcp__pageaudit__preview_domain_alerts",
      "mcp__pageaudit__check_domain",
      "mcp__pageaudit__domain_history",
      "mcp__pageaudit__acknowledge_domain_event",
      "mcp__pageaudit__audit_site",
      "mcp__pageaudit__check_ai_access",
      "mcp__pageaudit__api_index",
      "mcp__pageaudit__health",
      "mcp__pageaudit__get_tool",
      "mcp__pageaudit__audit_url",
      "mcp__pageaudit__create_guest",
      "mcp__pageaudit__create_tab",
      "mcp__pageaudit__run_tab",
      "mcp__pageaudit__tab_history",
      "mcp__pageaudit__lab_test",
      "mcp__pageaudit__lab_result",
      "mcp__pageaudit__embed_snippet",
      "mcp__pageaudit__contact"
    ],
    "deny": [
      "mcp__pageaudit__track_search_queries",
      "mcp__pageaudit__disconnect_search_console",
      "mcp__pageaudit__save_weekly_site_report",
      "mcp__pageaudit__save_ai_search_queries",
      "mcp__pageaudit__cancel_connection_review",
      "mcp__pageaudit__apply_domain_alerts",
      "mcp__pageaudit__set_domain_expiry",
      "mcp__pageaudit__configure_domain_dns",
      "mcp__pageaudit__configure_domain_monitor",
      "mcp__pageaudit__watch_tab"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as pageaudit. Review it before you use it.