angbot

The terminal for agents

The MCP tools an agent uses in order — calendar, context, base rates, stream, act — and a worked Claude Code session.

A trading agent needs five things in a fixed order: what is coming up, what one market is, how that kind of market has settled before, what is being said right now, and a way to act under its own keys. The Langbot MCP server exposes each step as a tool. The signed-in terminal is the same workflow for a person: calendar on the left, one market in context in the middle, history on the right.

Install once with npx langbot init (see MCP). Everything below is then available to Claude Code, Cursor, Claude Desktop and Codex.

The workflow

steptoolreturns
1. Calendarget_calendar(days=7)upcoming and live events with sources, markets, speaker_keys and rights
2. Contextget_market_context(ticker)market row, rules, settlement source, current book, base rate for its speaker and phrase, the event it belongs to, recent mentions
3. Base ratesget_base_rates(speaker?, phrase?, series?, window_days=365)yes rate, counts, by-month series, average open and close, mispricing
3b. Evidencesearch_outcomes(...), search_mentions(...), list_speakers(q?)the settled markets behind a rate; Langbot's own detections; canonical speakers
4. Streamsubscribe_phrases(event_id, phrases[]), get_recent_events(...)live phrase_detected facts as they happen
5. Actdraft_strategy(thesis), backtest_strategy(code, event_ids[]), run_paper(strategy_path)a strategy file you review, a replay against the archive, and a paper run on your machine

Resources mirror the read side: langbot://calendar, langbot://context/{ticker}, langbot://events/live, langbot://events/{id}/transcript, langbot://latency.

Two rules hold throughout. Langbot returns facts, never a direction or a recommendation; the agent decides. And on restricted sources (issuer earnings calls, broadcaster feeds) the tools return phrase facts only, never transcript text. See Legal.

A session

A Claude Code session with the Langbot MCP server installed. The user's lines are prefixed with >; tool calls are shown in brackets. The company and the numbers are illustrative.

> what's on this week that has a market, and what's worth looking at? [get_calendar(days=7)]Two live, three upcoming. Live now: Northwind Bank Q3 call (4 markets, restrictedsource, speakers northwind-cfo / northwind-ceo) and a Senate Banking hearing(1 market, public domain). Tomorrow 04:00: FOMC press conference, 2 markets. The Northwind call has the most markets and the widest prices. Looking at theone with the most uncertainty. [get_market_context("KXEARNINGSMENTIONNWB-26OCT-TARIFF")]Will Northwind Bank say "tariff" on its Q3 call? Kalshi. Settles against theissuer's webcast replay, any company representative, Q&A included.Book: 60¢ bid / 65¢ ask, 177 x 199 at the top of book.Base rate (northwind-cfo, "tariff", 365 d): 39% yes over 31 markets, averageopen 42¢, close 40¢, mispricing −3.5¢.Event: live, 22 minutes in. Recent mentions: none this call yet; last was theQ2 call, 14 minutes into Q&A, 18.2 s ahead of the webcast. > is that rate the same for the CEO? [get_base_rates(speaker="northwind-ceo", phrase="tariff")]No. 58% yes over 24 markets. The CEO says it when asked; the CFO tends not toin prepared remarks. Mispricing +9.1¢: markets on the CEO have opened cheap. [search_outcomes(speaker="northwind-ceo", phrase="tariff", limit=5)]Last five: yes, yes, no, yes, yes. Four of five settled yes with opensbetween 35¢ and 48¢. > watch for it and tell me the second either of them says it [subscribe_phrases("ev_nwb_q3_2026", ["tariff", "tariffs"])]Subscribed. I will report phrase_detected events with speaker, t_spoken andthe lead over the webcast. I will not place orders; if you want a strategy,say so and I will draft one for you to review. > draft one: buy yes at the ask if the CEO says it and the ask is under 70 [draft_strategy("buy YES on KXEARNINGSMENTIONNWB-26OCT-TARIFF at the ask when phrase_detected tariff with speaker northwind-ceo and yes_ask < 70")]Wrote ./strategies/nwb_tariff.py (Strategy subclass, 31 lines). It listensfor "tariff" from speaker northwind-ceo, reads the book, and calls buy_yesonly under 70¢. Risk rails are read from env and required for live mode. [backtest_strategy(code, ["ev_nwb_q2_2026", "ev_nwb_q1_2026"])]Q2: filled at 61¢ 18.2 s before the webcast, settled yes. Q1: no detection,no trade, settled no. Two sessions is not evidence; it is a smoke test. [run_paper("./strategies/nwb_tariff.py")]Your local agent runtime on 127.0.0.1:8787 is running it in demo mode. Fills willshow in `langbot run` and on the dashboard's agent card.   12:41:07.3  phrase_detected  "tariff"  northwind-cfo  +17.9 s  conf 0.96  (CFO, not CEO: the strategy did not trade.)  12:58:22.8  phrase_detected  "tariff"  northwind-ceo  +18.4 s  conf 0.97  paper fill: buy yes 10 @ 64¢

Every step the agent took is one of the tools above. Nothing in the transcript came from Langbot as advice: the rates, the book and the detections are facts; the thesis, the threshold and the decision to run it were the user's.

From a shell

The CLI mirrors the first three steps:

langbot calendarlangbot context KXEARNINGSMENTIONNWB-26OCT-TARIFFlangbot rates --speaker northwind-ceo --phrase tarifflangbot watch ev_nwb_q3_2026 --phrases tariff

Plan limits

Every terminal tool, the context endpoint and the full history are on every plan, Free included. Plans differ only in usage (Free: 500 history queries and 100 model calls a day) and in the delay on the live record. See pricing.