Skip to main content
Glama

Report what a website did

report_observation
Idempotent

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

Input Schema

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

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema 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. First observed

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.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources