Skip to main content
Glama
GeorgesAdSim

Fetch Crawl MCP

by GeorgesAdSim

Fetch Crawl MCP v4.2.0

Serveur MCP (Model Context Protocol) pour fetcher, crawler et analyser des sites web. 29 outils utilisables depuis Claude Code, Claude Desktop, ou tout client MCP compatible.

Installation

npm install
npm run build

Puppeteer est requis pour les outils screenshot, check_performance, check_mobile, check_datalayer, intercept_tracking_requests, audit_tracking et le fallback anti-bot. Chromium s'installe automatiquement lors du npm install.

Related MCP server: FreeCrawl MCP Server

Utilisation

Stdio (défaut)

npm start
# ou
node build/index.js

HTTP

npm run start:http
# ou
node build/index.js --http --port 3001

Configuration client MCP

{
  "mcpServers": {
    "fetch-crawl-mcp": {
      "command": "node",
      "args": ["/path/to/fetch-crawl-mcp/build/index.js"]
    }
  }
}

Format de réponse standard

Tous les outils retournent un format StandardResponse unifié :

{
  url: string;           // URL demandée
  finalUrl: string;      // URL finale (après redirections)
  status: number;        // Code HTTP
  score?: number;        // Score 0-100 (si applicable)
  summary: string;       // Résumé en une phrase
  issues: ToolIssue[];   // Problèmes détectés (severity, element, message, evidence?)
  recommendations: [];   // Recommandations d'amélioration
  meta: {
    fetchedWith: "fetch" | "puppeteer";
    fallbackUsed: boolean;
    partial: boolean;     // true si le contenu a été tronqué (> 5MB)
    durationMs: number;
    timestamp: string;
  };
  data: {};              // Données spécifiques à l'outil
}

Anti-Bot Detection

Le fetcher intègre un système de détection anti-bot avancé :

  • Détection automatique : Cloudflare, DataDome, Akamai, Sucuri, PerimeterX

  • Stealth Puppeteer : patches navigator.webdriver, plugins, languages, platform, hardwareConcurrency, deviceMemory, chrome.runtime, Notification permissions, WebGL renderer

  • Fallback propre : si le site reste bloqué même avec Puppeteer, retour d'un status 403 avec info antiBot: { blocked, provider, confidence } au lieu d'un crash

  • Launch args optimisés : --disable-blink-features=AutomationControlled, --disable-features=IsolateOrigins,site-per-process, --window-size=1920,1080

Outils (29)

Fetching & Crawling

fetch_page

Récupère une page web et retourne son contenu dans le format spécifié.

Paramètre

Type

Défaut

Description

url

string

requis

URL à fetcher

format

"html" | "text" | "markdown"

"markdown"

Format de sortie

headers

object

Headers HTTP personnalisés

Retour : contenu de la page, titre, description, type de contenu.


crawl_site

Crawle un site récursivement en suivant les liens internes.

Paramètre

Type

Défaut

Description

url

string

requis

URL de départ

maxDepth

number (0–10)

2

Profondeur max (0 = page de départ uniquement)

maxPages

number (1–500)

50

Nombre max de pages

delay

number (0–10000)

300

Délai en ms entre les requêtes (±30% jitter)

concurrency

number (1–10)

3

Pages fetchées en parallèle

respectRobotsTxt

boolean

true

Respecter robots.txt et Crawl-delay

includePattern

string

Regex : ne crawler que les URLs matchant

excludePattern

string

Regex : exclure les URLs matchant

Score : basé sur le ratio de pages en erreur (status >= 400).

Timeout : le crawl s'arrête proprement après 5 minutes (abortedEarly: true).

Retour : liste des pages crawlées avec titre, status, profondeur, liens trouvés + crawlStats: { startedAt, finishedAt, durationSeconds, pagesPerSecond, abortedEarly, abortReason }.


screenshot

Capture une screenshot d'une page web via Puppeteer. Supporte PNG/JPEG, viewport personnalisé, capture pleine page, attente de sélecteur CSS, et fermeture des bannières cookies.

Paramètre

Type

Défaut

Description

url

string

requis

URL à capturer

width

number (320–3840)

1280

Largeur du viewport

height

number (240–2160)

800

Hauteur du viewport

fullPage

boolean

false

Capturer toute la page scrollable

format

"png" | "jpeg"

"png"

Format d'image

quality

number (1–100)

80

Qualité (jpeg uniquement)

waitForSelector

string

Sélecteur CSS à attendre avant capture

dismissCookies

boolean

false

Tenter de fermer les bannières cookies

Robustesse : timeout global Puppeteer, auto-recompression JPEG si fullPage > 900KB, retour d'erreur propre en cas d'échec.


SEO Audit

audit_onpage

Audit technique on-page complet : title, meta description, canonical, robots, lang, hiérarchie H1-H6, attributs alt des images, Open Graph, Twitter Card, JSON-LD.

Paramètre

Type

Défaut

Description

url

string

requis

URL à auditer

Score : 0-100 basé sur les issues (error = -15pts, warning = -5pts).

Retour : données SEO complètes dans data{}, issues avec severity, recommandations.


check_indexability

Vérifie si une page est indexable par les moteurs de recherche.

Paramètre

Type

Défaut

Description

url

string

requis

URL de la page

Analyses :

  • Status HTTP

  • Meta robots (noindex, nofollow, none, noarchive, nosnippet)

  • X-Robots-Tag HTTP header

  • Canonical (auto-référençante ? cross-domain ?)

  • Hreflang / rel alternate

  • Présence dans le sitemap

Score : -40 noindex, -30 status != 200, -20 canonical elsewhere, -10 absent du sitemap.

Retour : verdict indexable: boolean avec raison détaillée.


check_structured_data

Extrait et valide les données structurées d'une page.

Paramètre

Type

Défaut

Description

url

string

requis

URL à analyser

Extraction :

  • JSON-LD (incluant @graph) avec validation par type : Product, Organization, LocalBusiness, BreadcrumbList, Article, NewsArticle, BlogPosting

  • Microdata (itemscope/itemtype/itemprop)

  • Open Graph (og:*)

  • Twitter Card (twitter:*)

Score : -20 si pas de JSON-LD, -10 si pas d'OG, -10 si pas de Twitter Card, -15 par schema invalide.


check_robots_txt

Analyse le robots.txt d'un site et vérifie la cohérence des sitemaps.

Paramètre

Type

Défaut

Description

url

string

requis

URL du site

Analyses :

  • Parse complet par User-Agent (Allow + Disallow)

  • Crawl-delay

  • Sitemaps déclarés vs réellement accessibles

  • Détection de sitemaps non déclarés (/sitemap.xml, /1_index_sitemap.xml)

Score : -30 si absent, -15 si aucun sitemap déclaré, -10 par sitemap inaccessible ou non déclaré.


Content Extraction

extract_content

Extrait le contenu structuré d'une page : headings, liens, images, texte brut avec statistiques.

Paramètre

Type

Défaut

Description

url

string

requis

URL source

Retour : titre, description, lang, headings, liens (max 100), images (max 50), contenu texte (max 10000 chars), stats.


Extrait tous les liens d'une page avec filtrage par type.

Paramètre

Type

Défaut

Description

url

string

requis

URL source

type

"all" | "internal" | "external"

"all"

Filtrer par type

Retour : liens uniques avec href, texte, rel, isInternal, isNofollow.


extract_with_schema

Extraction structurée basée sur des sélecteurs CSS configurables, avec presets intégrés.

Paramètre

Type

Défaut

Description

url

string

requis

URL source

schema

object

Schema d'extraction (voir ci-dessous)

fallbackSelectors

object

Sélecteurs de fallback si le principal échoue

preset

"ecommerce-product" | "article" | "local-business" | "recipe"

Preset intégré

Schema : chaque clé est un champ, la valeur est { selector, attribute?, multiple?, transform? }.

{
  "productName": { "selector": "h1.product-title", "transform": "text" },
  "price": { "selector": ".product-price .current", "transform": "number" },
  "images": { "selector": ".product-gallery img", "attribute": "src", "multiple": true },
  "description": { "selector": ".product-description", "transform": "html" }
}

Transforms : text (innerText), html (innerHTML), number (parseFloat), trim (text trimmed), href (attribut href).

Presets intégrés :

  • ecommerce-product : productName, price, oldPrice, currency, images, description, sku, brand, availability, breadcrumb, reviewsCount

  • article : title, author, publishDate, content, categories, tags, readingTime (auto-calculé)

  • local-business : name, address, phone, email, hours, coordinates, rating, reviewCount

  • recipe : title, prepTime, cookTime, servings, ingredients, instructions, calories, image

