Skip to main content
Glama

Sato Hub: Build Onchain & Crypto Agents

Build any crypto agent: goal in, stack and install steps out

onchain_agent_recommend_stack
Read-onlyIdempotent

USE WHEN someone wants to build any onchain or crypto agent ("Build any crypto agent") and says what it should do in plain words: "a trading agent on Base", "an ElizaOS agent that charges via x402", "a TypeScript agent with a policy-controlled wallet". This is the FIRST call for a build goal: goal → stack here, then onchain_agent_get_deploy_spec once per pick → install steps. NOT FOR looking up one named project (use onchain_agent_search_resources instead), the same stack as one composed answer with deploy specs, Preflight and a first action (use onchain_agent_build_plan), or the runnable repo itself (use onchain_agent_create_agent).

RETURNS (json) real directory listings in slots (framework, wallet, payments, trading, data, MCP tooling, security; live agents someone else runs are kept out of trading), each pick with its Sato Score, liveness, deploy-spec status, github_url and a records-only preflight_summary (verdict, rule, the readings it turned on), plus honest gaps. A standard (x402, ERC-8004, A2A, MCP), runtime (TypeScript/Node, Python) or wallet control (policy, spending limit, session keys, permissions) the goal names lifts the picks whose own record names it — quoted in the reason, self-reported. save_stack_url opens the goal in the Sato Hub planner for the person you are building for. When a nightly-checked template answers the goal, create names it and the first next step is to generate that runnable repo with onchain_agent_create_agent. Only when no template matches, a Base goal with a wallet, swap, trading or x402 payments that names TypeScript/Node or no runtime carries starter, a TypeScript template repo built by Sato Hub (holds no key, signs nothing, not audited; runtime_basis says whether the goal named the runtime) — never a pick.

KEYS AND MONEY COME WITH IT: every pick carries trust_spec — what it does with your keys and money, from Sato Check, dated: whether it takes your key, whether a planted test key was observed leaving, whether it can move funds on its own, the version read, the Preflight verdict, and what the reading does not cover. It is decided by the pick (category, payment standard, wallet material in its setup), not by the goal's words, and needs no extra call. Show each pick's trust_spec.line to the person you are building for; trust_warnings (top of the answer) lists any pick where a planted key was observed leaving or code reads key material its setup does not declare. For a newer reading, trust_spec.fresh_check.check_install is the onchain_agent_check_install call and preflight_summary.full_check the onchain_agent_preflight call that returns every evidence line — run them before anything is installed, connected, paid or traded. Ranking reflects openness/activity/verifiability — never a safety, quality, or returns judgment; a Preflight unknown means no record, not a problem. Read-only.

Example: { goal: "trading agent on Base with x402 payments", chain: "Base" }

Input Schema

NameRequiredDescriptionDefault
goalYesWhat the agent should do, in plain words — e.g. 'trading agent on Base with x402 payments'
chainNoPreferred chain (e.g. Base, Solana)
max_per_slotNoMax picks per stack slot (default 3)
verified_onlyNoTrue = only picks whose documented install was reproduced in a container by Sato Hub. Slots with no verified pick are reported in `gaps` rather than widened.
response_formatNoText format; structuredContent is JSON either way.markdown

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
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  3. 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."
  4. Changed1 schema field changed
    • addedInput schema / properties / verified_only
      Added value: +{
      +  "description": "True = only picks whose documented install was reproduced in a container by Sato Hub. Slots with no verified pick are reported in `gaps` rather than widened.",
      +  "type": "boolean"
      +}
  5. First observed

TDQS

A4.6/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 substantial context beyond them: trust_spec contents (key handling, planted-key observations, fund-movement ability, dated readings), trust_warnings semantics, the caveat that ranking is not a safety/returns judgment, and that Preflight 'unknown' means no record rather than a problem. It also discloses the caveated starter template (holds no key, signs nothing, not audited).

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 and well-organized with explicit USE WHEN / NOT FOR / RETURNS / KEYS AND MONEY sections, so the reader hits routing information first. However, the RETURNS and KEYS AND MONEY paragraphs are dense run-on sentences with heavy nested clauses that dilute scannability.

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?

There is no output schema, so the description carries the full burden of explaining returns — and it does: slot structure, per-pick fields (Sato Score, liveness, deploy-spec status, github_url, trust_spec), preflight_summary contents, honest gaps, save_stack_url, and the starter fallback. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents goal, chain, max_per_slot, verified_only, and response_format — the baseline is 3. The description adds goal interpretation context (plain words, examples) and how named standards/runtimes influence picks, but no syntax or format detail beyond the schema.

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+scope ('goal → stack') and positions itself as the FIRST call for a build goal, with the follow-on chain to onchain_agent_get_deploy_spec spelled out. It also names the exact siblings it is not (search_resources, build_plan, create_agent), so an agent can route correctly without opening another 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?

An explicit 'USE WHEN' with concrete plain-word goal examples ('a trading agent on Base', 'an ElizaOS agent that charges via x402') plus a 'NOT FOR' block that names each alternative and the condition that selects it. When/when-not/alternatives are all present.

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.