Skip to main content
Glama

Server Details

How websites treat AI agents: bot walls, JavaScript needs, robots rules and llms.txt. Look a site up before you fetch it, report what you saw after. Free lookups (100 a day per key), free signed reports, verified when 3 independent agents agree.

Ownership verified
Status
Healthy
Uptime
100.0% over 22 days
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
ChatGPT
–
Claude
–

TDQS

A4.2/5.0

Scored across 2 tools

Disambiguation5/5

The two tools are cleanly split by lifecycle phase: lookup_origin is a pre-fetch read of a site's access posture, report_observation is a post-fetch write of a single observed fact. There is no plausible way to confuse the query tool with the contribution tool, and the descriptions reinforce the read-vs-write boundary.

Naming Consistency5/5

Both names use the same snake_case verb_noun pattern (lookup_origin, report_observation), with verbs that accurately reflect the action. No style mixing or vague verbs to decode.

Tool Count3/5

The domain is a crowd-sourced posture directory whose core loop is exactly two moves — consult before fetching, contribute after fetching — so two tools are defensible rather than arbitrary. Still, with only two tools the surface feels thin: there is no way to browse or search the directory at all, which is a natural affordance for a directory service.

Completeness4/5

The read/write loop is fully closed: you can look up a site's posture and feed back an observation, including the verification mechanics. Minor gaps exist around correcting or retracting a bad report and browsing known hosts, and agent key registration is punted to an external HTTP endpoint rather than a tool, but agents can work around these.

Available Tools

2 tools
lookup_originLook up how a website treats agentsA
Read-onlyIdempotent
Inspect

Before fetching a website, get its known access posture, bot challenge, JavaScript requirement, observed rate limit and machine interface, plus a derived fetch strategy. Returns crowd observations, not instructions. Responses may carry manifest: what the site's proven owner declares (same vocabulary), with manifest_provenance: owner_declared; it is never a verified fact. The strategy carries basis: crowd_verified (three independent agents agree) or registry_check (the registry's own plain HTTP check, with checked_at). A site never checked is checked on the spot for a registered key (free within a daily allowance, then 5 credits); check: pending means ask again in 15 seconds.

NameRequiredDescriptionDefault
hostYesHostname to look up, for example example.com. No scheme or path; www. and case are normalised.
agent_tokenNoOptional. The read_token returned when your key registered. It ties the lookup to your key and its 100 free lookups a day; once the registry enforces quotas, lookups without it are refused. Needed for a site the registry has not checked yet.
client_classNoOptional. The client you will fetch with; narrows the strategy to facts observed with that client.

TDQS

A4.1/5.0
Behavior5/5

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

Beyond the readOnly/idempotent annotations it discloses provenance semantics (crowd observations vs. owner_declared manifest, "never a verified fact"), how the strategy basis is derived (three independent agents vs. registry plain HTTP check with checked_at), the cost model (free daily allowance then 5 credits), and the asynchronous pending state with retry timing. These are exactly the traits annotations cannot express.

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 purpose is front-loaded in the first sentence and every later sentence carries operational content (provenance, basis, pricing, retry). It is somewhat dense with internal vocabulary (manifest_provenance, crowd_verified, registry_check) that could be structured as a short list rather than prose.

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?

With no output schema, the description still explains what comes back (posture fields, strategy, optional manifest with provenance, basis with checked_at) and covers cost and retry behavior. An agent has enough to call it and interpret the result without further documentation.

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 host, agent_token and client_class are already well documented, including the enum values. The description adds only marginal cross-cutting context — that a registered key triggers an on-the-spot check and that agent_token ties the lookup to a quota — so baseline 3 applies.

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 first sentence gives a specific verb and resource — get a site's access posture, bot challenge, JS requirement, rate limit, machine interface, plus a derived fetch strategy — which is far more concrete than the title alone. It does not explicitly name or contrast with the sibling report_observation, so sibling differentiation is left implicit.

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 timing is stated precisely: "Before fetching a website." It also tells the agent what to do in the pending case (ask again in 15 seconds). There is no explicit when-not guidance or routing to report_observation, so it stops short of full alternative coverage.

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

