Skip to main content
Glama

Contribute Fact Observation

observe_fact

After independently performing a source-backed validation, deposit the observed result for later CHECKs. Returns accepted=true when a new observation is stored or deduplicated=true for a recognized retry/recent duplicate. Never OBSERVE hearsay. Optional Ed25519 proof establishes key possession and continuity, not truth or real-world independence.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
factYesSource-backed fact coordinate for the independently obtained observation.
valueYesValue independently obtained by the caller. Mutable observed content is excluded from fact identity.
observed_atNoISO-8601 time when the caller obtained the observation. Omit to use server receipt time.
observer_idNoOptional self-asserted continuity label. It is unverified unless accompanied by observer_proof.
observer_proofNoOptional Ed25519 proof of key possession, continuity and payload integrity; not proof of truth or real-world independence.
idempotency_keyNoCaller-chosen retry key for the same OBSERVE operation. Reusing it deduplicates an idempotent retry.
source_validatorNoOptional source-validator metadata from the independent validation. The caller decides whether a returned hint is sufficient for source confirmation.
evidence_fingerprintNoOptional caller-supplied fingerprint of the independently obtained evidence. SeenRelay stores it as provenance metadata and does not verify it against the source.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
hiveNoCurrent bounded Hive admission/lease state.
errorNoPresent when OBSERVE cannot be admitted or is controlled. This is not a statement about source truth.
reasonNoDeduplication reason when accepted=false and deduplicated=true.
acceptedNoTrue when a new independently obtained observation was stored. Omitted when OBSERVE cannot be admitted.
fact_keyNoCanonical SeenRelay fact identity for this coordinate.
deduplicatedNoTrue when an idempotent/recent duplicate was recognized and no new observation row was needed.
future_check_eligibleNoWhether the accepted or deduplicated observation is eligible to support later CHECKs under normal freshness rules.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$defs": {
      +    "__schema0": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "number"
      +        },
      +        {
      +          "type": "boolean"
      +        },
      +        {
      +          "type": "null"
      +        },
      +        {
      +          "items": {
      +            "$ref": "#/$defs/__schema0"
      +          },
      +          "type": "array"
      +        },
      +        {
      +          "additionalProperties": {
      +            "$ref": "#/$defs/__schema0"
      +          },
      +          "propertyNames": {
      +            "type": "string"
      +          },
      +          "type": "object"
      +        }
      +      ]
      +    }
      +  },
      +  "$schema": "https://json-schema.org/draft/2020-12/schema",
      +  "additionalProperties": {},
      +  "description": "OBSERVE result. accepted=true means a new observation was stored; deduplicated=true means the retry/recent duplicate was recognized.",
      +  "properties": {
      +    "accepted": {
      +      "description": "True when a new independently obtained observation was stored. Omitted when OBSERVE cannot be admitted.",
      +      "type": "boolean"
      +    },
      +    "deduplicated": {
      +      "description": "True when an idempotent/recent duplicate was recognized and no new observation row was needed.",
      +      "type": "boolean"
      +    },
      +    "error": {
      +      "additionalProperties": {},
      +      "description": "Present when OBSERVE cannot be admitted or is controlled. This is not a statement about source truth.",
      +      "properties": {
      +        "code": {
      +          "description": "Stable machine-readable service/admission error code.",
      +          "type": "string"
      +        },
      +        "detail": {
      +          "description": "Human-readable error detail. A tool error is not evidence that the source value is unchanged.",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "code",
      +        "detail"
      +      ],
      +      "type": "object"
      +    },
      +    "fact_key": {
      +      "description": "Canonical SeenRelay fact identity for this coordinate.",
      +      "type": "string"
      +    },
      +    "future_check_eligible": {
      +      "description": "Whether the accepted or deduplicated observation is eligible to support later CHECKs under normal freshness rules.",
      +      "type": "boolean"
      +    },
      +    "hive": {
      +      "$ref": "#/$defs/__schema0",
      +      "description": "Current bounded Hive admission/lease state."
      +    },
      +    "reason": {
      +      "description": "Deduplication reason when accepted=false and deduplicated=true.",
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  2. Changed19 schema fields changed
    • addedInput schema / properties / evidence_fingerprint / description
      Added value: +"Optional caller-supplied fingerprint of the independently obtained evidence. SeenRelay stores it as provenance metadata and does not verify it against the source."
    • addedInput schema / properties / fact / description
      Added value: +"Source-backed fact coordinate for the independently obtained observation."
    • addedInput schema / properties / fact / properties / locator / properties / scheme / description
      Added value: +"Source-native locator type: RFC 6901-style JSON pointer, stable HTML element id, or stable source-native key."
    • addedInput schema / properties / fact / properties / locator / properties / value / description
      Added value: +"Source-native locator value. json_pointer values must begin with /; locator bytes are otherwise preserved."
    • addedInput schema / properties / fact / properties / qualifiers / description
      Added value: +"Identity-bearing semantic qualifiers. Include only fields needed to distinguish otherwise identical source-backed facts."
    • addedInput schema / properties / fact / properties / source / description
      Added value: +"Stable credential-free absolute HTTP(S) source URL. Tracking parameters are removed; authentication or signature query parameters are rejected."
    • addedInput schema / properties / idempotency_key / description
      Added value: +"Caller-chosen retry key for the same OBSERVE operation. Reusing it deduplicates an idempotent retry."
    • addedInput schema / properties / observed_at / description
      Added value: +"ISO-8601 time when the caller obtained the observation. Omit to use server receipt time."
    • addedInput schema / properties / observer_id / description
      Added value: +"Optional self-asserted continuity label. It is unverified unless accompanied by observer_proof."
    • addedInput schema / properties / observer_proof / description
      Added value: +"Optional Ed25519 proof of key possession, continuity and payload integrity; not proof of truth or real-world independence."
    • addedInput schema / properties / observer_proof / properties / nonce / description
      Added value: +"16..64 random bytes encoded as unpadded base64url."
    • addedInput schema / properties / observer_proof / properties / public_key / description
      Added value: +"Raw 32-byte Ed25519 public key encoded as unpadded base64url."
    • addedInput schema / properties / observer_proof / properties / scheme / description
      Added value: +"Observer proof contract version."
    • addedInput schema / properties / observer_proof / properties / signature / description
      Added value: +"Raw 64-byte Ed25519 signature encoded as unpadded base64url."
    • addedInput schema / properties / observer_proof / properties / timestamp / description
      Added value: +"ISO-8601 signing time; it must fall within the configured proof-skew window."
    • addedInput schema / properties / source_validator / description
      Added value: +"Optional source-validator metadata from the independent validation. The caller decides whether a returned hint is sufficient for source confirmation."
    • addedInput schema / properties / source_validator / properties / kind / description
      Added value: +"Type of observer-supplied source-validator metadata."
    • addedInput schema / properties / source_validator / properties / value / description
      Added value: +"Observer-supplied validator value. Stored and returned only as a hint; SeenRelay does not verify it against the source."
    • addedInput schema / properties / value / description
      Added value: +"Value independently obtained by the caller. Mutable observed content is excluded from fact identity."
  3. First observed

TDQS

A4.8/5.0
Behavior5/5

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

The description discloses what the tool stores (observations, provenance metadata) and what it does not verify (source validators, evidence fingerprints, observer proof). It clearly states that Ed25519 proof establishes only key possession and continuity, not truth or independence.

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 concise, using three sentences to cover purpose, return behavior, and a critical warning. No redundant or filler information is present.

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?

The description covers output behavior (accepted/deduplicated), idempotency key usage, and the non-verification nature of optional metadata. Combined with the rich schema and sibling context, it fully equips an agent to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Every parameter has a detailed schema description, including nested objects like fact, observer_proof, and source_validator. The tool description adds context about source-backed validation and the purpose of optional fields, fully covering parameter semantics.

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 clearly states the tool's function: depositing source-backed observations for later retrieval, with specific return semantics (accepted/deduplicated). It distinguishes it from check_fact by indicating observations are stored for later CHECKs.

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 description gives explicit preconditions: use only after independently performing source-backed validation, and warns against hearsay. It does not explicitly name check_fact as the retrieval alternative, but the phrase 'for later CHECKs' implies the distinction.

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.