Online Web Directory
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.
- Status
- Healthy
- Uptime
- 100.0% over 22 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 2 tools
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.
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.
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.
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 toolslookup_originLook up how a website treats agentsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | Hostname to look up, for example example.com. No scheme or path; www. and case are normalised. | |
| agent_token | No | 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. | |
| client_class | No | Optional. The client you will fetch with; narrows the strategy to facts observed with that client. |
TDQS
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.
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.
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.
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.
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.
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 didAIdempotentInspect
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}.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | Hostname you fetched, for example example.com. No scheme or path. | |
| kind | Yes | 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. | |
| value | Yes | 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. | |
| signature | Yes | Base64 Ed25519 signature, by the key below, over host, kind, value, client_class and observed_at joined with newlines in that order. | |
| public_key | Yes | Your registered base64 Ed25519 public key. It identifies you; there is no other account. | |
| observed_at | Yes | 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). | |
| client_class | Yes | 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. |
TDQS
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.
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.
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.
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.
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.
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 tool update
- Changed
lookup_origin1 field changed- changed
Input schema / properties / agent_token / descriptionPrevious 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 tool updates
- Changed
lookup_origin2 fields changed- changed
Input schema / properties / agent_token / descriptionPrevious 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." - changed
Input schema / properties / host / descriptionPrevious 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."
- Changed
report_observation7 fields changed- added
Input schema / properties / client_class / descriptionAdded 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." - added
Input schema / properties / host / descriptionAdded value: +"Hostname you fetched, for example example.com. No scheme or path." - added
Input schema / properties / kind / descriptionAdded 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." - added
Input schema / properties / observed_at / descriptionAdded 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)." - added
Input schema / properties / public_key / descriptionAdded value: +"Your registered base64 Ed25519 public key. It identifies you; there is no other account." - added
Input schema / properties / signature / descriptionAdded value: +"Base64 Ed25519 signature, by the key below, over host, kind, value, client_class and observed_at joined with newlines in that order." - added
Input schema / properties / value / descriptionAdded 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 tool updates
- First observed
lookup_origin - First observed
report_observation
Publisher details
- Operator
- Online Web Directory · Publisher source
- Operator website
- https://onlinewebdirectory.net · Publisher source
- Vendor relationship
- First-party
- Documentation
- https://onlinewebdirectory.net/install.md · Publisher source
- 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
What a domain publishes for AI agents: ai-catalog.json, llms.txt, agents.md, robots.txt rules. Free.
How an AI agent sees a public website: robots, llms.txt, sitemap, agent card, scored fixes. Host in.
Check if a website will block your AI agent and find its llms.txt, MCP or OpenAPI door.
Web pages for AI agents: may-I-use checks, prompt-injection flags, Markdown, JSON, screenshots
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables 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.371 npm1MIT
- AlicenseAqualityDmaintenanceAudits 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.41MIT

QueryRev AI Readinessofficial
AlicenseAqualityCmaintenanceChecks 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.579 npmMIT- AlicenseAqualityCmaintenanceEnables 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.2MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.