report_observationReport what a website didA
Idempotent
Inspect

After fetching a website, report one thing you actually observed so other agents do not have to rediscover it. One call is one fact (kind plus value) from the fixed vocabulary; send one call per kind you saw. Free, never charged. The key must be registered first (POST https://onlinewebdirectory.net/v1/agents, or let the onlinewebdirectory skill client do it). A fact becomes verified once three independent keys agree. Repeating the same report (same key, host, kind, client and time) is rejected, not double counted. Returns {accepted: 1, status: valuation_pending} or {error, accepted: 0}.

NameRequiredDescriptionDefault
hostYesHostname you fetched, for example example.com. No scheme or path.
kindYesWhat you are reporting. access_posture, challenge_vendor and robots_posture take one of their listed words; js_required takes true or false; observed_rate_limit_rpm (1 to 6000) and retry_after_s (0 to 86400) take whole numbers; machine_interface names an interface; machine_interface_path takes a same-site path such as /llms.txt.
valueYesThe observed value, as a string, from the vocabulary for this kind. access_posture: open, rate_limited, bot_challenged, blocked, login_required, paywalled. challenge_vendor: none, cloudflare, recaptcha, hcaptcha, datadome, perimeterx, akamai, other. robots_posture: allow, partial, disallow_all, absent. machine_interface: none, rest, graphql, rss, sitemap, llms_txt, mcp.
signatureYesBase64 Ed25519 signature, by the key below, over host, kind, value, client_class and observed_at joined with newlines in that order.
public_keyYesYour registered base64 Ed25519 public key. It identifies you; there is no other account.
observed_atYesWhen you made the fetch, RFC3339 UTC at second precision, for example 2026-09-25T12:00:00Z. Not in the future, and no older than that kind's freshness window (14 days for access_posture and challenge_vendor, up to 90 for machine_interface).
client_classYesThe kind of client that made the fetch. Sites often treat a plain HTTP client and a real browser differently, so facts are kept per client.

TDQS

A4.3/5.0
Behavior5/5

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

Annotations only give readOnlyHint=false, idempotentHint=true and destructiveHint=false. The description adds what those hints cannot: the operation is free/never charged, a key must be registered first, duplicates (same key, host, kind, client and time) are rejected rather than double counted, and a fact is only verified once three independent keys agree. That is substantial behavioral context beyond structured fields.

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 purpose, then prerequisites, then duplicate/verification semantics, then the return shape — a sensible information hierarchy with little filler. It is delivered as one dense paragraph, so the many distinct facts (cost, registration, dedup, verification, returns) could be broken up, but no sentence is wasted.

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 7-required-parameter, signature-authenticated write tool with no output schema, the description covers the prerequisite (registered key), the dedup rule, the verification threshold, the cost, and the exact response shape. Nothing essential for calling it correctly is missing, though reporting-side rate limits are not mentioned.

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 description coverage is already 100%, so the baseline is 3. The description still adds cross-parameter meaning the schema does not state: the dedup tuple that determines rejection (key, host, kind, client, observed_at) and the rule that value must come from the fixed vocabulary for the chosen kind.

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 gives a precise verb plus resource ('report one thing you actually observed' about a fetched website) and even pins the unit of work: 'One call is one fact (kind plus value)... send one call per kind you saw.' That is far above a restatement of the name. It never references the sibling lookup_origin, so the only thing separating a 4 from a 5 is sibling differentiation.

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?

Timing and mechanics are explicit: use it 'after fetching a website,' send one call per kind, and register a key first. It gives a concrete registration path. It stops short of naming lookup_origin as the read-side alternative or stating when not to report.

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.

  1. 1 tool update
    • Changedlookup_origin1 field changed
      • changedInput schema / properties / agent_token / description
        Previous value: -"Optional. The read_token returned when your key registered. It ties the lookup to your key and its 100 free lookups a day; once the registry enforces quotas, lookups without it are refused."New value: +"Optional. The read_token returned when your key registered. It ties the lookup to your key and its 100 free lookups a day; once the registry enforces quotas, lookups without it are refused. Needed for a site the registry has not checked yet."
  2. 2 tool updates
    • Changedlookup_origin2 fields changed
      • changedInput schema / properties / agent_token / description
        Previous value: -"Optional. Your read token from registration; the lookup then counts against your own free quota."New value: +"Optional. The read_token returned when your key registered. It ties the lookup to your key and its 100 free lookups a day; once the registry enforces quotas, lookups without it are refused."
      • changedInput schema / properties / host / description
        Previous value: -"Hostname, for example example.com"New value: +"Hostname to look up, for example example.com. No scheme or path; www. and case are normalised."
    • Changedreport_observation7 fields changed
      • addedInput schema / properties / client_class / description
        Added value: +"The kind of client that made the fetch. Sites often treat a plain HTTP client and a real browser differently, so facts are kept per client."
      • addedInput schema / properties / host / description
        Added value: +"Hostname you fetched, for example example.com. No scheme or path."
      • addedInput schema / properties / kind / description
        Added value: +"What you are reporting. access_posture, challenge_vendor and robots_posture take one of their listed words; js_required takes true or false; observed_rate_limit_rpm (1 to 6000) and retry_after_s (0 to 86400) take whole numbers; machine_interface names an interface; machine_interface_path takes a same-site path such as /llms.txt."
      • addedInput schema / properties / observed_at / description
        Added value: +"When you made the fetch, RFC3339 UTC at second precision, for example 2026-09-25T12:00:00Z. Not in the future, and no older than that kind's freshness window (14 days for access_posture and challenge_vendor, up to 90 for machine_interface)."
      • addedInput schema / properties / public_key / description
        Added value: +"Your registered base64 Ed25519 public key. It identifies you; there is no other account."
      • addedInput schema / properties / signature / description
        Added value: +"Base64 Ed25519 signature, by the key below, over host, kind, value, client_class and observed_at joined with newlines in that order."
      • addedInput schema / properties / value / description
        Added value: +"The observed value, as a string, from the vocabulary for this kind. access_posture: open, rate_limited, bot_challenged, blocked, login_required, paywalled. challenge_vendor: none, cloudflare, recaptcha, hcaptcha, datadome, perimeterx, akamai, other. robots_posture: allow, partial, disallow_all, absent. machine_interface: none, rest, graphql, rss, sitemap, llms_txt, mcp."
  3. 2 tool updates
    • First observedlookup_origin
    • First observedreport_observation

Publisher details

Operator
Online Web Directory · Publisher source
Vendor relationship
First-party
Trust center
Not available
Restrictions
No sign-up, OAuth or admin approval. Lookups are free up to 100 a day per agent key; above that, lookups use prepaid credits topped up in USDC via x402. Reports are always free. Agents sign requests with their own Ed25519 key, which the included client creates automatically. · Publisher source

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Enables AI agents to check whether a public website is crawlable, understandable, and ready for AI search workflows through local-only audits of robots.txt, sitemaps, metadata, and llms.txt.
    3
    71 npm
    1
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Audits AI-bot visibility: robots.txt per-bot for 22 AI user-agents (GPTBot/ClaudeBot/PerplexityBot/etc), Cloudflare flags, JSON-LD, sitemap, llms.txt, SPA shell, plus cross-model brand mentions via Perplexity + OpenRouter. 0-100 score. SSRF-guarded, spend-capped.
    4
    1
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Checks a site for AI crawlers: which of 11 AI crawlers its robots.txt lets in, whether its llms.txt follows llmstxt.org, and what its home page says without scripts. Findings with evidence; no scores, no model calls, no telemetry.
    5
    79 npm
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents to audit and improve a site's visibility in AI search by checking robots.txt against 17 major AI crawlers, detecting llms.txt, and returning a 0-100 visibility score with per-crawler verdicts; it also lists known AI crawlers and their purposes.
    2
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources