Your agent reads Nansen and sees a flow: fresh wallets piled into WETH, the top PnL wallets sold WBTC. Assay hands it every one of those signals with a measured prior attached, from 12,781 calls of the same endpoint scored against a drift-matched control, and a decision at your cost. Then it reads where the Hyperliquid book actually sits: funding, open interest, the smart-money skew against the crowd, and where the longs and shorts liquidate. A CLI, an MCP server and a Claude plugin, with nothing to install.
assay now reads yesterday's flow summary for twenty tokens, one call each, and applies the study's own
rule to make signals of them: a segment's net flow of $250k or more, the ten strongest per segment, the sign as the
direction. Each signal is joined to the 24-hour prior the study measured for that segment (net of a 12 bps round
trip, with its standard error and sample) and to a decision: trade, sized on the error; hold, real but
eaten by cost; skip, nothing beyond drift; refuse, never measured.
| Segment | Token | Chain | Net flow | Side | 24h prior net ± SE, bps | n | Verdict | Decision |
|---|
assay positioning reads the venue-wide screener (every market's funding, open interest and the
smart-money book), then pulls the largest positions on the markets with the most open interest and maps where they
liquidate. Smart money's skew is the venue's full smart-money book; the crowd's is the largest positions pulled,
excluding smart money. Divergence is the gap between them: positive means the informed cohort is longer than
the crowd. These are measurements with an age, served as such. The tests that would make them a signal are sealed in
PREREGISTRATION-HL.md and score
after thirty days of six-hourly samples.
| Market | Funding / yr | Open interest | Smart-money skew | Crowd skew | Divergence | Longs liq. within 5% | Shorts liq. within 5% |
|---|
| Segment | 24 hours | 48 hours | 168 hours | Largest sample |
|---|
# the study's priors need no key git clone https://github.com/gryps-finance/assay.git cd assay node src/cli.mjs leaderboard node src/cli.mjs prior "Smart Trader" 48 # live, with a key from app.nansen.ai/api export NANSEN_API_KEY=... node src/cli.mjs now # ~100 credits node src/cli.mjs positioning # ~65 credits npm test # the whole instrument, no key
Twelve tools over stdio. The readers need no key; assay_now and hl_refresh pull live and are capped per call.
claude mcp add assay -- node /path/to/assay/src/mcp-server.mjs
Ask the agent "smart money bought AAVE yesterday, should I go long?" and it gets the flow, the prior measured for that segment, and skip, with the reason. Any MCP client works the same way: docs/USAGE.md.
The repository root is the plugin: .claude-plugin/plugin.json, .mcp.json, and a skill that teaches the agent how to read the answers and what a verdict does and does not license.
Every number the tool serves comes with its provenance: the request id of the call, the credits it cost, the hash of the sealed method, and the sample the prior was measured on.