Si preset ET schema sont fournis, le schema override les champs du preset.

Score : (fieldsFound / fieldsTotal) * 100.

Retour : data.extracted (données), fieldsFound, fieldsTotal, fieldsMissing, usedFallback, preset.


parse_sitemap

Parse un sitemap.xml (ou le détecte automatiquement). Supporte les sitemap index.

Paramètre

Type

Défaut

Description

url

string

requis

URL du sitemap ou racine du site

Score : -20 par erreur de parsing, -5 si tronqué.

Retour : entrées avec loc, lastmod, changefreq, priority (max 500).


Technical Checks

Vérifie tous les liens d'une page pour détecter les liens cassés (404, timeout, erreurs).

Paramètre

Type

Défaut

Description

url

string

requis

URL à vérifier

timeout

number (1000–30000)

5000

Timeout par lien

concurrency

number (1–20)

3

Liens vérifiés en parallèle

delay

number (0–5000)

200

Délai entre les batchs (±30% jitter)

Score : basé sur le ratio liens cassés / total.


check_redirect_chain

Suit la chaîne de redirections hop par hop.

Paramètre

Type

Défaut

Description

url

string

requis

URL à suivre

maxRedirects

number (1–30)

10

Nombre max de redirections

Score : 100 si 0-1 redirect, 80 si 2-3, 60 si > 3, 0 si boucle.

Détections : boucles de redirection, chaînes longues (> 3), upgrades HTTP → HTTPS.


check_performance

Mesure les métriques de performance via Puppeteer avec profil mobile ou desktop.

Paramètre

Type

Défaut

Description

url

string

requis

URL à auditer

device

"mobile" | "desktop"

"mobile"

Profil (mobile: 375x812 + throttling, desktop: 1280x800)

Métriques : TTFB, FCP, LCP, DOM Content Loaded, Fully Loaded, requêtes réseau, bytes transférés, ressources par type.

Score (0-100) : LCP (40%), FCP (35%), TTFB (25%) selon les seuils Web Vitals.


check_mobile

Audit de compatibilité mobile via Puppeteer avec viewport iPhone (375x812).

Paramètre

Type

Défaut

Description

url

string

requis

URL à vérifier

Vérifications : meta viewport, scroll horizontal, fonts < 12px, tap targets < 48px.

Score : -30 si pas de viewport meta, -10 si scroll horizontal, -5 par tranche de 10 tap targets trop petits.

Retour : analyse + screenshot JPEG mobile.


Tracking Audit

check_gtm_snippet

Vérifie la présence et la configuration des snippets GTM et gtag.js sur une page (analyse HTML statique, pas besoin de Puppeteer).

Paramètre

Type

Défaut

Description

url

string

requis

URL à vérifier

Détections :

  • Containers GTM (GTM-XXXXX) et IDs GA4 (G-XXXXXXXX)

  • Placement du snippet (dans <head> ou non)

  • Présence du <noscript> GTM fallback dans <body>

  • IDs dupliqués (double-counting)

Score : -15 si aucun tracking, -5 par warning (noscript manquant, doublons, mauvais placement).


check_datalayer

Inspecte window.dataLayer en runtime via Puppeteer. Vérifie l'existence, le contenu, et détecte les patterns suspects.

Paramètre

Type

Défaut

Description

url

string

requis

URL à inspecter

wait_ms

number (0–5000)

2000

Délai d'attente après chargement avant lecture du dataLayer

Vérifications :

  • window.dataLayer existe et contient des events

  • window.google_tag_manager chargé (runtime GTM)

  • window.gtag est une function

  • Détection de redéfinition de dataLayer après init GTM (pattern suspect)

Timeout : 30 secondes (Puppeteer).


intercept_tracking_requests

Intercepte les requêtes réseau de tracking (GA4, GTM, gtag) pendant le chargement de la page via Puppeteer.

Paramètre

Type

Défaut

Description

url

string

requis

URL à monitorer

wait_ms

number (0–8000)

3000

Délai d'attente après chargement pour capturer les hits différés

Requêtes interceptées :

  • google-analytics.com/g/collect → hits GA4

  • analytics.google.com/g/collect → hits GA4 alternatif

  • googletagmanager.com/gtm.js → chargement GTM

  • googletagmanager.com/gtag/js → chargement gtag

  • stats.g.doubleclick.net → hits Universal Analytics (obsolète)

Parsing GA4 : event name (en), measurement ID (tid), protocol version (v).

Score : -15 si aucun hit GA4, -15 si UA détecté, -5 par warning (doublons, multi-IDs).

Timeout : 45 secondes (Puppeteer).


audit_tracking

Audit tracking complet : exécute check_gtm_snippet, check_datalayer et intercept_tracking_requests en parallèle, puis produit un rapport unifié.

Paramètre

Type

Défaut

Description

url

string

requis

URL à auditer

Rapport :

  • Score global (moyenne pondérée : GTM 30%, dataLayer 30%, intercept 40%)

  • severity_summary : comptage par niveau (critical, warning, ok)

  • diagnosis : phrase de diagnostic croisé (ex: "GTM présent mais aucun hit GA4 envoyé → vérifier les triggers")

  • Données complètes des 3 sous-outils


Multi-Page & Comparison

compare_pages

Compare deux pages web côte à côte sur 12 critères SEO.

Paramètre

Type

Défaut

Description

urlA

string

requis

Première URL

urlB

string

requis

Deuxième URL

includeScreenshot

boolean

false

Capturer une screenshot de chaque page

Critères comparés : title, meta description, H1, heading structure, word count, internal links, external links, images alt, Open Graph, Twitter Card, JSON-LD, canonical.

Retour : score individuel par page (0-100), tableau comparatif avec winner par critère, screenshots optionnels.


audit_site_batch

Audit batch de multiples pages d'un site avec agrégation des résultats.

Paramètre

Type

Défaut

Description

url

string

requis

URL du site

source

"sitemap" | "crawl" | "urls"

"sitemap"

Source des URLs

urls

string[]

Liste d'URLs (si source = "urls")

limit

number (1–200)

30

Nombre max de pages

concurrency

number (1–5)

2

Pages auditées en parallèle

delay

number (0–5000)

500

Délai entre les batchs

Timeout : le batch s'arrête proprement après 5 minutes avec meta.partial = true.

Fallback sitemap : si /sitemap.xml ne retourne aucune URL, essaie automatiquement /1_index_sitemap.xml.

Agrégation :

  • Score moyen et médiane

  • Distribution (excellent / bon / moyen / mauvais)

  • Top 10 problèmes triés par fréquence

  • Quick wins (pages > 60 pts avec 1-2 fixes faciles)

  • Pages critiques (les 10 pires scores)

  • executionStats: startedAt, finishedAt, durationSeconds, pagesPerSecond, timedOut


detect_orphan_pages

Détecte les pages orphelines en croisant le sitemap, le crawl et le graphe de liens internes.

Paramètre

Type

Défaut

Description

url

string

requis

URL du site

maxCrawlPages

number (1–300)

100

Pages crawlées pour le graphe

crawlDepth

number (1–5)

3

Profondeur de crawl

concurrency

number (1–5)

3

Pages en parallèle

delay

number (0–5000)

300

Délai entre batches

Classification (6 catégories) :

  • orphan_in_sitemap : dans le sitemap, 0 lien interne (critique)

  • orphan_not_in_sitemap : hors sitemap, 0-1 lien interne (isolée)

  • sitemap_only : dans le sitemap, non atteinte par le crawl

  • crawl_only : trouvée par le crawl, absente du sitemap

  • deep_page : atteinte uniquement à profondeur >= 4

  • well_linked : sitemap + crawl + >= 2 liens entrants

Score : -2/orpheline (max -40), -1/sitemap_only (max -20), -1/crawl_only (max -15), -0.5/deep_page (max -10), -15 si cohérence < 50%.

Retour : stats (overlap sitemap/crawl), catégories avec exemples, top 20 pages hub (plus de liens entrants), top 10 orphelines critiques.


detect_duplicate_content

Détecte les contenus dupliqués et quasi-dupliqués sur un site.

Paramètre

Type

Défaut

Description

url

string

requis

URL du site

source

"sitemap" | "crawl" | "urls"

"crawl"

Source des URLs

urls

string[]

Liste d'URLs (si source = "urls")

limit

number (1–200)

50

Nombre max de pages

concurrency

number (1–5)

3

Pages en parallèle

delay

number (0–5000)

