Concepts
The five nouns the whole system is built from: intents, clusters, agents, allocators and mandates.
Agent
intent: ETH in
Agent
intent: ETH in
Wallet
intent: ETH in
Cluster
one market, one window, one impact ceiling
One execution, one price
claim tokens + any refund
Allocator
arms ETH, sets limits
Agent
named originator
Mandate
ETH stays in the vault; revoke any time
One execution, one price
tokens straight to each allocator
Intents
An intent is a commitment to buy: a wallet and an amount of ETH, escrowed into a cluster. Onchain it is ajoin call on the clearing contract. It is not an order with a limit price. The protection comes from the cluster's impact ceiling, which bounds how far the whole clearing can move the market. An intent can be cancelled (leave) for a full refund at any time before the window closes.
Clusters
A cluster is an onchain clearing block: one market, one closing time, one impact ceiling, and the intents that joined it. In the contracts it is called a block (BlockClearing.openBlock); in the product and the API it is a cluster, identified as ${deployment}-${blockId}, for example current-3.
| Field | What it does |
|---|---|
| Market | The venue's handle for what is being bought. For a stock it is the Robinhood Stock Token itself; on Pons V2 it is the launch curve address, not the token. |
| Window | How long joining stays open: 10 seconds to 1 hour, chosen by whoever opens the cluster. |
| Impact ceiling | The most the clearing may move the spot price, 10 to 2,000 bps. See capacity. |
| Intents | Each wallet's net escrow. Several joins from one wallet add up. |
Cluster lifecycle
| Status | Meaning | What you can do |
|---|---|---|
FORMING | Window open | Join, add to your intent, or leave with a full refund |
CLEARABLE | Window closed, not yet cleared | Anyone can call clear. Leaving is no longer possible |
CLEARED | One execution done, result recorded | Each participant calls claim for tokens and any refund |
Clearing is permissionless on purpose. The app cranks it, but nothing depends on NoFomo being online: any wallet can clear a closed cluster, and every participant can claim on their own (or anyone can push a claim to its owner).
A price guard protects every clear: it fills only within the ceiling plus a 3% guard of the best quote seen while the cluster was open. Otherwise the clear can be retried, and 15 minutes after close anyone can clear it as a full refund. The same happens if the venue can no longer quote the market (a paused stock or a graduated curve, for example): everyone claims their full escrow back.
Agents
In NoFomo an agent is any wallet that joins clusters or acts as an originator on mandates. Most are software: an AI agent connected over MCP or a bot using the API. The contracts don't distinguish between a person and a program, and neither does the price: every participant in a cluster gets the same one.
Allocators and originators
These are the two sides of a mandate. The allocator owns the capital: they arm ETH into the mandate vault and set the limits. The originator is the agent named in the mandate: it decides when and what to buy, and triggers executions that pull from mandates inside their limits. An originator can never withdraw an allocator's ETH; it can only spend it on a buy whose tokens go straight to the allocator.
Mandates
A mandate is bounded authority: a per-execution cap, a daily cap, a maximum impact the allocator accepts, an optional expiry, an armed balance, and a scope: optionally one market it may fund and a maximum spot price. The allocator can revoke it at any moment and gets the remaining balance back in the same transaction. Details on the Mandates page.
Markets and venues
Contracts never talk to an exchange directly. They talk to one venue, the VenueRouter, through one interface, IVenue, which can quote, buy and report capacity. The router has no admin and sends each market to the adapter for its asset class, by rule:
| Kind | Venue | How a market qualifies |
|---|---|---|
stock | stock-v3: Robinhood Stock Tokens on their Uniswap-V3-style pools, paired with WETH directly or with USDG (routed through the USDG/WETH pool) | The token's code is the canonical Robinhood Stock Token proxy (lookalikes fail), and the stock adapter lists a route for it. 33 stocks and ETFs are listed. |
pons | pons-v2-curve: Pons V2 launch curves, priced in native ETH | The Pons factory records exactly that curve for its token, and the curve is live and ETH-paired. |
GET /api/v1/markets reports each market's kind, whether it is tradable right now, and for stocks the blocker (the issuer paused it, or a corporate action takes effect within 2 hours) and sharesPerToken. Stock prices and amounts onchain are per raw token; one raw token is sharesPerToken shares (for example 4 after a 4:1 split).
Stock markets are restricted: Robinhood Stock Tokens are tokenised debt securities giving economic exposure only, they are not offered to US Persons, and they are prohibited or restricted in some jurisdictions. NoFomo shows them everywhere but refuses stock entries from those countries. See the Terms.
Cluster or mandate?
| Cluster | Mandate | |
|---|---|---|
| Who decides the trade | Each participant, per cluster | The originator agent, inside your limits |
| Market | Public before you join | Chosen by the originator at execution time |
| Capital | Escrowed per cluster, refundable until close | Armed in the vault, revocable any time |
| Price | Uniform across the cluster | Uniform across the execution, originator included |
| Best for | Agents and wallets coordinating one entry | Backing an agent you trust, with a hard ceiling on what it can spend |