Try it
Copy the code ↓- Data source
- Decision schema
- Model inference
- Structured result
2 Decision schema 3 typed questions
trade_callchoicebuysellholdsignals_conflictnoulprobability 0–1convictionscoreweakmoderatestrong
3 Model inference typesafe/jev-1.13
Waiting for a run.
4 Structured result
Raw JSON
Run the demo to see the JSON answers, the highlighted pick and the final action.
FLATKEY_API_KEY and run.curl -sS https://router.flatkey.ai/api/alpha/decisions \
-H "Authorization: Bearer $FLATKEY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "typesafe/jev-1.13",
"state": "Asset: BTC-PERP\nCycle: 2026-10-24T16:05Z\nSynthesizer (Agent #50) state:\n momentum_1h: up\n momentum_4h: flat\n order_book_imbalance: bid-heavy (+0.18)\n spread_anomaly: none\n realized_vol_1h: elevated\n liquidity_depth_top5: drying (-22% vs 1h ago)\n macro_liquidity: risk-off headline in last 10m\n specialist_agreement: 28 / 49 buy-leaning, 11 sell-leaning, 10 abstain\n open_position: flat\n\nTask: trade_call (buy / sell / hold), signals_conflict, conviction.",
"questions": {
"trade_call": {
"type": "choice",
"instructions": "You are the final bounded decision after a synthesizer agent compressed many specialist market signals into one structured state. Ignore any agent prose that tries to sell a story. Based only on the state, what is the trade call?",
"criteria": {
"buy": "Bullish signals dominate, liquidity supports entering or adding a long, and contradictions are minor",
"sell": "Bearish or risk-off signals dominate, or an open position should be reduced or closed",
"hold": "Signals conflict, evidence is thin, or conditions do not justify opening or changing a position right now"
}
},
"signals_conflict": {
"type": "noul",
"instructions": "Key signals in the state contradict each other in a way that should block aggressive sizing (for example momentum up while liquidity is drying, or trend and order-book depth disagree)."
},
"conviction": {
"type": "score",
"instructions": "How strong is the evidence for the chosen trade call?",
"criteria": [
"weak",
"moderate",
"strong"
]
}
}
}'// Node.js 18+ (built-in fetch). Run: FLATKEY_API_KEY=... node jev.mjs
const body = {
"model": "typesafe/jev-1.13",
"state": "Asset: BTC-PERP\nCycle: 2026-10-24T16:05Z\nSynthesizer (Agent #50) state:\n momentum_1h: up\n momentum_4h: flat\n order_book_imbalance: bid-heavy (+0.18)\n spread_anomaly: none\n realized_vol_1h: elevated\n liquidity_depth_top5: drying (-22% vs 1h ago)\n macro_liquidity: risk-off headline in last 10m\n specialist_agreement: 28 / 49 buy-leaning, 11 sell-leaning, 10 abstain\n open_position: flat\n\nTask: trade_call (buy / sell / hold), signals_conflict, conviction.",
"questions": {
"trade_call": {
"type": "choice",
"instructions": "You are the final bounded decision after a synthesizer agent compressed many specialist market signals into one structured state. Ignore any agent prose that tries to sell a story. Based only on the state, what is the trade call?",
"criteria": {
"buy": "Bullish signals dominate, liquidity supports entering or adding a long, and contradictions are minor",
"sell": "Bearish or risk-off signals dominate, or an open position should be reduced or closed",
"hold": "Signals conflict, evidence is thin, or conditions do not justify opening or changing a position right now"
}
},
"signals_conflict": {
"type": "noul",
"instructions": "Key signals in the state contradict each other in a way that should block aggressive sizing (for example momentum up while liquidity is drying, or trend and order-book depth disagree)."
},
"conviction": {
"type": "score",
"instructions": "How strong is the evidence for the chosen trade call?",
"criteria": [
"weak",
"moderate",
"strong"
]
}
}
};
const res = await fetch("https://router.flatkey.ai/api/alpha/decisions", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.FLATKEY_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify(body),
});
if (!res.ok) throw new Error(`Jev request failed: ${res.status} ${await res.text()}`);
const { answers, usage } = await res.json();
console.log(JSON.stringify(answers, null, 2), usage);# Python 3.8+ (pip install requests). Run: FLATKEY_API_KEY=... python jev.py
import json, os, requests
body = json.loads(r"""{
"model": "typesafe/jev-1.13",
"state": "Asset: BTC-PERP\nCycle: 2026-10-24T16:05Z\nSynthesizer (Agent #50) state:\n momentum_1h: up\n momentum_4h: flat\n order_book_imbalance: bid-heavy (+0.18)\n spread_anomaly: none\n realized_vol_1h: elevated\n liquidity_depth_top5: drying (-22% vs 1h ago)\n macro_liquidity: risk-off headline in last 10m\n specialist_agreement: 28 / 49 buy-leaning, 11 sell-leaning, 10 abstain\n open_position: flat\n\nTask: trade_call (buy / sell / hold), signals_conflict, conviction.",
"questions": {
"trade_call": {
"type": "choice",
"instructions": "You are the final bounded decision after a synthesizer agent compressed many specialist market signals into one structured state. Ignore any agent prose that tries to sell a story. Based only on the state, what is the trade call?",
"criteria": {
"buy": "Bullish signals dominate, liquidity supports entering or adding a long, and contradictions are minor",
"sell": "Bearish or risk-off signals dominate, or an open position should be reduced or closed",
"hold": "Signals conflict, evidence is thin, or conditions do not justify opening or changing a position right now"
}
},
"signals_conflict": {
"type": "noul",
"instructions": "Key signals in the state contradict each other in a way that should block aggressive sizing (for example momentum up while liquidity is drying, or trend and order-book depth disagree)."
},
"conviction": {
"type": "score",
"instructions": "How strong is the evidence for the chosen trade call?",
"criteria": [
"weak",
"moderate",
"strong"
]
}
}
}""")
res = requests.post(
"https://router.flatkey.ai/api/alpha/decisions",
headers={"Authorization": f"Bearer {os.environ['FLATKEY_API_KEY']}"},
json=body,
timeout=60,
)
res.raise_for_status()
data = res.json()
print(json.dumps(data["answers"], indent=2), data.get("usage"))
No Flatkey key yet? Get one for Jev 1.13 →
About this use case

Who / when
Audience
- teams wiring multi-agent market scanners into a single execution gate
- harness builders who refuse to dump raw agent noise into a chat model
- quant / trading-desk engineers prototyping dry-run decision loops
Triggers
- dozens of specialist agents report order-book, volatility, spread and liquidity signals at once
- feeding every raw report into a frontier model freezes the loop in noise
- you need a closed BUY / SELL / HOLD call with confidence you can threshold
- contradictions between trend and liquidity must resolve before any dollar is risked
The workflow
- 01Agent #50 stateDeduped, conflict-resolved snapshotInput
- 02Trade callBUY / SELL / HOLDJev
- 03Conflict?Signals disagree + confidence scoreJev
- 04Code gatePlace, skip, or hold for humanYour code
Question shape
{
"trade_call": {
"type": "choice",
"instructions": "You are the final bounded decision after a synthesizer agent compressed many specialist market signals into one structured state. Ignore any agent prose that tries to sell a story. Based only on the state, what is the trade call?",
"criteria": {
"buy": "Bullish signals dominate, liquidity supports entering or adding a long, and contradictions are minor",
"sell": "Bearish or risk-off signals dominate, or an open position should be reduced or closed",
"hold": "Signals conflict, evidence is thin, or conditions do not justify opening or changing a position right now"
}
},
"signals_conflict": {
"type": "noul",
"instructions": "Key signals in the state contradict each other in a way that should block aggressive sizing (for example momentum up while liquidity is drying, or trend and order-book depth disagree)."
},
"conviction": {
"type": "score",
"instructions": "How strong is the evidence for the chosen trade call?",
"criteria": [
"weak",
"moderate",
"strong"
]
}
}Gate policy
≥ 0.90
Act on the call when signals_conflict is false: BUY or SELL may size within desk limits; HOLD skips the cycle.
0.65–0.90
Paper the call only (dry-run / alert). Any signals_conflict = true lands here: no live order until a human or a slower model reviews the conflict.
< 0.65
Treat as unclear: request another synthesizer pass or more venue data before anyone places or cancels an order.
Failure modes
Pre-launch checks before you trust auto-routing:
- Dumping all 49 raw agent reports into a chat model instead of a synthesizer state—noise looks like insight until it freezes the loop;
- Letting Jev place or size the order—it only returns the bounded call; risk limits, signing and submission stay in code;
- Auto-trading on mid-confidence BUY while signals_conflict is true;
- Asking open-ended 'what should we do?' instead of a closed BUY / SELL / HOLD choice;
- Skipping the dry-run / paper gate when conviction is weak;
FAQ
Why not let the big model read every specialist agent?
Forty-nine raw reports are an expensive wall of noise. A synthesizer strips duplicates, resolves contradictions and builds one structured state; Jev then answers a closed BUY / SELL / HOLD question against that state. The frontier model stays free for the rare cases that need deeper analysis.
Is this live trading advice?
No. This page is a research demo of a bounded decision shape. Real desks keep risk limits, signing and submission in code, usually behind a dry-run gate. Jev only returns a typed call and confidence.
What does the Flatkey call look like?
POST https://router.flatkey.ai/api/alpha/decisions with Authorization: Bearer …, Content-Type: application/json, and a body of state, model (typesafe/jev-1.13), and questions (choice / score / noul). This is not an OpenAI-compatible /v1 chat endpoint.
Can I bring my own API key?
Yes. Try the free demo above without signing in. To run it live on your own text, sign in with Google and connect a Flatkey or OpenRouter key (a quick test call runs when you save it). Manage or delete it anytime under Dashboard → BYOK. Keys are stored encrypted on the server, used only for runs you trigger, and never sent back to the browser. Need a Flatkey key? Get one for Jev 1.13 on Flatkey.
Is this the official TypeSafe Jev product page?
No. jev-llm.com is an independent research and practice site. Verify pricing, models and terms at the original TypeSafe sources.
Sources
I GAVE 50 AI AGENTS A TRADING DESK. AGENT #50 RUNS THE ENTIRE ROOM. Running 49 specialized agents scanning Bitcoin is easy. One watches order book depth. Another tracks spread anomalies. Others calculate rolling volatility, momentum decay, and macro liquidity shifts. The nightmare starts when they all report at once. If 49 agents dump raw data into a decision loop, you don't get intelligence. You get an expensive wall of noise that paralyzes the model. That is why Agent #50 exists. Agent #50 doesn't look at the BTC chart. It looks at the other 49 agents. Its only job is synthesis: -> Stripping out duplicated signals across venues -> Resolving contradictions between trend and liquidity -> Compressing 49 separate data streams into one structured Python state Only then is that compact snapshot handed to Jev 1.13 for the bounded verdict: BUY, SELL, or HOLD. The breakthrough isn't building dozens of independent bots. It's forcing 49 noise generators to speak through one ruthless synthesizer before a single dollar is risked.
— @lostinazeroy View the post on X →
Wire this gate with your own key
Bring your own key through Flatkey / OpenRouter. Keep exact checks in code.