Skip to main content
Glama

Sato Hub: Build Onchain & Crypto Agents

How fresh is the data behind each answer

onchain_agent_get_data_freshness
Read-onlyIdempotent

USE WHEN you are about to quote a Sato Hub number, score, count or feed item and want to know how old it is — or when a figure looks stale and you need to know whether the pipeline behind it is late. NOT FOR how a number is measured (use onchain_agent_explain_number instead) or what changed in the directory (use onchain_agent_recent_changes).

COVERS, per data surface (directory activity, news, Sato Score, liveness checks, snapshots, ERC-8004 counts, the weekly agent-economy measurements, x402, LP pools, skills, deploy verification and more): when it was last collected successfully, when a collection was last attempted and how that ended, how often it is expected to run, whether it is late, the next scheduled run, and the ledger step it was read from.

RULE ENFORCED: late = now − last success > 1.5 × the expected cadence (daily 36h, weekly 252h). A surface built from several pipeline steps is as fresh as its stalest step, and one of its steps never succeeding makes it late. A surface with no recorded success at all returns last_success_at: null and late: null — unknown, never an invented date. If the ledger cannot be read, every surface is unknown, never "fresh". A late surface still serves its last good data: quote it WITH its date.

RETURNS (json): { generated_at, ledger, rule, surfaces: [{ surface, what, expected_every, last_success_at, last_attempt_at, last_status, late, state, age_hours, late_after_hours, next_update, source, steps: [{ step, last_success_at, last_attempt_at, last_status }], served_by }], note, source_url, sato_url }. Timestamps and statuses of data jobs only — no usage figures. Read-only.

Example: { surface: "sato_score" }

Input Schema

