Skip to content

DrUrls

by drurls.com · remote · no sign-in to list tools · v1.0.0 · published by com.drurls

Audit websites for SEO from your AI assistant: scores, issues with fixes, Google indexability

Changes · 6

11 tools: 6 change things and 5 only read.

Scanned Oct 21, 2026

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

claude mcp add --transport http drurls https://drurls.com/mcp

Findings

Matches of fixed checks, with the text they matched.

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

    Matched text

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

    What this check looks for

Tools

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

11 tools

Changes things 6Claude Code: ask
  • check_google_visibilityCheck Google indexability for all sites (or one): noindex tags, robots blocks, sitemap errors, canonical problems, redirect chains and broken internal links found in the last crawl…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
    Check Google indexability for all sites (or one): noindex tags, robots blocks, sitemap errors, canonical problems, redirect chains and broken internal links found in the last crawl. Explains per site whether anything blocks indexing. Cost: free — reads data your organisation already produced. Rate limit: 100 requests/minute per API key.

    Annotations the server declares

    • title: Check google visibility
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
    • credits: 0
  • free_page_checkFree single-page SEO/health audit of any public URL — no API key, no account.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
    Free single-page SEO/health audit of any public URL — no API key, no account. Returns the same score, grade, categories and issues as the product's free check, plus an `upgrade` field describing what the authenticated tools add. Rate limited per caller (3/day). For whole-site crawls, history and tasks, use start_scan with an API key.

    Annotations the server declares

    • title: Free page check
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
    • credits: 0
  • generate_reportCompile a full SEO report — for one site (score, issues by severity, top issue types, Google visibility, social presence, ranked fix plan) or the whole organization (per-site score…No findings

    Why it is in this group

    • The name "generate_report" says "generate": a word for a change.
    Description, as the server wrote it
    Compile a full SEO report — for one site (score, issues by severity, top issue types, Google visibility, social presence, ranked fix plan) or the whole organization (per-site scores, visibility verdicts, top cross-site actions). Use when the user asks for a report, summary, or overview document. Cost: 2 credits per call, charged only if the call succeeds. Rate limit: 100 requests/minute per API key.

    Annotations the server declares

    • title: Generate report
    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
    • credits: 2
  • get_improvement_planThe highest-impact actions to improve quality right now, ranked by severity and how many pages each fix touches, with concrete how-to-fix guidance.1 finding

    Why it is in this group

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

    Findings

    • Warn

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

      Matched text

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

      What this check looks for
    Description, as the server wrote it
    The highest-impact actions to improve quality right now, ranked by severity and how many pages each fix touches, with concrete how-to-fix guidance. Use for 'what should I do now?'. Cost: 2 credits per call, charged only if the call succeeds. Rate limit: 100 requests/minute per API key.

    Annotations the server declares

    • title: Get improvement plan
    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
    • credits: 2
  • hire_testerOrder one of the tests from list_tester_offers.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
    Order one of the tests from list_tester_offers. A person performs it and returns a recorded walkthrough with a screenshot and the console output of every step, plus their written findings. It suits a specific doubt only a person can resolve; a brief that says what is suspected produces a sharper report. Charges the offer's price at purchase and releases it if no tester accepts within 72 hours. offer_id is one of the ids list_tester_offers returns. Cost: set by the offer you choose — list_tester_offers states each offer's price in credits, its turnaround, and exactly what is delivered. Charged when the order is placed and released if no tester accepts within 72 hours, or if the tester who accepted misses the offer's turnaround. Rate limit: 100 requests/minute per API key.

    Annotations the server declares

    • title: Hire tester
    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: true
  • start_scanLaunch a fresh audit of a website.No findings

    Why it is in this group

    • The name "start_scan" says "start": a word for a change.
    Description, as the server wrote it
    Launch a fresh audit of a website. Creates the site in the org if it doesn't exist yet. Enforces the user's plan quota — if the quota is used up it explains that instead of scanning. Cost: 1 credit per call, charged only if the call succeeds. Rate limit: 100 requests/minute per API key.

    Annotations the server declares

    • title: Start scan
    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: true
    • credits: 1
Only reads 5Claude Code: allow
  • find_issuesSearch open issues across all sites (or one site).No findings

    Why it is in this group

    • The name "find_issues" says "find": a word for reading.
    Description, as the server wrote it
    Search open issues across all sites (or one site). Returns issue groups: site, issue type, severity, how many pages are affected, and an example page. Use this for questions like 'which sites have problems?'. Cost: free — reads data your organisation already produced. Rate limit: 100 requests/minute per API key.

    Annotations the server declares

    • title: Find issues
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
    • credits: 0
  • get_scan_statusWhat is running right now and what finished recently: every in-flight scan plus the last 10 completed/failed ones with scores and errors.No findings

    Why it is in this group

    • The name "get_scan_status" says "get": a word for reading.
    Description, as the server wrote it
    What is running right now and what finished recently: every in-flight scan plus the last 10 completed/failed ones with scores and errors. Use when the user asks 'is my scan done?' or after start_scan. Cost: free — reads data your organisation already produced. Rate limit: 100 requests/minute per API key.

    Annotations the server declares

    • title: Get scan status
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
    • credits: 0
  • get_site_reportDeep-dive one site: latest audit score, issue counts by severity, the most frequent issue types with counts, and social-network presence.No findings

    Why it is in this group

    • The name "get_site_report" says "get": a word for reading.
    Description, as the server wrote it
    Deep-dive one site: latest audit score, issue counts by severity, the most frequent issue types with counts, and social-network presence. Cost: free — reads data your organisation already produced. Rate limit: 100 requests/minute per API key.

    Annotations the server declares

    • title: Get site report
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
    • credits: 0
  • list_sitesList every site in the user's organization with its latest completed audit: SEO score, grade, issues found, pages crawled, when it was last scanned, and whether a scan is running r…No findings

    Why it is in this group

    • The name "list_sites" says "list": a word for reading.
    Description, as the server wrote it
    List every site in the user's organization with its latest completed audit: SEO score, grade, issues found, pages crawled, when it was last scanned, and whether a scan is running right now. Cost: free — reads data your organisation already produced. Rate limit: 100 requests/minute per API key.

    Annotations the server declares

    • title: List sites
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
    • credits: 0
  • list_tester_offersBrowse the catalogue of tests a real person will run on a real device: mobile UX on a handset, end-to-end checkout, a screen-reader pass by somebody who uses one daily, native-spea…No findings

    Why it is in this group

    • The name "list_tester_offers" says "list": a word for reading.
    Description, as the server wrote it
    Browse the catalogue of tests a real person will run on a real device: mobile UX on a handset, end-to-end checkout, a screen-reader pass by somebody who uses one daily, native-speaker translation review, and more. Use this when a question cannot be answered by reading the page — how something FEELS, what a screen reader announces, whether a checkout completes on a real phone. It covers what an automated audit cannot measure. Returns each offer with its price in credits, turnaround, and exactly what gets delivered. Cost: free — reads data your organisation already produced. Rate limit: 100 requests/minute per API key.

    Annotations the server declares

    • title: List tester offers
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
    • credits: 0

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.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http drurls https://drurls.com/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__drurls__list_tester_offers",
      "mcp__drurls__list_sites",
      "mcp__drurls__get_site_report",
      "mcp__drurls__find_issues",
      "mcp__drurls__get_scan_status"
    ],
    "ask": [
      "mcp__drurls__hire_tester",
      "mcp__drurls__check_google_visibility",
      "mcp__drurls__get_improvement_plan",
      "mcp__drurls__start_scan",
      "mcp__drurls__generate_report",
      "mcp__drurls__free_page_check"
    ],
    "deny": []
  }
}

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 drurls. Review it before you use it.