300

Délai entre batches

similarityThreshold

number (0–1)

0.8

Seuil de similarité pour near-duplicates

Détection :

  • Exact duplicates : titles, descriptions, H1 identiques (groupés par cluster)

  • Near-duplicates : titles et contenus quasi-identiques (similarité mots communs / mots uniques > seuil)

  • Optimisation : regroupement par les 3 premiers mots pour éviter O(n²)

Score : -5 par cluster exact (max -40), -2 par cluster near-duplicate (max -30).

Retour : exactDuplicates[], nearDuplicates[], uniquePages, stats avec mostDuplicatedValue.


Security, Accessibility & Compliance (v4.2.0)

check_security_headers

Audit des HTTP security headers (HSTS, CSP, X-Frame-Options, Referrer-Policy, Permissions-Policy, COOP, CORP, COEP). Score 0-100 avec grade A-F.

Paramètre

Type

Défaut

Description

url

string

requis

URL à auditer


check_hreflang

Valide les balises hreflang : codes ISO 639-1, liens réciproques, cohérence avec la langue de la page, présence de x-default, consistance avec canonical.

Paramètre

Type

Défaut

Description

url

string

requis

URL à auditer


audit_content_quality

Analyse de la qualité de contenu : lisibilité multilingue (FR/NL/EN/DE/ES/IT), word count, structure des titres, densité de liens, richesse média, signaux d'engagement (TOC, FAQ, CTA).

Paramètre

Type

Défaut

Description

url

string

requis

URL à auditer


check_accessibility

Audit WCAG léger sur 9 catégories : alt des images, labels de formulaires, landmarks sémantiques, hiérarchie des titres, qualité du texte des liens (détection multilingue FR/NL/EN/DE du "click here"), ARIA, tableaux, médias, contraste.

Paramètre

Type

Défaut

Description

url

string

requis

URL à auditer


extract_images_audit

Audit complet des images via Puppeteer : adoption des formats modernes (WebP/AVIF), alt text, responsive (srcset), dimensions optimales, lazy loading, candidat LCP, poids des fichiers.

Paramètre

Type

Défaut

Description

url

string

requis

URL à auditer


Audit Google Consent Mode v2 et conformité cookies RGPD : détection CMP (Cookiebot, OneTrust, Didomi, Axeptio, etc.), IAB TCF API, vérification gtag('consent', 'default'|'update'), analyse des signaux gcs/gcd sur les hits GA4, audit des cookies déposés avant consentement.

Paramètre

Type

Défaut

Description

url

string

requis

URL à auditer

wait_ms

number (0–10000)

5000

Délai d'attente après chargement pour laisser le CMP s'initialiser


Architecture

src/
├── index.ts                          # Entry point (stdio + HTTP)
├── server.ts                         # MCP server, tool registration
├── tools/
│   ├── fetch-page.ts                 # fetch_page
│   ├── crawl-site.ts                 # crawl_site
│   ├── screenshot.ts                 # screenshot
│   ├── analyze-seo.ts               # audit_onpage
│   ├── check-indexability.ts         # check_indexability
│   ├── check-structured-data.ts     # check_structured_data
│   ├── check-robots-txt.ts          # check_robots_txt
│   ├── extract-content.ts           # extract_content
│   ├── extract-links.ts             # extract_links
│   ├── extract-with-schema.ts       # extract_with_schema
│   ├── parse-sitemap.ts             # parse_sitemap
│   ├── check-links.ts              # check_links
│   ├── check-redirect-chain.ts     # check_redirect_chain
│   ├── check-performance.ts        # check_performance
│   ├── check-mobile.ts             # check_mobile
│   ├── compare-pages.ts            # compare_pages
│   ├── audit-site-batch.ts         # audit_site_batch
│   ├── detect-orphan-pages.ts      # detect_orphan_pages
│   ├── detect-duplicate-content.ts # detect_duplicate_content
│   ├── check-gtm-snippet.ts       # check_gtm_snippet
│   ├── check-datalayer.ts         # check_datalayer
│   ├── intercept-tracking-requests.ts # intercept_tracking_requests
│   └── audit-tracking.ts          # audit_tracking
└── utils/
    ├── fetcher.ts                    # HTTP fetch + stealth Puppeteer + anti-bot detection
    ├── html-parser.ts               # Cheerio-based HTML extraction
    ├── robots-parser.ts             # robots.txt parser
    ├── url-utils.ts                 # URL normalization utilities
    └── response.ts                  # StandardResponse, ToolIssue, ToolMeta, helpers

Stack technique

  • Runtime : Node.js (ES2022)

  • Langage : TypeScript (strict)

  • MCP SDK : @modelcontextprotocol/sdk

  • HTML parsing : Cheerio

  • Browser automation : Puppeteer (stealth mode)

  • Validation : Zod

  • Transport : stdio (défaut) ou HTTP (Express + StreamableHTTPServerTransport)

Déploiement Docker

Quick start

./deploy.sh

Manuel

# Build TypeScript
npm run build

# Build image Docker
docker build -t fetch-crawl-mcp:latest .

# Lancer avec docker compose
docker compose up -d

# Vérifier
curl http://localhost:3001/health

Configuration Docker

Le Dockerfile utilise node:22-slim avec Chromium préinstallé pour Puppeteer. L'image finale ne contient que build/ et les dépendances de production.

Variable d'environnement

Défaut

Description

NODE_ENV

production

Environnement Node.js

PUPPETEER_EXECUTABLE_PATH

/usr/bin/chromium

Chemin vers Chromium dans le container

Ressources par défaut (docker-compose) : 2 Go RAM, 1.5 CPU.

Configuration client MCP (HTTP distant)

{
  "mcpServers": {
    "fetch-crawl-mcp": {
      "url": "http://YOUR_SERVER:3001/mcp"
    }
  }
}

Développement

npm run dev        # Watch mode avec tsx
npm run build      # Build TypeScript
npm start          # Serveur stdio
npm run start:http # Serveur HTTP (port 3001)

Licence

MIT

Available Tools

29 tools
audit_content_qualityAudit Content QualityA
Read-only

Analyze content quality of a web page: word count, readability score (multilingual), text-to-HTML ratio, heading structure, link density, media richness, and engagement signals (TOC, FAQ, CTA). Returns a 0-100 score with per-category breakdown and actionable recommendations. Does NOT check SEO meta tags — use audit_onpage for that.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL of the page to audit
localeNoLanguage code for readability scoring. 'auto' detects from the HTML lang attribute.auto
timeoutNoRequest timeout in milliseconds

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description discloses the return shape ('0-100 score with per-category breakdown and actionable recommendations') and defines the scope of what is—and isn't—analyzed. This adds meaningful behavioral context without contradicting the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: it opens with the core action, lists the evaluated dimensions, describes the output, and closes with an explicit exclusion and alternative. Every sentence contributes value, and there is no redundant wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter tool with no output schema, the description supplies the essential operational context: what it analyzes, the result format, and its boundary relative to audit_onpage. Required parameters are fully covered by the schema, and no critical invocation detail is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents url, locale, and timeout. The description adds only slight context by mentioning 'multilingual' readability, which relates to locale, but it does not substantially expand parameter semantics beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool's purpose with a specific verb ('Analyze content quality of a web page') and enumerates the concrete aspects it evaluates: word count, readability, text-to-HTML ratio, heading structure, link density, media richness, and engagement signals. It also explicitly distinguishes itself from audit_onpage by stating what it does NOT check, making it easy for an agent to select the correct tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit guidance by stating that it does not check SEO meta tags and directs the agent to 'use audit_onpage for that'. This establishes a clear condition for choosing between audit_content_quality and its sibling tool, which is sufficient for correct tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

audit_onpageAudit On-PageA
Read-only