NameRequiredDescriptionDefault
surfaceNoOne data surface to check. Omit for all of them. Surfaces: directory_activity, news, erc8004_count, agent_tokens, liveness, sato_score, snapshots, x402_bazaar, x402_answers_daily, erc8004_endpoints_daily, mcp_alive_daily, erc8004_router_pool, passports, erc8004_census, x402_throughput, erc8004_agents_celo, custody_profiles, sato_scan, sato_scan_census, agent_economy, x402_settlement, lp_pools, skills, deploy_verification, custody_observed, dead_project_sweep.
response_formatNoText format; structuredContent is JSON either way.markdown

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  2. Changed2 schema fields changed
    • changedInput schema / properties / surface / description
      Previous value: -"One data surface to check. Omit for all of them. Surfaces: directory_activity, news, erc8004_count, agent_tokens, liveness, sato_score, snapshots, x402_bazaar, x402_answers_daily, erc8004_endpoints_daily, mcp_alive_daily, erc8004_router_pool, passports, erc8004_census, x402_throughput, custody_profiles, sato_scan, sato_scan_census, agent_economy, x402_settlement, lp_pools, skills, deploy_verification, custody_observed, dead_project_sweep."New value: +"One data surface to check. Omit for all of them. Surfaces: directory_activity, news, erc8004_count, agent_tokens, liveness, sato_score, snapshots, x402_bazaar, x402_answers_daily, erc8004_endpoints_daily, mcp_alive_daily, erc8004_router_pool, passports, erc8004_census, x402_throughput, erc8004_agents_celo, custody_profiles, sato_scan, sato_scan_census, agent_economy, x402_settlement, lp_pools, skills, deploy_verification, custody_observed, dead_project_sweep."
    • changedInput schema / properties / surface / enum
      Previous value: -[
      -  "directory_activity",
      -  "news",
      -  "erc8004_count",
      -  "agent_tokens",
      -  "liveness",
      -  "sato_score",
      -  "snapshots",
      -  "x402_bazaar",
      -  "x402_answers_daily",
      -  "erc8004_endpoints_daily",
      -  "mcp_alive_daily",
      -  "erc8004_router_pool",
      -  "passports",
      -  "erc8004_census",
      -  "x402_throughput",
      -  "custody_profiles",
      -  "sato_scan",
      -  "sato_scan_census",
      -  "agent_economy",
      -  "x402_settlement",
      -  "lp_pools",
      -  "skills",
      -  "deploy_verification",
      -  "custody_observed",
      -  "dead_project_sweep"
      -]New value: +[
      +  "directory_activity",
      +  "news",
      +  "erc8004_count",
      +  "agent_tokens",
      +  "liveness",
      +  "sato_score",
      +  "snapshots",
      +  "x402_bazaar",
      +  "x402_answers_daily",
      +  "erc8004_endpoints_daily",
      +  "mcp_alive_daily",
      +  "erc8004_router_pool",
      +  "passports",
      +  "erc8004_census",
      +  "x402_throughput",
      +  "erc8004_agents_celo",
      +  "custody_profiles",
      +  "sato_scan",
      +  "sato_scan_census",
      +  "agent_economy",
      +  "x402_settlement",
      +  "lp_pools",
      +  "skills",
      +  "deploy_verification",
      +  "custody_observed",
      +  "dead_project_sweep"
      +]
  3. Changed1 schema field changed
    • changedInput schema / properties / response_format / description
      Previous value: -"Output format: 'markdown' (default) or 'json'."New value: +"Text format; structuredContent is JSON either way."
  4. Changed2 schema fields changed
    • changedInput schema / properties / surface / description
      Previous value: -"One data surface to check. Omit for all of them. Surfaces: directory_activity, news, erc8004_count, agent_tokens, liveness, sato_score, snapshots, x402_bazaar, x402_answers_daily, erc8004_endpoints_daily, mcp_alive_daily, erc8004_router_pool, passports, erc8004_census, x402_throughput, custody_profiles, agent_economy, x402_settlement, lp_pools, skills, deploy_verification, custody_observed, dead_project_sweep."New value: +"One data surface to check. Omit for all of them. Surfaces: directory_activity, news, erc8004_count, agent_tokens, liveness, sato_score, snapshots, x402_bazaar, x402_answers_daily, erc8004_endpoints_daily, mcp_alive_daily, erc8004_router_pool, passports, erc8004_census, x402_throughput, custody_profiles, sato_scan, sato_scan_census, agent_economy, x402_settlement, lp_pools, skills, deploy_verification, custody_observed, dead_project_sweep."
    • changedInput schema / properties / surface / enum
      Previous value: -[
      -  "directory_activity",
      -  "news",
      -  "erc8004_count",
      -  "agent_tokens",
      -  "liveness",
      -  "sato_score",
      -  "snapshots",
      -  "x402_bazaar",
      -  "x402_answers_daily",
      -  "erc8004_endpoints_daily",
      -  "mcp_alive_daily",
      -  "erc8004_router_pool",
      -  "passports",
      -  "erc8004_census",
      -  "x402_throughput",
      -  "custody_profiles",
      -  "agent_economy",
      -  "x402_settlement",
      -  "lp_pools",
      -  "skills",
      -  "deploy_verification",
      -  "custody_observed",
      -  "dead_project_sweep"
      -]New value: +[
      +  "directory_activity",
      +  "news",
      +  "erc8004_count",
      +  "agent_tokens",
      +  "liveness",
      +  "sato_score",
      +  "snapshots",
      +  "x402_bazaar",
      +  "x402_answers_daily",
      +  "erc8004_endpoints_daily",
      +  "mcp_alive_daily",
      +  "erc8004_router_pool",
      +  "passports",
      +  "erc8004_census",
      +  "x402_throughput",
      +  "custody_profiles",
      +  "sato_scan",
      +  "sato_scan_census",
      +  "agent_economy",
      +  "x402_settlement",
      +  "lp_pools",
      +  "skills",
      +  "deploy_verification",
      +  "custody_observed",
      +  "dead_project_sweep"
      +]
  5. Changed2 schema fields changed
    • changedInput schema / properties / surface / description
      Previous value: -"One data surface to check. Omit for all of them. Surfaces: directory_activity, news, erc8004_count, agent_tokens, liveness, sato_score, snapshots, x402_bazaar, x402_answers_daily, erc8004_endpoints_daily, mcp_alive_daily, erc8004_router_pool, passports, erc8004_census, x402_throughput, agent_economy, x402_settlement, lp_pools, skills, deploy_verification, dead_project_sweep."New value: +"One data surface to check. Omit for all of them. Surfaces: directory_activity, news, erc8004_count, agent_tokens, liveness, sato_score, snapshots, x402_bazaar, x402_answers_daily, erc8004_endpoints_daily, mcp_alive_daily, erc8004_router_pool, passports, erc8004_census, x402_throughput, custody_profiles, agent_economy, x402_settlement, lp_pools, skills, deploy_verification, custody_observed, dead_project_sweep."
    • changedInput schema / properties / surface / enum
      Previous value: -[
      -  "directory_activity",
      -  "news",
      -  "erc8004_count",
      -  "agent_tokens",
      -  "liveness",
      -  "sato_score",
      -  "snapshots",
      -  "x402_bazaar",
      -  "x402_answers_daily",
      -  "erc8004_endpoints_daily",
      -  "mcp_alive_daily",
      -  "erc8004_router_pool",
      -  "passports",
      -  "erc8004_census",
      -  "x402_throughput",
      -  "agent_economy",
      -  "x402_settlement",
      -  "lp_pools",
      -  "skills",
      -  "deploy_verification",
      -  "dead_project_sweep"
      -]New value: +[
      +  "directory_activity",
      +  "news",
      +  "erc8004_count",
      +  "agent_tokens",
      +  "liveness",
      +  "sato_score",
      +  "snapshots",
      +  "x402_bazaar",
      +  "x402_answers_daily",
      +  "erc8004_endpoints_daily",
      +  "mcp_alive_daily",
      +  "erc8004_router_pool",
      +  "passports",
      +  "erc8004_census",
      +  "x402_throughput",
      +  "custody_profiles",
      +  "agent_economy",
      +  "x402_settlement",
      +  "lp_pools",
      +  "skills",
      +  "deploy_verification",
      +  "custody_observed",
      +  "dead_project_sweep"
      +]
  6. Added

TDQS

A4.8/5.0
Behavior5/5

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

Even though annotations declare readOnlyHint=true, idempotent, openWorld and non-destructive, the description adds rich behavioral context beyond them: the 1.5x cadence lateness rule, the stalest-step aggregation, null handling for unknown surfaces, the 'unknown never fresh' failure mode when the ledger is unreadable, and that late surfaces still serve last good data. This is far more than the annotations carry.

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 USE WHEN and NOT FOR before the detailed COVERS/RULE/RETURNS sections. Dense but well-organized; the long surface list and return-shape paragraph are borderline verbose but each earns its place for a complex tool.

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?

Given no output schema, the description fully specifies the return shape, the per-surface and per-step fields, failure modes, and the lateness rule. Nothing an agent needs to call and interpret the tool correctly is missing.

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 already enumerates all 26 surfaces and both parameters at 100% coverage, so the description needn't repeat them. It does add meaning by stating that omitting surface returns all of them and by giving a concrete example call, though it doesn't explain the response_format enum beyond what the schema says.

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?

States a specific question the tool answers (how old is the data behind a figure) with a concrete verb and resource, and explicitly names the sibling tools it is NOT (onchain_agent_explain_number, onchain_agent_recent_changes). An agent can distinguish it from siblings without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit USE WHEN conditions (before quoting a Sato Hub figure, or when a figure looks stale) and explicit NOT FOR alternatives with the sibling to use instead. Nothing is left to inference.

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.