Skip to main content
Glama

Sato Hub: Build Onchain & Crypto Agents

Find crypto-agent tooling by name, chain, standard or what it does

onchain_agent_search_resources
Read-onlyIdempotent

USE WHEN you need to look up crypto-agent tooling (frameworks, MCP servers, wallets, payment rails, data tools) by name, chain, standard or what it does, or check that a specific project exists and is maintained. A daily-rebuilt directory, each entry scored from public evidence and linking to a citable page. NOT FOR a build goal in plain words such as "a trading agent on Base" (use onchain_agent_recommend_stack instead), a RUNNING agent to hire or pay (use onchain_agent_search_agents), a downloadable agent package (use onchain_agent_search_listings), what an agent skill touches (use onchain_agent_search_skills), or one record by slug (use onchain_agent_get_resource). search is the one-box version for ChatGPT deep research.

RETURNS (json): { total, count, offset, has_more, next_offset?, resources: [...] }; each resource has chains, status, liveness, github_stars, verification_status and the marketplace fields (is_agent/is_hirable/is_licensable). Read-only. With NO argument it is a compact overview (rule "defaulted": complete rows, fewer, plus directory counts); detail: "full" is the full first page.

FILTERS: query (free text, AND-matched terms), chain, status, liveness, featured, and the taxonomy facets (docs/taxonomy.md) entity_class, resource_type, use_case, standard and iface — closed vocabularies listed in the input schema: anything else is refused with the list, never answered with an empty result. Legacy flags still work: category, is_agent, is_skill, is_harness. Sort by priority (default), newest_release, stars, or name. Paginates via limit/offset. Deprecated resources are never returned.

STARTING POINTS: a query asking for somewhere to start — "tutorial", "starter", "beginner", "template", "example", "docs" — returns starting points labelled as such: listings named as a starter or template first, then listings whose install Sato Hub reproduced, plus the wiki guides. "starter" / "template" / "x402 starter" also carry templates: a pointer to onchain_agent_create_agent and the templates catalogue (never a result), unless the query names another chain or runtime. Only when the catalogue has no template for Base is it starter instead: a TypeScript template built by Sato Hub (labelled ours, not audited, never a result). The directory lists tools, not tutorials, and says so.

Examples:

  • "Active hirable agents on Base" -> { chain: "Base", is_agent: true, liveness: "Active" }

  • "newest releases" -> { sort: "newest_release", limit: 10 }

  • "wallet tooling" -> { query: "wallet" }

  • "MCP servers I can use from Claude Code" -> { integration: "claude code", iface: "mcp" }

  • "things I can run in Docker" -> { deploys_as: "docker" }

  • "MCP servers that actually answer" -> { mcp_answering: true } (the MCP endpoint answered our last handshake)

  • "...with a sustained record" -> { mcp_answering: true, min_observed_success: 95 }

  • "only installs Sato Hub has reproduced" -> { verified_only: true }

Input Schema

