search
Search
Search is the first step in a Console algorithm. It selects candidate records from one supported index, applies filters, sorts the candidates, and returns hydrated records for preview or feed delivery.
The current Console builder flow is:
- choose an index,
- add filters,
- choose sorting and result size,
- hydrate the returned rows with
.include(), - return the output.
There is no separate Features, Scoring, or Ranking step in the current Console builder before output.
Console index dropdown
Use the exact index names shown in the Console algo-builder dropdown:
| Index | Use |
|---|---|
polymarket-trades | Polymarket trade events |
polymarket-items | Polymarket market items |
hyperliquid-trades | Hyperliquid trade events |
base-trades | Base DEX trade events |
ethereum-trades | Ethereum DEX trade events |
solana-trades | Solana DEX trade events |
token-items | Token or coin items |
hyperliquid-items | Hyperliquid market or asset items |
hyperliquid-notifications | Hyperliquid notification candidates |
dex-notifications | DEX notification candidates |
polymarket-notifications | Polymarket notification candidates |
kalshi-notifications | Kalshi notification candidates |
wallet-users | Cross-protocol wallet profiles |
hyperliquid-wallets | Hyperliquid wallet profiles |
polymarket-wallets | Polymarket wallet profiles |
Filters
Console supports the same filter families generated into DSL:
termandmatchfilters for exact or text-like matching.- numeric filters such as
volume_24hr >= 1000. - date filters for timestamp windows.
is_nullandnot_nullfilters.in_app_usersjoins for account-owned users or wallets.console_accountfilters for account-scoped data.- item-id filters when a workflow starts from known item ids.
Use frequent values from the UI when picking categorical fields such as chains, apps, tags, labels, or status values.
Working feed algorithm
This feed algorithm searches Polymarket markets, hydrates the rows, sorts by recent volume, and returns the top 25 records.
import { StudioV1 } from "algo-dsl";
export default async function algo({ apiKey }) {
const mbd = new StudioV1({ apiKey });
const results = await mbd
.search()
.index("polymarket-items")
.include()
.numeric("volume_24hr", 1000)
.notNull("question")
.sortBy("volume_24hr", "desc")
.size(25)
.execute();
return results;
}Working notification candidate search
Notification algorithms use the same search and hydration surface. This example finds DEX notification candidates for account-owned wallet users.
import { StudioV1 } from "algo-dsl";
export default async function notificationAlgo({ apiKey }) {
const mbd = new StudioV1({ apiKey });
const candidates = await mbd
.search()
.index("dex-notifications")
.include()
.inAppUsers("wallet_address")
.notNull("user_id")
.sortBy("timestamp", "desc")
.size(50)
.execute();
return candidates;
}Frequent values
Use frequent values to discover available values for fields before adding a filter.
const tags = await mbd
.search()
.index("polymarket-items")
.frequentValues("tags", 25);
