Skip to main content
Glama

Sato Hub: Build Onchain & Crypto Agents

Search Sato Hub

search
Read-onlyIdempotent

USE WHEN you want one query box over Sato Hub, the daily-rebuilt index of what onchain and crypto AI agents are built from (frameworks, MCP servers, wallets, x402 and stablecoin payment rails, data tools), plus its dated answers, agent-economy numbers and wiki. Not for token prices, trading or investment advice. NOT FOR filtered or paginated directory queries (use onchain_agent_search_resources instead) or registered agents (use onchain_agent_search_agents).

RETURNS (json): { results: [{ id, title, url }] }, at most 10, best first, from one query string; url is the canonical satohub.ai page to cite. Pass an id to fetch for the full text. A query nothing matches returns results: [] — never padded with unrelated records — plus scope_note, what Sato Hub covers. Read-only.

Examples: "coinbase agentkit", "x402 payment rails on Base", "how many ERC-8004 agents by chain", "MCP servers that answer".

Input Schema

NameRequiredDescriptionDefault
queryYesWhat to look for, in plain words: a project name, a chain, a standard, or a question about building onchain agents. Matched on its first 200 characters.

Output Schema

NameRequiredDescriptionDefault
noteNoWith interpreted_as or needs_input: one sentence saying what was read, or what to send.
ruleNoOnly with interpreted_as: which reading (format-variant, param-alias).
resultsYesAt most 10 matches, best first. Empty when nothing matches — never padded.
about_urlNoOnly with identity_note: the satohub.ai page that says what Sato Hub is.
requestedNoOnly with interpreted_as: what was sent.
scope_noteNoOnly when nothing matched: what Sato Hub covers and how to ask it. Not a result; results stays empty.
needs_inputNoOnly when the call lacked its required argument: nothing was served; note says what to send.
suggestionsNoWhere to go next (a tool to call, or a candidate id to fetch). Suggestions, never matches.
example_callsNoWith needs_input: exact calls that would work.
identity_noteNoOnly when a search for the Sato name itself matched nothing: Sato Hub's no-token statement. Not a result.
interpreted_asNoOnly when the call was read another way (a tool name, the arguments' form): what was served.
interpretationsNoOnly when more than one reading applied: every label, the first being interpreted_as / rule.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedOutput schema / properties / suggestions / items / properties / pointer
      Added value: +{
      +  "const": true,
      +  "type": "boolean"
      +}
  2. Changed8 schema fields changed
    • addedOutput schema / properties / example_calls
      Added value: +{
      +  "description": "With needs_input: exact calls that would work.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "args": {
      +        "additionalProperties": {},
      +        "propertyNames": {
      +          "type": "string"
      +        },
      +        "type": "object"
      +      },
      +      "tool": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "tool",
      +      "args"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / interpretations
      Added value: +{
      +  "description": "Only when more than one reading applied: every label, the first being interpreted_as / rule.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "interpreted_as": {
      +        "type": "string"
      +      },
      +      "note": {
      +        "type": "string"
      +      },
      +      "requested": {
      +        "type": "string"
      +      },
      +      "rule": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "rule",
      +      "requested",
      +      "interpreted_as",
      +      "note"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / interpreted_as
      Added value: +{
      +  "description": "Only when the call was read another way (a tool name, the arguments' form): what was served.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / needs_input
      Added value: +{
      +  "description": "Only when the call lacked its required argument: nothing was served; note says what to send.",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / note
      Added value: +{
      +  "description": "With interpreted_as or needs_input: one sentence saying what was read, or what to send.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / requested
      Added value: +{
      +  "description": "Only with interpreted_as: what was sent.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / rule
      Added value: +{
      +  "description": "Only with interpreted_as: which reading (format-variant, param-alias).",
      +  "type": "string"
      +}
    • addedOutput schema / properties / suggestions
      Added value: +{
      +  "description": "Where to go next (a tool to call, or a candidate id to fetch). Suggestions, never matches.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "args": {
      +        "additionalProperties": {},
      +        "propertyNames": {
      +          "type": "string"
      +        },
      +        "type": "object"
      +      },
      +      "kind": {
      +        "type": "string"
      +      },
      +      "name": {
      +        "type": "string"
      +      },
      +      "score": {
      +        "type": "number"
      +      },
      +      "slug": {
      +        "type": "string"
      +      },
      +      "tool": {
      +        "type": "string"
      +      },
      +      "why": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "name",
      +      "tool",
      +      "why"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  3. Changed1 schema field changed
    • addedOutput schema / properties / scope_note
      Added value: +{
      +  "description": "Only when nothing matched: what Sato Hub covers and how to ask it. Not a result; results stays empty.",
      +  "type": "string"
      +}
  4. Changed2 schema fields changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  5. Changed2 schema fields changed
    • addedOutput schema / properties / about_url
      Added value: +{
      +  "description": "Only with identity_note: the satohub.ai page that says what Sato Hub is.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / identity_note
      Added value: +{
      +  "description": "Only when a search for the Sato name itself matched nothing: Sato Hub's no-token statement. Not a result.",
      +  "type": "string"
      +}
  6. Added

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, but the description adds real behavioral context: max 10 results, best-first ranking, single query string, empty-array-on-no-match with no padding plus a scope_note, and the cite-the-url convention. It also describes the handoff path (pass an id to fetch) which annotations cannot express.

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-loads the trigger, then segments NOT-FOR, RETURNS and Examples, so an agent can scan to the needed section. Dense but nearly every clause carries routing or return-shape information; the parenthetical list of index contents is slightly over-stuffed.

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?

For a single-parameter search tool this is fully covered: what it searches, what it excludes, result count and ordering, empty-result semantics, and how to continue via fetch. Output schema exists, so restating the return shape is a bonus rather than a gap.

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?

Schema coverage is 100% and the schema already explains the query field, including the 200-character matching limit, so the baseline is 3. The four example queries add concrete guidance on phrasing (project name, chain, standard, natural-language question) that meaningfully exceeds the schema's generic wording.

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 verb+resource — a single free-text query box over the Sato Hub index — and enumerates exactly what the index covers (frameworks, MCP servers, wallets, x402/stablecoin rails, data tools, wiki, agent-economy numbers). It also draws the negative boundary (not token prices/trading/advice), which no sibling tool name implies on its own.

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?

Opens with an explicit 'USE WHEN' trigger and then names two alternatives with the conditions that select them: onchain_agent_search_resources for filtered/paginated directory queries, and onchain_agent_search_agents for registered agents. Both when-to-use and when-not-to-use are covered with named fallbacks.

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.