NameRequiredDescriptionDefault
sortNoSort order: priority (default), newest_release, stars, or name.priority
chainNoFilter to resources supporting this chain.
ifaceNoFilter by how it is accessed/integrated. One of: mcp, sdk, rest-api, plugin, cli, ui, contract.
limitNoMax results to return (1-50, default 20).
queryNoFree-text search across name, description, tags, chains, and agent type. Space-separated terms are AND-matched.
detailNo'full' returns the full first page (20 rows by default) even with no filter. Omitted with no other argument, the answer is a compact overview: the first rows in the default order, what the directory holds by category and chain, and the exact calls for the rest. Any query, filter, sort, limit or offset answers as before.
offsetNoResults to skip, for pagination (default 0).
statusNoFilter by lifecycle status.
creatorNoFilter by who built it (prefix match on creator name), e.g. 'Coinbase', 'Privy'.
categoryNoFilter to a resource category.
featuredNoTrue = only editorially featured resources.
is_agentNoTrue = only resources that are themselves onchain agents.
is_skillNoTrue = only agent-skill resources (skill repos/marketplaces).
livenessNoCode activity (commit or release, not posts): Active ≤30d, Recent ≤90d, Quiet ≤1y, Dormant >1y.
standardNoFilter to resources implementing a standard. One of: x402, erc-8004, erc-8183, mcp, a2a.
use_caseNoFilter by use case. One of: trading, payments, wallets, data, identity, privacy, launch, security, build, airdrops.
deploys_asNoFilter by deployment shape: npm, pip, docker, mcp server, hosted, self-hosted, cli, sdk, claude code plugin.
is_harnessNoTrue = only agent frameworks/harnesses (OpenClaw, Codex, Claude Code…).
integrationNoFilter to resources that integrate with a client or framework, e.g. 'claude code', 'cursor', 'langchain', 'openclaw'. Case-insensitive exact match.
entity_classNoFilter by class: 'resource' = things you build/deploy WITH (frameworks, tools, infra, venues, standards); 'agent' = curated, live onchain agents; 'reference' = editorial.
mcp_answeringNoTrue = only listings whose MCP ENDPOINT answered Sato Hub's most recent MCP handshake (one check of ours, not uptime). Use this for 'which MCP servers answer'; min_observed_success alone is mostly a check of a listing's website.
resource_typeNoFilter resources by role. Venue = DEX/launchpad/marketplace; Network = an L1/L2.
verified_onlyNoTrue = only listings whose documented install was reproduced in a container by Sato Hub (deploy_status verified). Says nothing about runtime safety.
response_formatNoText format; structuredContent is JSON either way.markdown
min_observed_daysNoMinimum days of daily observation behind the success rate, counted in the rate window (default 14 when min_observed_success is set).
min_observed_successNoOnly listings whose share of Sato Hub's daily checks that succeeded is at least this percent, over at least min_observed_days (default 14). The rate and the days both count only checks in the rate window: from 2026-09-01 (when the probe stopped counting a bot-block as a failure) if an earlier check failed, else from the first check. This is the share of OUR checks, not uptime.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / chain / enum
      Previous value: -[
      -  "Ethereum",
      -  "Base",
      -  "Solana",
      -  "Arbitrum",
      -  "Optimism",
      -  "Polygon",
      -  "Avalanche",
      -  "BNB Chain",
      -  "Cosmos",
      -  "Bitcoin",
      -  "Sui",
      -  "Aptos",
      -  "Near",
      -  "COTI",
      -  "Injective",
      -  "XRP Ledger",
      -  "Gnosis",
      -  "Hyperliquid",
      -  "Sei",
      -  "Starknet",
      -  "zkSync",
      -  "Monad",
      -  "MegaETH",
      -  "Berachain",
      -  "TON",
      -  "Tron",
      -  "Robinhood Chain",
      -  "Multichain",
      -  "Unknown"
      -]New value: +[
      +  "Ethereum",
      +  "Base",
      +  "Solana",
      +  "Arbitrum",
      +  "Optimism",
      +  "Polygon",
      +  "Avalanche",
      +  "BNB Chain",
      +  "Cosmos",
      +  "Bitcoin",
      +  "Sui",
      +  "Aptos",
      +  "Near",
      +  "COTI",
      +  "Injective",
      +  "XRP Ledger",
      +  "Gnosis",
      +  "Hyperliquid",
      +  "Sei",
      +  "Starknet",
      +  "zkSync",
      +  "Monad",
      +  "MegaETH",
      +  "Berachain",
      +  "TON",
      +  "Tron",
      +  "Robinhood Chain",
      +  "Tempo",
      +  "Multichain",
      +  "Unknown"
      +]
  2. Changed1 schema field changed
    • addedInput schema / properties / detail
      Added value: +{
      +  "description": "'full' returns the full first page (20 rows by default) even with no filter. Omitted with no other argument, the answer is a compact overview: the first rows in the default order, what the directory holds by category and chain, and the exact calls for the rest. Any query, filter, sort, limit or offset answers as before.",
      +  "enum": [
      +    "summary",
      +    "full"
      +  ],
      +  "type": "string"
      +}
  3. Changed3 schema fields changed
    • addedInput schema / properties / use_case / anyOf
      Added value: +[
      +  {
      +    "enum": [
      +      "trading",
      +      "payments",
      +      "wallets",
      +      "data",
      +      "identity",
      +      "privacy",
      +      "launch",
      +      "security",
      +      "build",
      +      "airdrops"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  }
      +]
    • removedInput schema / properties / use_case / enum
      Removed value: -[
      -  "trading",
      -  "payments",
      -  "wallets",
      -  "data",
      -  "identity",
      -  "privacy",
      -  "launch",
      -  "security",
      -  "build",
      -  "airdrops"
      -]
    • removedInput schema / properties / use_case / type
      Removed value: -"string"
  4. Changed2 schema fields changed
    • changedInput schema / properties / min_observed_days / description
      Previous value: -"Minimum days of daily observation behind the success rate (default 14 when min_observed_success is set)."New value: +"Minimum days of daily observation behind the success rate, counted in the rate window (default 14 when min_observed_success is set)."
    • changedInput schema / properties / min_observed_success / description
      Previous value: -"Only listings whose share of Sato Hub's daily checks that succeeded is at least this percent, over at least min_observed_days (default 14). This is the share of OUR checks, not uptime."New value: +"Only listings whose share of Sato Hub's daily checks that succeeded is at least this percent, over at least min_observed_days (default 14). The rate and the days both count only checks in the rate window: from 2026-09-01 (when the probe stopped counting a bot-block as a failure) if an earlier check failed, else from the first check. This is the share of OUR checks, not uptime."
  5. 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"
    • changedInput schema / properties / category / enum
      Previous value: -[
      -  "Onchain Agent",
      -  "MCP",
      -  "Skill Repo",
      -  "Agent Framework",
      -  "Agent Launchpad",
      -  "Agent Marketplace",
      -  "Wallet Infrastructure",
      -  "DeFi Tool",
      -  "Trading Tool",
      -  "DAO Tool",
      -  "Research Tool",
      -  "Data Tool",
      -  "Security Tool",
      -  "Developer Tool",
      -  "API / SDK",
      -  "Research Paper",
      -  "Newsletter",
      -  "Community",
      -  "Other"
      -]New value: +[
      +  "Onchain Agent",
      +  "MCP",
      +  "Skill Repo",
      +  "Agent Framework",
      +  "Agent Launchpad",
      +  "Agent Marketplace",
      +  "Wallet Infrastructure",
      +  "Payment Rail",
      +  "DeFi Tool",
      +  "Trading Tool",
      +  "DAO Tool",
      +  "Research Tool",
      +  "Data Tool",
      +  "Security Tool",
      +  "Developer Tool",
      +  "API / SDK",
      +  "Research Paper",
      +  "Newsletter",
      +  "Community",
      +  "Other"
      +]
  6. Changed2 schema fields changed
    • changedInput schema / properties / use_case / description
      Previous value: -"Filter by use case. One of: trading, payments, wallets, data, identity, privacy, launch, security, build."New value: +"Filter by use case. One of: trading, payments, wallets, data, identity, privacy, launch, security, build, airdrops."
    • changedInput schema / properties / use_case / enum
      Previous value: -[
      -  "trading",
      -  "payments",
      -  "wallets",
      -  "data",
      -  "identity",
      -  "privacy",
      -  "launch",
      -  "security",
      -  "build"
      -]New value: +[
      +  "trading",
      +  "payments",
      +  "wallets",
      +  "data",
      +  "identity",
      +  "privacy",
      +  "launch",
      +  "security",
      +  "build",
      +  "airdrops"
      +]
  7. Changed1 schema field changed
    • changedInput schema / properties / liveness / description
      Previous value: -"Filter by activity recency: Active (≤30d), Recent (≤90d), Quiet (≤1y), Dormant (>1y)."New value: +"Code activity (commit or release, not posts): Active ≤30d, Recent ≤90d, Quiet ≤1y, Dormant >1y."
  8. Changed1 schema field changed
    • changedInput schema / properties / response_format / description
      Previous value: -"Output format: 'markdown' (human-readable, default) or 'json' (machine-readable)."New value: +"Text format; structuredContent is JSON either way."
  9. Changed1 schema field changed
    • addedInput schema / properties / mcp_answering
      Added value: +{
      +  "description": "True = only listings whose MCP ENDPOINT answered Sato Hub's most recent MCP handshake (one check of ours, not uptime). Use this for 'which MCP servers answer'; min_observed_success alone is mostly a check of a listing's website.",
      +  "type": "boolean"
      +}
  10. Changed9 schema fields changed
    • changedInput schema / properties / iface / description
      Previous value: -"Filter by how it is accessed/integrated: mcp, sdk, rest-api, plugin, cli, ui, contract."New value: +"Filter by how it is accessed/integrated. One of: mcp, sdk, rest-api, plugin, cli, ui, contract."
    • addedInput schema / properties / iface / enum
      Added value: +[
      +  "mcp",
      +  "sdk",
      +  "rest-api",
      +  "plugin",
      +  "cli",
      +  "ui",
      +  "contract"
      +]
    • removedInput schema / properties / iface / maxLength
      Removed value: -40
    • changedInput schema / properties / standard / description
      Previous value: -"Filter to resources supporting a standard: x402, erc-8004, erc-8183, mcp, a2a."New value: +"Filter to resources implementing a standard. One of: x402, erc-8004, erc-8183, mcp, a2a."
    • addedInput schema / properties / standard / enum
      Added value: +[
      +  "x402",
      +  "erc-8004",
      +  "erc-8183",
      +  "mcp",
      +  "a2a"
      +]
    • removedInput schema / properties / standard / maxLength
      Removed value: -40
    • changedInput schema / properties / use_case / description
      Previous value: -"Filter by use case: trading, payments, wallets, data, identity, privacy, launch, security, build."New value: +"Filter by use case. One of: trading, payments, wallets, data, identity, privacy, launch, security, build."
    • addedInput schema / properties / use_case / enum
      Added value: +[
      +  "trading",
      +  "payments",
      +  "wallets",
      +  "data",
      +  "identity",
      +  "privacy",
      +  "launch",
      +  "security",
      +  "build"
      +]
    • removedInput schema / properties / use_case / maxLength
      Removed value: -40
  11. Changed6 schema fields changed
    • addedInput schema / properties / creator
      Added value: +{
      +  "description": "Filter by who built it (prefix match on creator name), e.g. 'Coinbase', 'Privy'.",
      +  "maxLength": 60,
      +  "type": "string"
      +}
    • addedInput schema / properties / deploys_as
      Added value: +{
      +  "description": "Filter by deployment shape: npm, pip, docker, mcp server, hosted, self-hosted, cli, sdk, claude code plugin.",
      +  "maxLength": 40,
      +  "type": "string"
      +}
    • addedInput schema / properties / integration
      Added value: +{
      +  "description": "Filter to resources that integrate with a client or framework, e.g. 'claude code', 'cursor', 'langchain', 'openclaw'. Case-insensitive exact match.",
      +  "maxLength": 40,
      +  "type": "string"
      +}
    • addedInput schema / properties / min_observed_days
      Added value: +{
      +  "description": "Minimum days of daily observation behind the success rate (default 14 when min_observed_success is set).",
      +  "maximum": 400,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / min_observed_success
      Added value: +{
      +  "description": "Only listings whose share of Sato Hub's daily checks that succeeded is at least this percent, over at least min_observed_days (default 14). This is the share of OUR checks, not uptime.",
      +  "maximum": 100,
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / verified_only
      Added value: +{
      +  "description": "True = only listings whose documented install was reproduced in a container by Sato Hub (deploy_status verified). Says nothing about runtime safety.",
      +  "type": "boolean"
      +}
  12. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare read-only, idempotent, open-world, non-destructive behavior, but the description adds substantial context beyond that: deprecated resources are never returned, closed-vocabulary filters are refused with the valid list rather than silently empty, the directory is daily-rebuilt and evidence-scored, and the no-argument default returns a compact overview with counts. It even notes that min_observed_success is a share of the provider's checks, not uptime.

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?

The description is front-loaded with USE WHEN / NOT FOR and organized under clear section headings, which suits a 26-parameter tool. It is long, and the FILTERS section partly repeats the input schema, but the length is largely earned by the tool's complexity and the examples are compact.

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 26 optional parameters, no output schema, and full schema coverage, the description is complete: it outlines the return shape, explains pagination and defaulting behavior, covers special query semantics, and warns about the closed-vocabulary refusal. Nothing essential for correct invocation appears 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?

Schema description coverage is 100%, so the baseline is 3. The description still adds meaning beyond the schema: it documents the closed-vocabulary refusal behavior, the special 'starter'/'template' query semantics, the no-argument compact-overview behavior, and concrete natural-language-to-parameter examples. Some filter lists restate the schema, but the added behavioral nuance justifies a 4.

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 opens with a specific verb+resource ('look up crypto-agent tooling') and enumerates the dimensions by which it can be searched. It also explicitly distinguishes this tool from five sibling search/retrieval tools in the NOT FOR section, so an agent can tell it apart without opening any 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?

The USE WHEN / NOT FOR structure gives explicit when-to-use and when-not-to-use guidance. Each excluded case names the correct alternative tool (onchain_agent_recommend_stack, search_agents, search_listings, search_skills, get_resource), leaving no routing ambiguity.

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.