Sato Hub
Annual report

State of Onchain Agents 2026

Every number comes with its method and the query that reproduces it.

  • Findings19
  • As of2026-10-19
How to read these numbersShowHide

Nothing in this document is typed in; every number has the query that reproduces it. The rows do not add across venues, chains or stages — that is a property of the data, not a formatting choice. "Unknown" means unknown, never zero.

Tools & installs

4 findings
  1. 39.9%

    of listings with install steps, reproduced in a container

    As ofSample313
    MethodShowHide

    Share of listings with a deploy spec whose install we reproduced in a container

    Stage
    directory / deploy_status=verified
    Method
    weekly container run of the published install steps
    Sample
    313
    As of
    2026-10-19
    Note
    125 of 313. Says the install steps complete; nothing about runtime or safety.

    Reproduce

    jq '[.[]|select(.deploy_spec!=null)]|length, ([.[]|select(.deploy_spec.deploy_status=="verified" or any(.deploy_spec.install_variants[]?; .deploy_status=="verified"))]|length)' data/resources.json
    Open this number
  2. 184 / 335

    install runs completed, out of all recorded

    As ofSample335
    MethodShowHide

    Container verification attempts recorded, and how many passed

    Stage
    deploy_verification_runs
    Method
    one row per (slug, ran_at, lane) from the weekly verifier
    Sample
    335
    As of
    2026-10-19
    Note
    A failing run names the rung it failed on; the queue retries failures after 28 days. A credentials rung means the spec needs a secret the harness does not hold, not that the install is broken.

    Reproduce

    select count(*) filter (where ok), count(*) from deploy_verification_runs;
    Open this number
  3. 430

    listings with an observed record of our own daily checks

    As ofSample430
    MethodShowHide

    Listings with a 14-day observed record of our own checks

    Stage
    directory / uptime_observed.rate_days ≥ 14
    Method
    daily probe of the endpoint the listing publishes
    Sample
    430
    As of
    2026-10-19
    Note
    A success rate of OUR checks, not uptime: it covers only checks since 2026-09-01, when a bot-block stopped counting as a failure.

    Reproduce

    jq '[.[]|select(.uptime_observed.success_rate_pct!=null)]|length' data/resources.json
    Open this number
  4. 88.6%

    of observed listings that answered nearly every check

    As ofSample430
    MethodShowHide

    Share of those answering ≥95% of our checks

    Stage
    directory / observed success ≥ 95
    Method
    same probe series
    Sample
    430
    As of
    2026-10-19

    Reproduce

    jq '[.[]|select(.uptime_observed.success_rate_pct>=95)]|length' data/resources.json
    Open this number

Agent identities

8 findings

