Skip to main content
Glama

AstraVerify Domain Trust Check

Fetch the root page as a named crawler

fetch_as_crawler
Read-onlyIdempotent

Show exactly what one named crawler receives from the domain's root page. Use when the person asks "what does Google see?" or "can ChatGPT read my site?", and whenever check_discoverability reports a crawl-access problem. check_discoverability scores crawl access across all six crawlers; this returns the one raw response behind that score, which is what explains such a result rather than restating it. robots.txt can read perfectly while a CDN or firewall returns 403 to one crawler and 200 to another, and only a real fetch shows that. Inputs: domain (bare, like example.com) and agent, exactly one of googlebot, bingbot, oai-searchbot, perplexitybot, claudebot, gptbot. Call it once per crawler to compare them. Returns the HTTP status, the full redirect chain, response headers, content type, the text that crawler would index, and flags for an outright block or a bot-challenge page - which is how cloaking becomes visible. One live fetch of the root page, nothing else, and it changes nothing.

Input Schema

NameRequiredDescriptionDefault
agentYes
domainYesThe domain to check, as the person gave it (no scheme, no path). Reserved names such as example.com are refused.

Output Schema

NameRequiredDescriptionDefault
msNo
agentYes
chainNoRedirect hops
errorNo
labelNoThe crawler as its operator names it
titleNo
domainYes
statusNoHTTP status the crawler received
blockedNoThe response refused the crawler (403, 429 or similar)
extractNoThe text this crawler would index; null when the fetch failed
headersNo
challengeNoA bot-challenge page rather than the site
final_urlNo
request_idNoreq_... for this call. Quote it when reporting a problem with the result.
content_typeNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedOutput schema / properties / request_id
      Added value: +{
      +  "description": "req_... for this call. Quote it when reporting a problem with the result.",
      +  "type": "string"
      +}
  2. Changed5 schema fields changed
    • changedOutput schema / properties / content_type / type
      Previous value: -"string"New value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / properties / extract / description
      Previous value: -"The text this crawler would index"New value: +"The text this crawler would index; null when the fetch failed"
    • changedOutput schema / properties / extract / type
      Previous value: -"string"New value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / properties / final_url / type
      Previous value: -"string"New value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / properties / title / type
      Previous value: -"string"New value: +[
      +  "string",
      +  "null"
      +]
  3. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "agent": {
      +      "type": "string"
      +    },
      +    "blocked": {
      +      "description": "The response refused the crawler (403, 429 or similar)",
      +      "type": "boolean"
      +    },
      +    "chain": {
      +      "description": "Redirect hops",
      +      "items": {
      +        "properties": {
      +          "status": {
      +            "type": "integer"
      +          },
      +          "url": {
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "challenge": {
      +      "description": "A bot-challenge page rather than the site",
      +      "type": "boolean"
      +    },
      +    "content_type": {
      +      "type": "string"
      +    },
      +    "domain": {
      +      "type": "string"
      +    },
      +    "error": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "extract": {
      +      "description": "The text this crawler would index",
      +      "type": "string"
      +    },
      +    "final_url": {
      +      "type": "string"
      +    },
      +    "headers": {
      +      "additionalProperties": {
      +        "type": "string"
      +      },
      +      "type": "object"
      +    },
      +    "label": {
      +      "description": "The crawler as its operator names it",
      +      "type": "string"
      +    },
      +    "ms": {
      +      "type": "integer"
      +    },
      +    "status": {
      +      "description": "HTTP status the crawler received",
      +      "type": [
      +        "integer",
      +        "null"
      +      ]
      +    },
      +    "title": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "domain",
      +    "agent"
      +  ],
      +  "type": "object"
      +}
  4. First observed

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/openWorld, but the description adds genuine behavioral context: it is a single live root-page fetch, it discloses what is returned (status, redirect chain, headers, indexed text, block/bot-challenge flags), and explains that robots.txt can read fine while a CDN returns 403. That rationale is value beyond structured fields, though the 'changes nothing' clause is largely redundant with 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.

Conciseness4/5

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

Front-loaded with the core purpose and usage triggers before the explanatory rationale and return details. Every sentence earns its place, though the passage is on the long side and the closing 'nothing else, and it changes nothing' partly restates the annotations.

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 two-param live-fetch tool with an output schema, the description covers purpose, alternatives, inputs, scope limitations (root page only), and the diagnostic context for interpreting a block or challenge. Nothing an agent needs to call it correctly is missing.

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

Parameters4/5

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

Schema coverage is 50% (agent enum has no schema description). The description compensates by specifying domain format ('bare, like example.com') and enumerating all six valid agent values, which adds real meaning beyond the bare enum list.

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 and resource ('Show exactly what one named crawler receives from the domain's root page') and explicitly distinguishes itself from the sibling check_discoverability. An agent can tell what this does and how it differs from the scoring tool without opening a schema.

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?

Gives explicit triggers ('what does Google see?', 'can ChatGPT read my site?', whenever check_discoverability reports a crawl-access problem) and names the alternative with the condition that selects it. It also instructs 'Call it once per crawler to compare them,' covering multi-call usage.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources