Skip to main content

HCS-25 (Appendix): Trust Signal Catalog (Informative)

This document complements HCS-25 by describing trust signal concepts and providing pointers to the per-signal catalog.

It is informative-only: the exact signals and providers are expected to vary by ecosystem.

Prefer the per-signal catalog under ./signals/index.md for the current, maintainable structure.

Quick links:

A signal record SHOULD be represented as a small object that includes:

  • status: ok | missing | timeout | error | stale
  • fetchedAt: an ISO timestamp indicating when the signal was last refreshed
  • sources: a list of stable source identifiers (strings) describing where the signal was derived from
  • data: a provider-neutral payload containing the values needed by scoring adapters

Example (illustrative):

{
"status": "ok",
"fetchedAt": "2026-01-14T00:00:00Z",
"sources": ["example:monitoring:v1"],
"data": {
"uptime_30d": 0.9981,
"p50_latency_ms": 210
}
}

Signal identifier namespace pattern (normative)Direct link to Signal identifier namespace pattern (normative)

Conforming implementations MUST use stable, namespaced signal identifiers. HCS-25 defines a dot-separated namespace convention; see Signal Identifier Namespacing.

In short:

{namespace}.{name}[.{subname}...]

Where each segment is lowercase ASCII and matches /[a-z][a-z0-9_-]*/.

Implementations MUST document their chosen signal IDs and how they map to adapters.

Per-signal catalog (informative)Direct link to Per-signal catalog (informative)

The maintainable catalog lives under ./signals/index.md and includes per-signal schema pages (examples) for:

  • marketplace ecosystems (ACP, AgentVerse, ERC-8004),
  • operational signals (availability),
  • adoption signals (OSS popularity),
  • usage signals (x402), and
  • model eval signals (OpenRouter, Chatbot Arena, Hugging Face, Open LLM Leaderboard).

For adapter mappings, see Adapter Catalog or ./adapters/index.md.

Stored in: subject metadata.additional.

FieldTypeMeaning
chatbotArenaEvalScorenumber | nullNormalized score [0,100] computed from min/max Elo observed in the snapshot
chatbotArenaEvalElonumber | nullRaw Elo-like value from the source table
chatbotArenaEvalVotesnumber | nullVote/sample size indicator (if present)
chatbotArenaEvalStatusok | missingAvailability status
chatbotArenaEvalUpdatedAtISO timestampRefresh time
chatbotArenaEvalSourcesstring[]Sources list (e.g., chatbot-arena:openlm)

huggingface-model-index (model metadata + eval-like aggregation)Direct link to huggingface-model-index-model-metadata--eval-like-aggregation

Stored in: subject metadata.additional.

FieldTypeMeaning
huggingFaceModelIdstring | nullCanonical HF model id
openrouterHuggingFaceIdstring | nullHF id resolved via OpenRouter model list
huggingFaceEvalScorenumber | nullNormalized score [0,100] derived from model-index metrics and/or popularity
huggingFaceEvalMetricsCountnumberCount of included metrics
huggingFaceDownloadsnumber | nullPopularity proxy
huggingFaceLikesnumber | nullPopularity proxy
huggingFaceEvalModemodel-index | popularity | mixed | missingHow the score was produced
huggingFaceEvalStatusok | missing | errorAvailability status
huggingFaceEvalUpdatedAtISO timestampRefresh time
huggingFaceEvalSourcesstring[]Sources list (e.g., huggingface:model-index, huggingface:popularity)

openllm-leaderboard (Open LLM Leaderboard dataset)Direct link to openllm-leaderboard-open-llm-leaderboard-dataset

Stored in: subject metadata.additional.

FieldTypeMeaning
openLlmEvalScorenumber | nullNormalized score [0,100] derived from selected benchmark metrics
openLlmEvalMetricsCountnumberCount of included metrics
openLlmEvalStatusok | missing | errorAvailability status
openLlmEvalUpdatedAtISO timestampRefresh time
openLlmEvalSourcesstring[]Sources list (e.g., openllm:leaderboard:v2)