Counts per chain do not add up. Each is its own stage.

  1. 54,306

    agent IDs registered. A registration is not a running agent

    As of
    MethodShowHide

    ERC-8004 agents registered on Ethereum

    Stage
    erc8004 / Ethereum / registered
    Method
    lastAgentId (_lastId, ERC-7201 namespaced storage slot) on the singleton Identity Registry (tier 1)
    Sample
    n/a
    As of
    2026-10-19
    Note
    Read from the registry's storage; a registration is a mint, not a running agent.

    Reproduce

    select value, unit, method, sample_size, caveat from agent_metrics_history where venue='erc8004' and chain='Ethereum' and stage='registered' and week='2026-W43';
    Open this number
  2. 271,519

    agent IDs registered. A registration is not a running agent

    As of
    MethodShowHide

    ERC-8004 agents registered on Base

    Stage
    erc8004 / Base / registered
    Method
    lastAgentId (_lastId, ERC-7201 namespaced storage slot) on the singleton Identity Registry (tier 1)
    Sample
    n/a
    As of
    2026-10-19
    Note
    Read from the registry's storage; a registration is a mint, not a running agent.

    Reproduce

    select value, unit, method, sample_size, caveat from agent_metrics_history where venue='erc8004' and chain='Base' and stage='registered' and week='2026-W43';
    Open this number
  3. 376,540

    agent IDs registered. A registration is not a running agent

    As of
    MethodShowHide

    ERC-8004 agents registered on BNB Chain

    Stage
    erc8004 / BNB Chain / registered
    Method
    lastAgentId (_lastId, ERC-7201 namespaced storage slot) on the singleton Identity Registry (tier 1)
    Sample
    n/a
    As of
    2026-10-19
    Note
    Read from the registry's storage; a registration is a mint, not a running agent.

    Reproduce

    select value, unit, method, sample_size, caveat from agent_metrics_history where venue='erc8004' and chain='BNB Chain' and stage='registered' and week='2026-W43';
    Open this number
  4. 176,818

    new agent IDs registered since block 51,523,550

    As of
    MethodShowHide

    New ERC-8004 registrations on Base over the window

    Stage
    erc8004 / Base / registered_new_in_window
    Method
    lastAgentId at the head minus lastAgentId at block 51523550 — exact, whole population, no sampling (tier 1)
    Sample
    n/a
    As of
    2026-10-19
    Note
    From block-sampled storage deltas; the row states its window.

    Reproduce

    select value, unit, method, sample_size, caveat from agent_metrics_history where venue='erc8004' and chain='Base' and stage='registered_new_in_window' and week='2026-W43';
    Open this number
  5. Unknown

    sampled smart accounts that hold an agent ID or paid an x402 seller

    As of
    MethodShowHide

    Sampled smart accounts that ALSO hold an ERC-8004 id or settle x402

    Stage
    erc4337_accounts / Base / intersected
    Method
    for up to 250 distinct accounts from the deployment sample: balanceOf(account) on the ERC-8004 Identity Registry, plus membership of the set of addresses that paid a catalogued x402 seller in the same window (tier 2)
    Sample
    0
    As of
    2026-10-19
    Note
    The intersection is the number, not either count alone. This is the only figure on this venue that may be described as adoption, and it is still an indicator rather than proof — an account can hold an agent id without being an agent. Both legs are one-week windows; an account that settled x402 last month does not appear.

    Reproduce

    select value, unit, method, sample_size, caveat from agent_metrics_history where venue='erc4337_accounts' and chain='Base' and stage='intersected' and week='2026-W43';
    Open this number
  6. 1,696

    program accounts. At most this many agents

    As of
    MethodShowHide

    Solana agent-identity program accounts (UPPER BOUND)

    Stage
    solana_mpl_agent_identity / Solana / registered_upper_bound
    Method
    getProgramAccounts on 1DREGFgysWYxLnRnKQnwrxnJQeSMk2HmGaC6whw2B2p with a zero-length dataSlice (keys only) via public mainnet RPC; count of returned accounts (tier 2)
    Sample
    n/a
    As of
    2026-10-19
    Note
    getProgramAccounts counts every account the program owns, agents or not. An account is not an agent, and the count includes per-agent metadata PDAs and unused entries. Read as 'at most this many'. Solana x402 settlement is NOT covered by any row in this collector.

    Reproduce

    select value, unit, method, sample_size, caveat from agent_metrics_history where venue='solana_mpl_agent_identity' and chain='Solana' and stage='registered_upper_bound' and week='2026-W43';
    Open this number
  7. 120

    sampled registrations from api.imd.fun

    As ofSample233
    MethodShowHide

    Largest single producing platform in the ERC-8004 sample (api.imd.fun, not in the directory)

    Stage
    erc8004 / Ethereum / registered_by_platform
    Method
    agentURI classified as url; stratified sample: the trailing 30 days split into 12 equal block segments, up to 20 registrations taken from each, applied identically on every chain (tier 2)
    Sample
    233
    As of
    2026-10-19
    Note
    Attribution by agentURI host; a host is strong evidence of the producer, not proof. Sample count, never scaled to the population. A host is where the agent's metadata is served — strong evidence of the producing platform, not proof of it.

    Reproduce

    select value, unit, method, sample_size, caveat from agent_metrics_history where venue='erc8004' and chain='Ethereum' and stage='registered_by_platform' and week='2026-W43';
    Open this number
  8. 8

    sampled Base registrations that declare no agent URI

    As ofSample127
    MethodShowHide

    Sampled Base registrations that declare no agentURI at all

    Stage
    erc8004 / Base / registered_by_platform
    Method
    agentURI classified as absent; stratified sample: the trailing 30 days split into 12 equal block segments, up to 20 registrations taken from each, applied identically on every chain (tier 1)
    Sample
    127
    As of
    2026-10-19
    Note
    An observation about the registrations, not a parse failure. These registrations declare NO agentURI at all. That is an observation, not a parse failure.

    Reproduce

    select value, unit, method, sample_size, caveat from agent_metrics_history where venue='erc8004' and chain='Base' and stage='registered_by_platform' and week='2026-W43';
    Open this number

Payments

4 findings
  1. Unknown

    sampled Virtuals tokens that moved in the past week

    As of
    MethodShowHide

    Virtuals agent tokens with a transfer in the last 7 days

    Stage
    virtuals / Base / token_active_7d
    Method
    eth_getLogs failed partway: Log response size exceeded. Maximum allowed number of requested blocks is 1000 (tier 3)
    Sample
    n/a
    As of
    2026-10-19
    Note
    Share of the catalogue, denominator stated in the row. Window scan incomplete — unknown, not zero.

    Reproduce

    select value, unit, method, sample_size, caveat from agent_metrics_history where venue='virtuals' and chain='Base' and stage='token_active_7d' and week='2026-W43';
    Open this number
  2. 291,810

    USDC transfers to catalogued x402 sellers, machine noise excluded

    As of
    MethodShowHide

    x402 settlements to catalogued sellers after the noise filter

    Stage
    x402 / Base / settled_to_catalogued_seller_real
    Method
    the settled_to_catalogued_seller lane minus transfers to sellers where mean transfer < $0.02 AND distinct payers <= 3 over the window (heuristic; thresholds are constants, stated here) (tier 3)
    Sample
    n/a
    As of
    2026-10-19
    Note
    Real vs nominal: mean ≤ $0.02 with ≤ 3 payers is classified as noise and reported as a second figure. A heuristic, not a fact: 592 of 1438 paid sellers (24,993 transfers, $240) were classified as machine noise this window. The nominal row is unchanged and sits beside this one.

    Reproduce

    select value, unit, method, sample_size, caveat from agent_metrics_history where venue='x402' and chain='Base' and stage='settled_to_catalogued_seller_real' and week='2026-W43';
    Open this number
  3. 846

    catalogued x402 sellers paid, machine noise excluded

    As of
    MethodShowHide

    Catalogued x402 sellers paid at least once (real)

    Stage
    x402 / Base / seller_paid_real
    Method
    the seller_paid lane minus sellers classified as machine noise by the same rule (tier 3)
    Sample
    n/a
    As of
    2026-10-19
    Note
    Heuristic. A seller with one automated customer is real revenue to that seller; it is excluded here because the question this row answers is breadth of demand, not existence of it.

    Reproduce

    select value, unit, method, sample_size, caveat from agent_metrics_history where venue='x402' and chain='Base' and stage='seller_paid_real' and week='2026-W43';
    Open this number
  4. 0

    memo-tagged pathUSD transfers in the sampled blocks

    As ofSmall sample
    MethodShowHide

    pathUSD TransferWithMemo transfers on Tempo in 7 days

    Stage
    tempo_mpp / Tempo / memo_transfers_7d
    Method
    eth_getLogs for TransferWithMemo on pathUSD 0x20c0000000000000000000000000000000000000, 12/12 stratified segments across the trailing 7 days covering 10.5% of the window's blocks; every event in each segment counted (tier 2)
    Sample
    0
    As of
    2026-10-19
    Note
    Memo transfers are the MPP payment shape; not every memo transfer is an agent payment. MPP can settle over other rails and other TIP-20s, and any transfer may carry a memo. This is a sampled count over one token on one chain — RATES between the three rows are valid, the counts are floors over the sampled blocks.

    Reproduce

    select value, unit, method, sample_size, caveat from agent_metrics_history where venue='tempo_mpp' and chain='Tempo' and stage='memo_transfers_7d' and week='2026-W43';
    Open this number

Skills

3 findings
  1. 565

    crypto-relevant skills indexed with a disclosure

    As ofSample565
    MethodShowHide

    Crypto-relevant agent skills indexed with a disclosure

    Stage
    skills / crypto_relevant
    Method
    ClawHub + skills.sh public APIs, crypto vocabulary gate, static scan
    Sample
    565
    As of
    2026-10-19
    Note
    A disclosure describes; it is not a safety verdict.

    Reproduce

    select count(*) from skills where crypto_relevant;
    Open this number
  2. 41.6%

    of indexed skills carry at least one disclosure flag

    As ofSample565
    MethodShowHide

    Share of those skills carrying at least one disclosure flag

    Stage
    skills / disclosure.flags ≠ []
    Method
    static scan
    Sample
    565
    As of
    2026-10-19
    Note
    A wallet skill that generates keys is doing its job; the flag says so, it does not condemn.

    Reproduce

    select count(*) filter (where jsonb_array_length(disclosure->'flags')>0), count(*) from skills where crypto_relevant;
    Open this number
  3. 163

    skills flagged as generating or handling private keys

    As ofSample565
    MethodShowHide

    Skills that generate or handle private keys

    Stage
    skills / flag generates_or_handles_keys
    Method
    static scan
    Sample
    565
    As of
    2026-10-19

    Reproduce

    select count(*) from skills where disclosure->'flags' ? 'generates_or_handles_keys';
    Open this number

Reference

Cite this pageShowHide

Cite this page

Sato Hub. "Sato Hub: State of Onchain Agents 2026." Sato Hub, updated 2026-10-19, accessed 2026-10-22. https://satohub.ai/state-of-onchain-agents

Data last refreshed 2026-10-19; this page is rebuilt daily. Citations carry the date so a reader can tell which snapshot a claim came from. Catalog data is licensed CC-BY-4.0 and the machine-readable copy is linked in the page's Dataset metadata.