Technical on-page HTML audit. Checks title tag, meta description, canonical, robots, lang attribute, heading hierarchy (H1-H6), images alt attributes, Open Graph, Twitter Card, and structured data (JSON-LD). Returns a list of technical issues found. Does NOT analyze keywords, rankings, backlinks, or traffic — use Semrush for that.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to audit for on-page technical issues

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description adds that the tool 'Returns a list of technical issues found', informing the agent about output shape. It also discloses the full technical scope of the audit, so the agent knows which aspects are inspected. This complements the read-only annotation without contradicting it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loads the core purpose in the first sentence, followed by a clear enumeration of checks and exclusions. The long list of checks is warranted because it defines the audit scope. No filler or redundancy is present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with high schema coverage and a read-only annotation, this description is largely sufficient: it defines scope, exclusions, and return type. It does not mention how the audit handles JavaScript-rendered content or edge cases like non-HTML responses, but these are minor given the simple input and read-only safety. Overall it positions the tool well among the many sibling check tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter url is already fully documented in the schema with 'The URL to audit for on-page technical issues', so schema description coverage is 100%. The description adds no additional parameter-level detail, but the schema fully covers the parameter. Baseline 3 is appropriate given the high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Technical on-page HTML audit', a specific verb-resource pair, then enumerates exactly which elements are checked (title, meta description, canonical, robots, lang, headings, images alt, OG, Twitter Card, structured data). It explicitly lists what it does NOT analyze (keywords, rankings, backlinks, traffic), which distinguishes it from analytics-focused tools. This makes the tool's purpose unmistakable among siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies when to use this tool: when a technical on-page HTML audit covering the listed elements is needed. It explicitly excludes keyword/ranking/backlink/traffic analysis and directs users to Semrush for those. However, it does not name sibling tools or specify when to choose this over check_structured_data or check_accessibility for narrower checks.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

audit_site_batchAudit Site BatchA
Read-only

Batch audit multiple pages of a site. Collects URLs from sitemap, crawl, or a provided list, then runs a lightweight SEO audit on each page. Returns aggregate scores, top problems, quick wins, and critical pages.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe site URL to audit
urlsNoList of URLs to audit (only used when source = 'urls')
delayNoDelay in ms between batches
limitNoMax pages to audit
sourceNoSource of URLs: sitemap, crawl, or a provided listsitemap
concurrencyNoPages audited in parallel

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=true already covering safety, the description adds useful behavioral context: it collects URLs from configurable sources, runs a 'lightweight' audit, and returns aggregate scores, top problems, quick wins, and critical pages. This goes beyond the annotation without contradicting it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, each earning its place: what the tool does, how it collects URLs, and what it returns. The core 'batch audit' behavior is front-loaded, and there is no filler or redundant phrasing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description explains the input source options and the main output categories (aggregate scores, problems, quick wins, critical pages), which is adequate given there is no output schema. It could mention behavior around the urls parameter or defaults, but the schema already covers parameter-level details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are already well documented. The description adds some context by tying the source parameter to the 'sitemap, crawl, or a provided list' behavior, but it does not add meaningful detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action ('Batch audit multiple pages'), a resource ('a site'), and the method of URL collection ('sitemap, crawl, or a provided list'). It distinguishes itself from single-page audit siblings like audit_onpage by emphasizing batch and aggregate behavior.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied: this tool is for auditing multiple pages in batch, while siblings like audit_onpage or crawl_site cover narrower or different tasks. However, the description never explicitly says when to prefer this tool over those alternatives or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

audit_trackingAudit TrackingA
Read-only

Full tracking audit: runs check_gtm_snippet, check_datalayer, and intercept_tracking_requests in parallel, then produces a unified report with a global score, severity summary, and cross-tool diagnosis.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to run a full tracking audit on

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint=true, which the description does not contradict. The description adds valuable behavioral detail: parallel execution of three sub-tools and the production of a unified report with score, severity, and cross-tool diagnosis.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one sentence with no filler. It front-loads the core purpose, names the components, and summarizes outputs efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description adequately conveys what the tool returns at a high level. It could specify score ranges or failure behavior, but for a single-parameter read-only audit tool, the key context is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already fully documents the single 'url' parameter with type and format, and schema description coverage is 100%. The description adds no new meaning to the parameter itself, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific operation ('Full tracking audit'), lists the exact sub-tools it runs, and describes the output (unified report with global score, severity summary, cross-tool diagnosis). This clearly distinguishes it from the individual sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly positions audit_tracking as the comprehensive combined audit option relative to the individual check tools. It does not explicitly state when not to use it, but the context is clear enough for an agent to choose it over a single check.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_accessibilityCheck AccessibilityA
Read-only

Run a lightweight WCAG accessibility audit on a web page. Checks images alt text, form labels, semantic structure (landmarks, lang), heading hierarchy, link text quality, viewport zoom restrictions, table structure, media controls, and ARIA usage. Returns a 0-100 score with per-category breakdown, WCAG criteria references, and actionable issues with CSS selectors. Does NOT check color contrast or keyboard navigation (requires browser rendering).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL of the page to audit
timeoutNoRequest timeout in milliseconds

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only provide readOnlyHint=true, so the description carries responsibility for behavioral context. It goes beyond that by explaining the audit is lightweight, returns a 0-100 score with per-category breakdown, references WCAG criteria, and omits two categories due to technical constraints. This is valuable and consistent with the read-only annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded. The first sentence states the core action clearly. The second enumerates check scopes efficiently, and the third delivers return value and limitations without padding. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, but the description fully specifies what the tool returns: a score, per-category breakdown, WCAG references, and actionable issues with CSS selectors. The limitations are stated explicitly. For a read-only audit tool with two simple parameters, no critical contextual information is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents the url and timeout parameters. The description adds nothing about parameter usage or format, but it does not need to because the schema covers everything. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Run a lightweight WCAG accessibility audit on a web page.' It enumerates concrete check categories (alt text, form labels, landmarks, heading hierarchy, etc.) and clearly distinguishes this tool from performance, mobile, and other audit siblings by focusing solely on accessibility.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear boundaries of what the tool covers and explicitly states what it does not check ('Does NOT check color contrast or keyboard navigation') along with the reason ('requires browser rendering'). It does not name specific alternative tools, but the explicit limitations give an agent enough context to decide when this tool is inappropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_datalayerCheck DataLayerA
Read-only

Inspect window.dataLayer at runtime using a headless browser. Checks if dataLayer exists, its contents (events), whether GTM and gtag are loaded, and detects suspicious patterns like dataLayer redefinition after GTM init.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to check for dataLayer
wait_msNoMilliseconds to wait after page load before reading dataLayer (default: 2000, max: 5000)

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already supply readOnlyHint=true, and the description adds meaningful context: it loads the page in a headless browser, waits for runtime state, and looks for a specific anomaly (dataLayer redefinition after GTM init). No contradiction with the read-only annotation; the description supplements it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler. The core function is front-loaded and the enumerated checks are packed into the second sentence without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description tells the agent what it checks and how (headless browser, runtime), which is sufficient to invoke it correctly. The absence of an output schema is partly mitigated by the explicit list of checks, though the exact result shape is left unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both url and wait_ms are already documented. The description does not add parameter-level detail, which is acceptable given the schema handles it; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description opens with a specific verb-resource pair: 'Inspect window.dataLayer at runtime using a headless browser,' which clearly distinguishes it from static HTML checks like check_gtm_snippet or network-based tracking checks. It then enumerates the exact checks performed (existence, contents, GTM/gtag load state, suspicious redefinition patterns), so an agent can tell what this tool is for.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'at runtime using a headless browser' implies the tool is for observing the live dataLayer state, rather than static source inspection. However, it does not explicitly say when to prefer this over siblings such as check_gtm_snippet, intercept_tracking_requests, or audit_tracking, nor does it state any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_gtm_snippetCheck GTM SnippetA
Read-only

Check a page for Google Tag Manager (GTM) and gtag.js snippets. Detects GTM container IDs, GA4 measurement IDs, verifies snippet placement (head vs body), noscript fallback, and duplicate IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to check for GTM/gtag snippets

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already marks this as safe, and the description adds meaningful behavioral detail beyond that: what exactly is detected (IDs), what is verified (placement, noscript, duplicates). This gives the agent a good sense of the tool's results and limitations without overstating scope.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. The first sentence states the core action, and the second lists the concrete verifications. Every word earns its place, and the information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, read-only tool, the description is quite complete: it outlines the specific checks performed. It doesn't describe the output format, but with no output schema and a straightforward detection tool, the absence is acceptable. Minor gaps like whether the page is rendered or whether snippets in subframes are checked don't undermine overall callability.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema fully describes the single 'url' parameter with 100% coverage, so the description does not need to elaborate much. It adds minimal extra meaning beyond confirming that the page is checked; the description aligns with the parameter's purpose but doesn't provide additional format or usage details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Check') and resource ('a page for Google Tag Manager (GTM) and gtag.js snippets'), and then enumerates distinct detection capabilities: container IDs, GA4 measurement IDs, snippet placement, noscript fallback, and duplicate IDs. This clearly differentiates it from sibling tools like check_datalayer or audit_tracking, which focus on other aspects of tracking.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description conveys a clear use case: verifying the presence and correctness of GTM/gtag snippets on a page. It does not explicitly name alternatives or state when not to use the tool, but the focused scope makes the intended usage evident given the sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_hreflangCheck HreflangA
Read-only

