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
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL

TDQS

A4/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have clearly distinct purposes: lookup_origin is a read/query operation used before fetching a website, while report_observation is a write/report operation used after fetching. There is no overlap or ambiguity between them.

Naming Consistency5/5

Both tool names follow a consistent verb_noun pattern in snake_case (lookup_origin, report_observation). The convention is predictable and easy to understand.

Tool Count3/5

With only 2 tools, the surface is thin for a service named 'Online Web Directory'. While each tool earns its place, the count is borderline and suggests a minimal implementation rather than a fully scoped directory interface.

Completeness3/5

The core read/write loop for site access postures is covered, but notable operations are missing: no way to list or search known origins, no tool to check verification status of reported observations, and no update/delete for observations. For a directory, these gaps limit discoverability and lifecycle management.

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.

ParametersJSON Schema
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.
client_classNoOptional. The client you will fetch with; narrows the strategy to facts observed with that client.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so safety is covered. The description adds genuinely useful behavioral context beyond that: results are crowd observations rather than instructions, and manifests are owner_declared and "never a verified fact" — a trust caveat an agent needs before acting on the data.

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 precondition is front-loaded in the first clause and the rest is dense but purposeful, with no filler sentences. The field enumeration is somewhat list-heavy but each item earns its place by telling the agent what the response contains.

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 carries the burden of describing returns, and it does: posture, challenge, JS requirement, rate limit, machine interface, derived strategy, plus the conditional manifest field. The only real gap is that per-field shapes and freshness/confidence of the crowd data are not described.

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 host, agent_token and client_class are already fully documented in the schema, including quota implications and enum values. The description adds no parameter-level detail beyond the schema, which is the expected baseline of 3.

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?

States a specific verb (look up) and resource (a host's access posture) and enumerates the concrete fields returned: bot challenge, JavaScript requirement, rate limit, machine interface, fetch strategy. The read-only lookup nature separates it from the sibling report_observation, though the description never names that sibling to make the contrast explicit.

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?

"Before fetching a website" gives a clear precondition that tells the agent when this tool belongs in a workflow. It does not name report_observation as the alternative or state when not to call it, so the guidance stops short of explicit routing.

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}.

ParametersJSON Schema
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. 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."
  2. 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
    45 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
    Not graded
    quality
    C
    maintenance
    Enables AI agents to create, validate, and audit llms.txt files for websites, including checking against Google Lighthouse's Agentic Browsing requirements, via Streamable HTTP with no API key needed.
    5 npm
    2
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Give AI agents cryptographically signed proof of web observations: Ed25519-signed proof packets (HTTP status, page title, body SHA-256, DNS, TLS) for any public URL.
    1
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources