Skip to main content
Glama

trooth_outside_in_read

Read-onlyIdempotent

Fetch https:/// and /.well-known/security.txt once, when called, from Trooth's server and report whether HTTPS answered, which of five response headers (HSTS, CSP, nosniff, frame protection, referrer policy) are present, and whether security.txt is published, absent or unread. IP literals and names resolving to private, loopback or link-local addresses are refused; redirects are reported, not followed; each request stops after 4 seconds. Observations, not witnessed evidence, not a grade.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
domainYesDomain to read, e.g. example.com

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
statusYesMachine-branchable outcome for this lookup.
subjectYesThe company, domain or token this answer is about.
summaryYesThe same answer as the text content, for display.
evidenceNoPresent on a published profile. What this answer is built from, what it leaves out, and where to get the rest. The summary is a summary: the typed facts with their provenance are in the record at full_record.
claim_urlNoPresent when the subject has no published record (unclaimed or private).
provenanceYesWhere this answer came from. An honest_absence is missing data, never a judgment about the subject. A read_failed means Trooth could not read its own record at this moment and asserts nothing either way; retry rather than concluding. witnessed_reading: a published profile whose reading Trooth witnessed; the profile is not signed, and the one signed object is the reading's witness statement (see evidence.signed_artifact). connected_system_reads: read from systems the company connected. ledger_token_signatures: the result of checking a Trust Ledger Token's two signatures; the claims inside it stay the company's. witnessed_signed is DEPRECATED since 2026-09-26 and no longer returned; it meant any of the three above.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedOutput schema / properties / evidence
      Added value: +{
      +  "description": "Present on a published profile. What this answer is built from, what it leaves out, and where to get the rest. The summary is a summary: the typed facts with their provenance are in the record at full_record.",
      +  "properties": {
      +    "counts": {
      +      "description": "The reading's counts, from the source named. witness_statement: read, as expected and not read in this reading. result_tally: an older reading's own tally, not a count of checks read.",
      +      "properties": {
      +        "as_expected": {
      +          "type": "integer"
      +        },
      +        "in_reading": {
      +          "type": [
      +            "integer",
      +            "null"
      +          ]
      +        },
      +        "not_read": {
      +          "type": [
      +            "integer",
      +            "null"
      +          ]
      +        },
      +        "read": {
      +          "type": "integer"
      +        },
      +        "source": {
      +          "enum": [
      +            "witness_statement",
      +            "result_tally"
      +          ],
      +          "type": "string"
      +        }
      +      },
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "facts_published": {
      +      "type": [
      +        "integer",
      +        "null"
      +      ]
      +    },
      +    "full_record": {
      +      "description": "The canonical record as JSON, contract 2, with every typed fact, its provenance and its date where known.",
      +      "type": "string"
      +    },
      +    "last_witnessed": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "omitted": {
      +      "description": "What the summary leaves out. Every item is in full_record.",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "profile_signed": {
      +      "description": "Always false. The profile is not signed.",
      +      "type": "boolean"
      +    },
      +    "schema": {
      +      "type": "string"
      +    },
      +    "signed_artifact": {
      +      "description": "The one signed object behind this answer, or null when the reading carries none. It is served, byte for byte as signed, in the witnessStatement field of full_record.",
      +      "properties": {
      +        "covers": {
      +          "type": "string"
      +        },
      +        "key_id": {
      +          "type": "string"
      +        },
      +        "read_at": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "type": {
      +          "type": "string"
      +        },
      +        "verify": {
      +          "type": "string"
      +        }
      +      },
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    }
      +  },
      +  "type": "object"
      +}
    • changedOutput schema / properties / provenance / description
      Previous value: -"Where this answer came from. An honest_absence is missing data, never a judgment about the subject. A read_failed means Trooth could not read its own record at this moment and asserts nothing either way; retry rather than concluding."New value: +"Where this answer came from. An honest_absence is missing data, never a judgment about the subject. A read_failed means Trooth could not read its own record at this moment and asserts nothing either way; retry rather than concluding. witnessed_reading: a published profile whose reading Trooth witnessed; the profile is not signed, and the one signed object is the reading's witness statement (see evidence.signed_artifact). connected_system_reads: read from systems the company connected. ledger_token_signatures: the result of checking a Trust Ledger Token's two signatures; the claims inside it stay the company's. witnessed_signed is DEPRECATED since 2026-09-26 and no longer returned; it meant any of the three above."
    • changedOutput schema / properties / provenance / enum
      Previous value: -[
      -  "witnessed_signed",
      -  "signed_scan",
      -  "live_observation",
      -  "honest_absence",
      -  "withheld_by_owner",
      -  "knowledge_base",
      -  "input_error",
      -  "self_declared",
      -  "read_failed"
      -]New value: +[
      +  "witnessed_reading",
      +  "connected_system_reads",
      +  "ledger_token_signatures",
      +  "witnessed_signed",
      +  "signed_scan",
      +  "live_observation",
      +  "honest_absence",
      +  "withheld_by_owner",
      +  "knowledge_base",
      +  "input_error",
      +  "self_declared",
      +  "read_failed"
      +]
  2. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnly/openWorld/idempotent behavior, and the description adds substantial behavioral detail beyond them: requests originate from Trooth's server, run once, stop after 4 seconds, redirects are not followed, and private/loopback/link-local names are refused. It also clarifies epistemic status as observations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is dense but not bloated: each clause adds operational or interpretive information. The main action is front-loaded, followed by constraints and result framing, with no wasted words.

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 an output schema present, the description need not restate return values. It covers edge cases (private addresses, redirects, timeouts) and result interpretation, making it fully sufficient for an agent to select and invoke the tool correctly.

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?

The schema covers the single 'domain' parameter at 100%, so the baseline is 3. The description adds value by clarifying that IP literals and names resolving to private/loopback/link-local addresses are rejected, and that the domain is fetched from Trooth's server.

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?

The description names a specific verb and resource: 'Fetch https://<domain>/ and /.well-known/security.txt once... and report'. It enumerates the exact outputs (HTTPS answered, five headers, security.txt status), making it distinguishable from sibling tools like trooth_verify.

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?

It gives clear operational context: one-shot read from Trooth's server, with refusals, redirects, and timeout behavior. The phrase 'Observations, not witnessed evidence, not a grade' serves as an exclusion for evidence-grade use, though it does not explicitly name sibling alternatives.

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.