Validate hreflang alternate language tags on a page. Checks language code validity (ISO 639-1), URL accessibility, reciprocal linking between language versions, x-default presence, canonical consistency, and language set coherence. Returns a 0-100 score with detailed per-alternate analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to audit for hreflang tags
timeoutNoPer-request timeout in milliseconds
followAlternatesNoIf true, fetch each alternate URL to verify reciprocity, accessibility, and language consistency

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true, and the description adds meaningful behavioral context: exactly which validations are performed, that URL accessibility is checked, and that it returns a 0-100 score with per-alternate analysis. This goes beyond the annotation without contradicting it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and well-structured: purpose first, then the list of checks, then the output format. Every sentence adds information and there is no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only audit tool, the description covers the input (a URL), the behavior (multiple concrete checks), and the output (0-100 score plus per-alternate analysis), which is especially important because there is no output schema. It provides enough information for an agent to select and invoke the tool correctly. No critical detail appears missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with url, timeout, and followAlternates already documented in the input schema. The description provides conceptual context, such as 'reciprocal linking', but does not need to restate parameter details; the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb, 'Validate', identifies the resource, 'hreflang alternate language tags on a page', and lists concrete checks such as ISO 639-1 validity, reciprocal linking, x-default presence, and canonical consistency. This clearly distinguishes it from sibling audit tools like check_links, check_structured_data, or audit_onpage.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The usage context is strongly implied by the domain-specific first sentence: an agent would know to use this when hreflang validation is needed. However, it gives no explicit when-to-use/when-not-to-use guidance and names no alternatives, so the agent must infer routing rather than being told.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_indexabilityCheck IndexabilityA
Read-only

Check if a page is indexable by search engines. Analyzes HTTP status, meta robots, X-Robots-Tag, canonical tag, hreflang, and sitemap presence. Returns a verdict with detailed reasoning.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe page URL to check for indexability

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already signals a safe read operation, so the bar for behavioral disclosure is lower. The description adds useful context by enumerating exactly which signals are analyzed and stating that the tool returns a verdict with detailed reasoning, which helps the agent understand the tool's scope and output style.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences with no wasted words. It front-loads the core purpose, then efficiently lists the analyzed factors and the expected return shape.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read-only tool, the description is complete enough: it states the input, the checks performed, and the nature of the output. It does not specify the exact verdict format, but given the absence of an output schema, the phrase 'verdict with detailed reasoning' provides sufficient expectation-setting for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already fully describes the only parameter ('url') with 100% coverage. The description adds no additional parameter-level semantics beyond confirming that the URL is a page to check, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action ('Check if a page is indexable'), a concrete resource (a page), and the key factors analyzed. It distinguishes itself from sibling tools like check_robots_txt and check_hreflang by presenting a broader composite check that returns a verdict rather than a single-factor check.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context on when to use the tool: when an overall indexability assessment is needed for a page. It does not explicitly name alternatives or exclusion conditions, but the list of analyzed signals makes the intended use evident and distinct from narrower sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_mobileCheck MobileA
Read-only

Audit a web page for mobile-friendliness using a headless browser with iPhone viewport (375x812) and mobile User-Agent. Checks viewport meta, horizontal scroll, font sizes, tap target sizes, and returns a mobile screenshot.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to check for mobile-friendliness

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=true, the safety profile is already known. The description adds meaningful behavior: headless browser execution, exact viewport (375x812), mobile User-Agent, and the specific checks performed. It also discloses the return of a mobile screenshot, going beyond the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loading the core purpose and context. Every detail (viewport size, user-agent, check categories, screenshot output) earns its place without redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (one parameter, no output schema), and the description captures the inputs, execution context, checks, and output. It does not explicitly state what form the audit findings take beyond the screenshot, but the provided detail is sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers 100% of parameters—only 'url'—with a clear description. The tool description does not add parameter-specific semantics, but none are needed since the schema is complete and the parameter is self-explanatory. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Audit') with a clear resource ('a web page for mobile-friendliness') and lists concrete checks (viewport meta, horizontal scroll, font sizes, tap target sizes). This clearly distinguishes it from siblings like screenshot, check_performance, and check_accessibility.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description establishes a clear context for use: when a mobile-friendliness audit is needed, using a specific iPhone viewport and mobile user-agent. It does not explicitly name sibling tools or state when not to use it, but the context is unambiguous enough for an agent to select it appropriately.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_performanceCheck PerformanceA
Read-only

Measure web page performance metrics (TTFB, FCP, LCP, DOM Content Loaded, Fully Loaded) using a headless browser. Supports mobile (with network throttling) and desktop profiles. Returns a 0-100 score, detailed timings, network stats, and actionable issues.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to audit
deviceNoDevice profile: mobile (375x812 + throttled) or desktop (1280x800)mobile

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true, and the description adds meaningful behavioral context: it uses a headless browser, applies network throttling on mobile, and returns a score, timings, network stats, and actionable issues. This goes beyond the annotation without contradicting it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasted words: the first names the metrics and method, the second states profiles and return value. Information is front-loaded and highly scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema, the description adequately enumerates the return categories (0-100 score, detailed timings, network stats, actionable issues) and the supported device profiles. Slight gaps remain around the exact shape of the output and any execution-time or cost implications, but the essentials are present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage for parameters is 100%, so the schema already documents url and device with descriptions including dimensions and throttling. The description mostly restates the device behavior already in the schema, adding no new parameter-specific meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Measure') with a clear resource ('web page performance metrics') and enumerates the exact metrics measured (TTFB, FCP, LCP, DOM Content Loaded, Fully Loaded). This clearly differentiates it from sibling tools like check_mobile or check_links.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool: when performance metrics and a performance score are needed, with support for mobile and desktop profiles. It does not explicitly name alternatives or exclusions, but no obvious sibling tool directly competes with it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_redirect_chainCheck Redirect ChainA
Read-only

Follow the redirect chain of a URL hop by hop (using manual redirect). Returns each hop with status, Location header, and Server header. Detects redirect loops, long chains, and HTTP-to-HTTPS upgrades.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to follow redirects for
maxRedirectsNoMaximum number of redirects to follow

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already establishes safety; the description adds value by revealing the method (manual redirect), the per-hop output fields, and the built-in detections (loops, long chains, HTTP→HTTPS). No contradiction; it omits potential network latency or partial-result behavior, but these are not critical for selection.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, each carrying distinct information: action/scope, return contents, and anomaly detection. No filler or repetition of schema data.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description does enough by specifying per-hop fields and the anomalies detected, but it does not specify the exact shape of the result or behavior when maxRedirects is exceeded. This is a minor gap for a relatively simple read-only tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema already provides 100% coverage, documenting both url and maxRedirects with types/defaults/constraints. Description doesn't add parameter-level detail beyond implying the hop-by-hop nature, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description opens with a specific verb ('Follow') and resource ('redirect chain of a URL'), explicitly frames the action as hop-by-hop manual redirect, and specifies the outputs (status, Location, Server). This differentiates it clearly from sibling fetch/crawl/link-checking tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended context is evident: use when you need to inspect redirect behavior, loops, or protocol upgrades. It does not name alternatives or state when not to use it, but the focus is clear enough for an agent to select it over fetch_page or check_links.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_robots_txtCheck Robots.txtA
Read-only

