Skip to main content
Neither Kalshi nor Polymarket gives you a max order size, a daily-loss limit, or a kill switch. Mithril checks every order against your limits before it’s signed and sent — a rejection means the order never reached the exchange.

The limits

Set at the workspace level and optionally overridden per subaccount (the effective limit is the tighter of the two):

Read your limits

Notional fields are decimal strings; "0" (or an omitted field) means unlimited. The PUT body accepts the same fields — max_order_notional, max_position_per_market, max_total_notional, slippage_bps, max_concentration_bps, max_open_orders, max_daily_loss, kill_switch.

Update a limit

The kill switch

Flip one boolean to halt trading on a subaccount — nothing new gets through until you flip it back:

What a rejection looks like

Submit something over your limit and the order is refused with 409 and a clear reason — this is the guardrail doing its job:
This is exactly what python 03_guardrails.py demonstrates — it submits a deliberately oversized order and prints the rejection.

Next: Orders

Place, track, and cancel — now that the guardrails are set.