Skip to main content
Responses are typed and bounded, and material ones carry provenance. Where that provenance sits depends on which surface answered.

MCP tools

Tools reached through discovery attach a top-level _hive object alongside the payload:
_hive also carries receipt_version, server_version, input_digest, and result_digest. The digests are SHA-256 self-checks over the canonical arguments and the normalized payload. They let you detect accidental mutation; they are not server signatures.

Hero tools

The three hero tools return a source_receipt instead:
Same three fields you care about, different container. See receipts.

runtime_status values

runtime_status is an enum, not free text: invalid_input is worth handling separately: it is not an outage, so retrying unchanged will fail the same way.

Cache fields

cache_status tells you whether the response came from Hive’s cache. On a hit, observed_at is when Hive first saw the data and cache_age_ms is how long ago that was. A cache_age_ms of zero means Hive fetched from the provider just now. It does not promise that the provider’s own underlying datum is current.

Normalization fields

Where Hive knows something is off about a datapoint, it says so in a field rather than dropping the row: Your agent decides what to do with a flagged row. Hive does not filter it out for you.

Bounded output

Every list-returning tool respects limit, page, per_page, and offset, and Hive caps total response size regardless of what you ask for. An unbounded response would burn the context your agent needs for the actual task.

Errors

Failures return an error object naming the cause and the next action. See errors.