Analyze a site's robots.txt: parse rules per User-Agent (Allow/Disallow), Crawl-delay, declared sitemaps, and cross-check sitemap accessibility. Detects undeclared sitemaps and inconsistencies.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe site URL (robots.txt will be fetched from the origin)

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, so the safety profile is covered. The description adds behavioral context beyond the annotation by detailing the multi-step analysis: parsing directives, fetching/checking sitemap accessibility, and detecting inconsistencies. It does not mention edge cases like missing robots.txt, but the provided details go beyond what annotations convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single well-structured sentence with a colon introducing a concise list of capabilities. Every phrase adds value, and the main action is front-loaded. No fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, read-only analysis tool with no output schema, the description is complete: it names the resource, the operations performed, and the type of findings (undeclared sitemaps and inconsistencies). The schema covers input semantics, and annotations cover safety, so nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: the 'url' parameter is described as 'The site URL (robots.txt will be fetched from the origin)'. The tool description adds no additional parameter-level semantics, so the baseline 3 applies. The parameter meaning is fully captured by the schema and the tool's purpose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Analyze') with a clear resource ('a site's robots.txt') and enumerates the exact analyses performed: parsing Allow/Disallow rules per User-Agent, Crawl-delay, declared sitemaps, and cross-checking sitemap accessibility. This clearly distinguishes it from siblings like parse_sitemap or fetch_page.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description establishes a clear context: use this tool when you need robots.txt analysis including rule parsing, sitemap declarations, and consistency checks. It does not explicitly mention alternatives or exclusions, but the purpose is specific enough that an agent can infer when it is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_security_headersCheck Security HeadersA
Read-only

Audit HTTP security headers (HSTS, CSP, X-Frame-Options, Referrer-Policy, Permissions-Policy, etc.). Returns a 0-100 score with grade (A-F), per-header analysis, and actionable recommendations. Lightweight — uses a single HTTP request, no browser needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to audit for security headers

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already covers the safety profile, so the description's burden is low — and it exceeds it. It discloses the return contract (0-100 score, A-F grade, per-header analysis, actionable recommendations) and the execution profile (single HTTP request, no browser). This helps the agent set expectations for cost and output without an output schema. No contradiction with annotations; 'audit' is consistent with readOnlyHint=true.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each earning its place: the first states purpose, the second defines the output contract, the third communicates the resource profile. The most decision-relevant information is front-loaded. Zero filler, no repetition of schema or annotation content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, read-only tool with no output schema, the description is contractually complete: the agent knows what is audited, what result shape to expect, and what the operation costs. Minor assumptions (e.g., URL must be publicly reachable, redirect handling) are acceptable for a tool of this simplicity. Nothing decision-critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents the url parameter ('The URL to audit for security headers'). The description reinforces the URL-as-target relationship by mentioning the audited headers, but adds no extra parameter-level semantics such as URL format constraints, protocol handling, or redirect behavior. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb-plus-resource: 'Audit HTTP security headers,' and enumerates concrete examples (HSTS, CSP, X-Frame-Options, Referrer-Policy, Permissions-Policy). This makes the tool unmistakably distinct from siblings like check_performance, check_redirect_chain, or check_mobile, which audit different dimensions. The scope is precise and self-identifying.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied rather than explicit. The 'lightweight — single HTTP request, no browser needed' note gives a meaningful hint about when this tool is appropriate (fast, cheap header spot-checks) versus heavier browser-dependent siblings like screenshot or crawl_site. However, the description never names alternatives or states when-not-to-use conditions, leaving routing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_structured_dataCheck Structured DataA
Read-only

Extract and validate structured data from a web page: JSON-LD (with type-specific validation for Product, Organization, BreadcrumbList, Article), Microdata, Open Graph, and Twitter Card meta tags.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to extract structured data from

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already signals this is a safe read operation. The description adds meaningful behavioral scope by specifying exactly which structured data formats are handled and which JSON-LD types receive validation. However, it does not disclose return format, validation reporting style, or any limitations, which would have made it more transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single well-constructed sentence that front-loads the core action and resource, then packs the supported formats and validation types into a compact, readable list. There is no redundant wording or filler, and every clause contributes useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one fully described parameter, a read-only annotation, and no output schema, the description explains the input and scope adequately. However, it omits what the agent should expect as output—raw extracted data, validation errors, a report, or a combination—which is important since there is no output schema to fill that gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers 100% of the single parameter, url, with a description that clearly states it is 'The URL to extract structured data from'. The tool description adds no additional parameter-level meaning, so the schema carries the full burden. Baseline 3 is appropriate because the schema already does the job.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb phrase, 'Extract and validate', and a clear resource, 'structured data from a web page'. It goes further by enumerating the exact formats covered (JSON-LD, Microdata, Open Graph, Twitter Card) and calling out type-specific validation for Product, Organization, BreadcrumbList, and Article. This makes the tool easily distinguishable from siblings like fetch_page or extract_content.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool should be used when structured data extraction or validation is needed, but it gives no explicit guidance on when to choose this tool over closely related siblings such as extract_with_schema or check_datalayer. There are no stated exclusions, prerequisites, or alternate tool recommendations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compare_pagesCompare PagesA
Read-only

Compare two web pages side by side on SEO criteria: title, meta description, headings, word count, links, images alt, Open Graph, Twitter Card, JSON-LD, and canonical. Optionally captures screenshots of both pages.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlAYesFirst URL to compare
urlBYesSecond URL to compare
includeScreenshotNoIf true, capture a JPEG screenshot (quality 60) of each page

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already declares the safety profile, lowering the bar. The description adds genuine behavioral context beyond the annotation: the tool analyzes 10 specific SEO dimensions and optionally captures screenshots of both pages, implying a heavier fetch-and-render operation. It does not disclose return format or failure behavior for inaccessible URLs, but the annotation covers the core safety concern.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero filler: the primary action and scope are front-loaded, the criteria are packed into an efficient enumeration, and the optional screenshot behavior sits at the end. Every element earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema, the description gives no hint of the return format — an agent cannot tell whether screenshots are returned as URLs or data, or whether the comparison comes back as a table or structured report. Prerequisites (both URLs must be publicly accessible) and error behavior for one failing URL are also unaddressed. The full parameter schema and readOnly annotation compensate partly, but the missing return-value context is a real gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline of 3 applies — urlA, urlB, and includeScreenshot are already documented with useful descriptions including the JPEG quality 60 detail. The description's mention of 'Optionally captures screenshots' is redundant with the schema's includeScreenshot description, adding no new parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource — 'Compare two web pages side by side' — and enumerates the exact SEO criteria (title, meta description, headings, word count, links, images alt, Open Graph, Twitter Card, JSON-LD, canonical). The two-page comparison scope clearly distinguishes it from the 30 siblings, none of which perform side-by-side comparison.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The use case is implied by the description: call this when you need a side-by-side SEO comparison of two pages. However, there is no explicit when/when-not guidance or alternative routing, e.g., no 'for a single-page audit use audit_onpage' or 'for screenshots alone use screenshot', despite those siblings covering overlapping functionality.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

crawl_siteCrawl SiteA
Read-only

Crawl a website recursively starting from a URL. Follows internal links up to a specified depth and max pages. Returns a list of discovered pages with their titles and status codes.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe starting URL to crawl
delayNoBase delay in ms between requests. A random jitter of ±30% is applied automatically (default: 300ms)
maxDepthNoMaximum crawl depth (0 = only the starting page)
maxPagesNoMaximum number of pages to crawl
concurrencyNoNumber of pages to fetch in parallel (default: 3). Lower values are safer for small sites
excludePatternNoRegex pattern: skip URLs matching this pattern
includePatternNoRegex pattern: only crawl URLs matching this pattern
respectRobotsTxtNoRespect robots.txt rules and Crawl-delay (default: true)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already communicates that the tool is non-destructive. The description adds meaningful behavioral detail beyond that: it follows internal links, respects depth and page limits, and returns discovered pages with titles and status codes. This is a reasonable level of transparency for a read-only crawler.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences and every sentence adds value: it states the core action, the recursive behavior, the key limits, and the output format. There is no redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description, combined with a fully described input schema and the readOnlyHint annotation, gives an agent enough context to invoke the tool correctly. It explains the main behavior and output, even without an output schema. Minor details like how external links are handled or exact error conditions are not described, but they are not essential for calling the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the parameter descriptions already document each input. The description adds little beyond the schema; it mentions depth and max pages but these are already described directly in the input schema. It does not introduce any new meaning that the schema does not already provide.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action ('Crawl a website recursively starting from a URL'), names the resource, and describes the recursive link-following behavior and output. It is easy to distinguish from sibling tools like fetch_page or parse_sitemap because it uniquely identifies full-site recursive crawling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when this tool is appropriate: when you need to recursively crawl a website from a starting URL and discover pages. It does not explicitly name alternatives or say 'when not to use', but the recursive crawling language strongly implies this is for site-wide discovery rather than single-page fetches or sitemap parsing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

detect_duplicate_contentDetect Duplicate ContentA
Read-only

Detect duplicate and near-duplicate content across a site's pages. Analyzes titles, meta descriptions, H1 headings, and text content. Groups exact duplicates and identifies near-duplicates based on word similarity. Supports sitemap, crawl, or custom URL list as page source.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe site URL to analyze
urlsNoList of URLs to analyze (only used when source = 'urls')
delayNoDelay in ms between batches
limitNoMax pages to analyze
sourceNoSource of URLs: sitemap, crawl, or a provided listcrawl
concurrencyNoPages fetched in parallel
similarityThresholdNoSimilarity threshold (0-1) above which pages are considered near-duplicates

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, and the description adds meaningful behavioral context beyond that: which page elements are analyzed, how near-duplicates are determined, and that results are grouped. This gives an agent realistic expectations about the analysis logic without contradicting the read-only annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the core action and then adding supported sources. No filler or redundant restatement of the tool name. Every sentence contributes useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the main purpose, the analyzed content areas, the duplicate detection logic, and supported page sources. Since there is no output schema, a bit more detail about the result shape would be ideal, but the description still provides enough context for a correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all seven parameters. The description adds context about source modes and analysis scope, but it does not add meaningful parameter-level semantics beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action ('detect duplicate and near-duplicate content'), a clear resource ('a site's pages'), and the distinct behavior of grouping exact duplicates while identifying near-duplicates by word similarity. This distinguishes it from sibling tools like audit_content_quality or compare_pages. The purpose is immediately understandable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies when to use this tool: whenever the agent needs duplicate or near-duplicate content analysis. It also indicates the supported page sources (sitemap, crawl, URL list), which helps route the invocation. It does not explicitly exclude alternatives, so it falls just short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

detect_orphan_pagesDetect Orphan PagesA
Read-only

Detect orphan pages by cross-referencing sitemap URLs with crawled pages and internal link graph. Identifies pages with no inbound links (orphans), sitemap-only pages, crawl-only pages, and deep pages. Returns classification, link graph hubs, and sitemap/crawl coherence stats.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe site URL to analyze
delayNoDelay in ms between batches
crawlDepthNoCrawl depth
concurrencyNoPages crawled in parallel
maxCrawlPagesNoMax pages to crawl for building the link graph

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark readOnlyHint=true, so safety is covered. The description adds useful behavioral context: it performs a crawl, cross-references data sources, and outputs specific analyses (classification, hubs, coherence stats). This goes beyond the annotation without contradicting it, though it does not disclose potential rate-limit or sitemap-missing edge cases.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each adding distinct value: the first states the action and method, the second details the specific page categories found, and the third summarizes the output types. Information is front-loaded and there is no redundant phrasing or wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only analysis tool with no output schema, the description sufficiently conveys what it returns (classification, hubs, coherence stats) and what it requires (a URL, crawling, sitemap cross-referencing). It doesn't detail the output structure or behavior when a sitemap is absent, but given the annotations and 100% parameter coverage, these are minor gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter is already documented (url, delay, crawlDepth, concurrency, maxCrawlPages). The description adds no parameter-specific meaning beyond what the schema provides; it refers generally to crawls and sitemaps but doesn't clarify any of the parameters or their interplay. Baseline 3 is appropriate given full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb phrase 'Detect orphan pages' and a resource, then explains the method (cross-referencing sitemap URLs with crawled pages and internal link graph). It explicitly enumerates the categories of pages it identifies, which clearly differentiates it from sibling tools like crawl_site or parse_sitemap, even without naming them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is implied by the tool's purpose: use it to find orphan pages or analyze sitemap/crawl coherence. However, there is no explicit 'when to use' guidance, no exclusions, and no mention of alternatives (e.g., 'if you only need a crawl, use crawl_site'). The description relies on the agent inferring suitability from the tool name and first sentence.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

extract_contentExtract ContentB
Read-only

Extract structured content from a web page: headings hierarchy, paragraphs, images, links, and plain text content with statistics.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to extract content from

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already establishes that the tool performs a read-only operation, lowering the disclosure burden. The description adds useful context about the output composition (headings, paragraphs, images, links, statistics) but does not reveal behavioral traits such as rate limits, redirect handling, or JavaScript rendering. There is no contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that leads with the action verb and resource, then lists the extracted content types in a compact, readable sequence. There is no wasted wording or repetition of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter extraction tool with no output schema, the description adequately communicates the expected result: structured content elements and statistics. It does not mention potential limitations like dynamic content or redirects, but these are minor for a read-only tool whose safety profile is already covered by annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already fully documents the single 'url' parameter with a type, format, and description, so schema coverage is 100%. The tool description adds no additional parameter-level meaning beyond implying a URL from 'web page', which meets the baseline but does not enhance it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: extracting structured content from a web page, and enumerates the specific content types (headings hierarchy, paragraphs, images, links, plain text with statistics). This goes beyond a generic phrase and helps differentiate it from fetch_page or simple link extractors, though it does not explicitly name sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to choose this tool over the many sibling tools such as extract_links, extract_with_schema, or fetch_page. There is no mention of appropriate use cases, alternatives, or exclusions, leaving the agent to infer usage solely from the tool name and generic description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

extract_images_auditExtract Images AuditA
Read-only

Comprehensive image audit for a web page. Uses Puppeteer to detect all images (img, picture, CSS backgrounds) including lazy-loaded ones. Analyzes format (WebP/AVIF adoption), alt text quality, responsive images (srcset), sizing optimization, lazy loading correctness, LCP candidate optimization, and file sizes. Returns a 0-100 score with per-image details and actionable recommendations.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL of the page to audit
deviceNoViewport preset to render the page withdesktop
timeoutNoNavigation timeout in milliseconds

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

It adds meaningful behavior beyond the readOnlyHint: it uses Puppeteer, captures lazy-loaded images, and analyzes specific attributes (format, alt text, srcset, sizing, lazy loading, LCP). It also specifies the output as a 0-100 score with per-image details and recommendations, which aligns with a read-only inspection.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, with the core purpose in the first and output/coverage in the second. Every clause adds information without fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool without an output schema, the description sufficiently explains inputs, method (Puppeteer), what it checks, and what it returns (score, per-image details, recommendations). The scope of checks and the lazy-loaded behavior fill in the operational behavior an agent needs to set expectations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema describes all three parameters (url, device, timeout) with defaults and constraints, so the description carries no additional parameter-level burden. It doesn't add syntax or format details but none are needed at 100% schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Describes the tool as a 'Comprehensive image audit for a web page' with a specific verb (audit) and resource (images on a page). The list of analyses (WebP/AVIF adoption, alt text, srcset, sizing, lazy-loading, LCP) distinguishes it clearly from sibling tools such as check_performance or audit_onpage.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The first phrase 'Comprehensive image audit for a web page' gives an unambiguous use case, and the detailed analysis list clarifies it is for image-specific investigation. However, it does not explicitly say when to prefer an alternative tool, such as check_performance for overall performance or audit_onpage for general SEO.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

extract_with_schemaExtract With SchemaA
Read-only

Extract structured data from a web page using configurable CSS selectors. Supports custom schemas and built-in presets (ecommerce-product, article, local-business, recipe). Each field defines a CSS selector, optional attribute, multiple flag, and transform (text, html, number, trim, href). Fallback selectors can be provided for resilience.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL to extract data from
presetNoBuilt-in preset schema. If both preset and schema are provided, schema overrides preset fields
schemaNoExtraction schema: keys are field names, values define selector/attribute/multiple/transform
fallbackSelectorsNoFallback selectors used when primary selector finds nothing

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already establishes that this tool is safe and non-destructive. The description adds useful behavioral context about per-field transforms and fallback selectors, but it does not disclose the output format, error behavior, or whether dynamic/JavaScript-rendered pages are supported.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense, well-ordered sentences front-load the core purpose, then summarize presets and field configuration without redundancy. There is no filler and every sentence contributes useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The input side is well covered, including nested schema objects and fallback selectors, but there is no output schema and the description does not state the shape of the returned data or behavior on empty/missing selectors. For a tool with this complexity, that is a notable gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters are already documented in the structured schema. The description restates the field-level concepts and lists transform values, but it adds no additional meaning beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Extract structured data from a web page using configurable CSS selectors.' It clearly distinguishes itself from generic siblings like extract_content and extract_links by emphasizing custom schemas, built-in presets, and field-level selector configuration.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description conveys a clear usage context: use this tool when you need structured, schema-driven extraction from a webpage with custom or preset selectors. It doesn't explicitly name alternatives or state when not to use it, but the intended use case is clear enough for an agent to route appropriately among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fetch_pageFetch PageA
Read-only

Fetch a web page and return its content in the specified format (HTML, plain text, or markdown). Includes basic metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to fetch
formatNoOutput format: html (raw HTML), text (plain text), or markdownmarkdown
headersNoOptional custom HTTP headers

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already covers the safety profile, and the description adds the output format options and metadata note. It does not mention size limits, redirect handling, or JavaScript rendering, but for a simple read-only fetch this is a moderate, not severe, gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasted words, and the core action and output formats are front-loaded. It is concise while still conveying the essential behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple schema, the read-only annotation, and the absence of an output schema, the description covers the main contract: fetch a URL, choose a format, receive content plus metadata. It could be more explicit about failure/error behavior, but the description is largely sufficient for a single-page fetch tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents all three parameters with 100% coverage, so the baseline applies. The description repeats the format options from the schema but adds no new semantic detail beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states an exact action — fetching a single web page and returning its content in a selectable format — and mentions metadata. This clearly distinguishes it from multi-page tools like crawl_site and visual tools like screenshot, even though those siblings are not named.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to choose fetch_page over extract_content, crawl_site, or screenshot, and no mention of situations where it should not be used. The description explains the operation but not the decision context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

intercept_tracking_requestsIntercept Tracking RequestsA
Read-only

Intercept and analyze all tracking network requests (GA4 hits, GTM, gtag) fired during page load using Puppeteer request interception. Parses GA4 /g/collect hits for event names and measurement IDs. Detects obsolete Universal Analytics hits and duplicate events.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to monitor for tracking requests
wait_msNoMilliseconds to wait after page load to capture tracking hits (default: 3000, max: 8000)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool as read-only, and the description is consistent with that. It adds useful behavioral detail: Puppeteer request interception is used, GA4 /g/collect hits are parsed, and obsolete UA/duplicate events are detected, which goes beyond the annotation without contradicting it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, no filler, front-loaded with the main action and resource. Each sentence adds distinct information: interception scope, parsed GA4 details, and detection of obsolete UA/duplicate events.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has only two parameters and no output schema, the description covers the essential behavior and expected findings well. It does not specify the exact return structure, but the enumerated detection types give an agent enough context to understand what the tool delivers.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: both url and wait_ms are already described in the schema. The tool description adds little beyond high-level context like 'during page load', so it does not meaningfully improve parameter understanding beyond the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Describes a specific action (intercept and analyze) on a specific resource (tracking network requests), with concrete subtypes (GA4 hits, GTM, gtag) and outputs (event names, measurement IDs, obsolete UA, duplicate events). This clearly distinguishes it from sibling tools like check_gtm_snippet or check_datalayer that inspect configuration rather than network traffic.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the intended context explicit: use when you need to intercept and analyze tracking requests fired during page load. It does not name alternatives or state when not to use it, but the focus on network interception gives a clear enough signal compared to the sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

parse_sitemapParse SitemapA
Read-only

Parse a sitemap.xml file (or auto-detect it from a website URL). Supports sitemap index files and returns all discovered URLs with lastmod, changefreq, and priority.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL of the sitemap.xml or the website root (will auto-detect /sitemap.xml)

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description adds meaningful behavioral context: auto-detection behavior, support for sitemap index files (suggesting recursion), and the exact return fields. This gives an agent confidence about side effects and output scope, beyond what the annotation alone provides.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One compact sentence that front-loads the main action, then adds three high-value specifics (auto-detect, index files, return fields). No filler and no repetition of schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, single-parameter tool with no output schema, the description is sufficient: it explains what input to provide, what behavior to expect (auto-detection, index expansion), and what the output contains. There is no missing guidance that would hinder correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents the 'url' parameter as either sitemap URL or website root for auto-detection. The description adds no additional parameter-level meaning beyond what the schema states, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Parse') and resource ('sitemap.xml'), and adds distinguishing details: auto-detection from a website root, support for sitemap index files, and the specific return fields (lastmod, changefreq, priority). This clearly separates it from sibling tools like crawl_site or extract_links.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies when to use the tool: when you want URLs from a sitemap.xml or need auto-detection from a site root. It does not explicitly contrast with alternatives like crawl_site or extract_links, but the scoping is clear enough that an agent can infer the right context. Missing explicit 'when-not-to-use' guidance, so not a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

screenshotScreenshotA

Capture a screenshot of a web page using a headless browser. Returns an image as base64 (PNG or JPEG). Supports custom viewport size, full-page capture, waiting for a CSS selector, and dismissing cookie consent banners.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to capture
widthNoViewport width in pixels
formatNoImage format: png or jpegpng
heightNoViewport height in pixels
qualityNoImage quality (1-100), only used for jpeg format
fullPageNoCapture the full scrollable page
dismissCookiesNoIf true, attempt to dismiss common cookie consent banners before capturing
waitForSelectorNoCSS selector to wait for before capturing. Puppeteer will wait until this element is visible.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does disclose key behaviors: a real headless-browser render, base64 return encoding, and the capture modes (custom viewport, full-page, waiting for a selector, cookie-banner dismissal). However, it omits failure behavior, timeout/resource cost of full-page capture, and the potentially very large size of the base64 output — gaps an agent would benefit from knowing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero filler: the first states the action and return format, the second enumerates the distinguishing capabilities. The core verb is front-loaded, and every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter tool with no output schema, the description compensates well by stating the return encoding (base64 PNG/JPEG) and the main feature flags, while the schema covers parameter details. The only meaningful gap is the absence of selection guidance against the fetch/extraction siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 8 parameters. The description echoes them in prose ('custom viewport size, full-page capture, waiting for a CSS selector, dismissing cookie consent banners') without adding format, constraint, or interaction details beyond what the schema provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Capture a screenshot of a web page using a headless browser') and specifies the return format (base64 PNG/JPEG). None of the 29 sibling tools capture visual output — they fetch, extract, audit, and parse — so the tool is instantly distinguishable without inspecting the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The second sentence implies when this tool is appropriate (when rendered visual evidence is needed, with options like full-page capture and waiting for a selector), but it never explicitly names alternatives or conditions for choosing screenshot over fetch_page or extract_content. Usage context is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 29 tool updatesv4.2.0
    • First observedaudit_content_quality
    • First observedaudit_onpage
    • First observedaudit_site_batch
    • First observedaudit_tracking
    • First observedcheck_accessibility
    • First observedcheck_consent_mode
    • First observedcheck_datalayer
    • First observedcheck_gtm_snippet
    • First observedcheck_hreflang
    • First observedcheck_indexability
    • First observedcheck_links
    • First observedcheck_mobile
    • First observedcheck_performance
    • First observedcheck_redirect_chain
    • First observedcheck_robots_txt
    • First observedcheck_security_headers
    • First observedcheck_structured_data
    • First observedcompare_pages
    • First observedcrawl_site
    • First observeddetect_duplicate_content
    • First observeddetect_orphan_pages
    • First observedextract_content
    • First observedextract_images_audit
    • First observedextract_links
    • First observedextract_with_schema
    • First observedfetch_page
    • First observedintercept_tracking_requests
    • First observedparse_sitemap
    • First observedscreenshot

TDQS

A3.6/5.0
Disambiguation3/5

Several tool clusters overlap in purpose, such as fetch_page/extract_content/extract_with_schema, check_gtm_snippet/check_datalayer/intercept_tracking_requests/audit_tracking, and audit_onpage/check_structured_data. The detailed descriptions help an agent distinguish them, but the boundaries are not always obvious and require careful comparison before selecting.

Naming Consistency4/5

Most tools follow a consistent verb_noun pattern, with many check_* and audit_* names plus fetch_page, crawl_site, parse_sitemap, and compare_pages. Minor exceptions like extract_images_audit and screenshot (which lacks an explicit object) prevent a perfect score.

Tool Count2/5

At 29 tools, the set exceeds the 25+ threshold and feels heavy even for a broad SEO/web-analysis domain. Many specialized audit tools could be consolidated into grouped tools or sub-options to reduce the surface area and cognitive load.

Completeness4/5

The toolset covers the web fetching/crawling and SEO auditing lifecycle remarkably well: crawling, sitemaps, robots, redirects, broken links, extraction, on-page audits, performance, mobile, structured data, accessibility, tracking, consent, security headers, content quality, duplicates, and orphan pages. The main gaps are explicitly out-of-scope features like backlinks/keyword rankings and there is no export or persistence tool.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables web content scanning and analysis by fetching, analyzing, and extracting information from web pages using tools like page fetching, link extraction, site crawling, and more.
    6
    13
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables web scraping and document processing with JavaScript execution, anti-detection measures, batch processing, and structured data extraction. Supports multiple formats including markdown, HTML, screenshots, and handles PDFs with OCR capabilities.
    4
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables advanced web crawling and content extraction with JavaScript support, AI-powered analysis, PDF/Office document processing, YouTube transcript extraction, Google search integration, and multi-format data export capabilities.
    2
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/GeorgesAdSim/fetch-crawl-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server