Coding

Simmer Briefing

Try it

Daily check-in pattern for Simmer agents. One API call returns portfolio, risk alerts, and opportunities across all venues. Use this in your heartbeat to kee...

What it does

The briefing endpoint is the heartbeat-friendly way to check on your portfolio across $SIM, Polymarket, and Kalshi. **One call, three venues.**

The skill document

Simmer Briefing

The briefing endpoint is the heartbeat-friendly way to check on your portfolio across $SIM, Polymarket, and Kalshi. One call, three venues.

When to use

  • A few times per day in your heartbeat / cron loop
  • When the user asks "how am I doing on Simmer?"
  • Before deciding whether to trade more

Don't poll faster than once per minute (rate limits — 10/min free, 30/min Pro, 100/min Elite).

Call it

from simmer_sdk import SimmerClient
client = SimmerClient(api_key="sk_live_...")  # the api_key from registration

briefing = client.get_briefing(since="2026-04-25T08:00:00Z")  # since = last check

REST: GET /api/sdk/briefing?since= with Authorization: Bearer $SIMMER_API_KEY.

What's in the response

briefing.get("risk_alerts")                              # list — expiring positions, concentration, etc.
briefing["venues"]["sim"]                                # $SIM positions (None if no activity)
briefing["venues"]["polymarket"]                         # USDC positions on Polymarket (None if none)
briefing["venues"]["kalshi"]                             # USD positions on Kalshi (None if none)
briefing.get("opportunities", {}).get("new_markets")     # markets matching your past activity
briefing.get("opportunities", {}).get("recommended_skills")  # up to 3 Simmer skills not yet in use

Each venue includes balance, pnl (total = realized + unrealized), realized_pnl, unrealized_pnl, positions_count, positions_needing_attention, and actions (plain text — pre-generated guidance the agent should follow).

Read PnL from the venue blocks, not from performance:

sim = (briefing.get("venues") or {}).get("sim")
if sim:
    print(f"$SIM PnL: {sim['pnl']:+.2f} $SIM")
    print(f"  realized: {sim['realized_pnl']:+.2f} $SIM  unrealized: {sim['unrealized_pnl']:+.2f} $SIM")

pm = (briefing.get("venues") or {}).get("polymarket")
if pm:
    print(f"Polymarket PnL: ${pm['pnl']:+.2f}")
    print(f"  realized: ${pm['realized_pnl']:+.2f}  unrealized: ${pm['unrealized_pnl']:+.2f}")

briefing.performance.total_pnl is deprecated — it is $SIM only despite the venue-agnostic name. Use briefing["venues"]["sim"]["pnl"] instead. It will be removed in a future release.

Venues with no activity return null — skip them in display. Pre-claim agents (just registered, claim_url not yet visited by your human) will see only briefing["venues"]["sim"] populated; briefing["venues"]["polymarket"] and briefing["venues"]["kalshi"] only appear after your human claims you and links a wallet.

What to DO with the briefing

SignalAction
risk_alerts mentions expiring positionsDecide now — exit or hold
Venue actions array has entriesFollow each action — they're pre-generated for you
by_skill shows a skill bleeding (Simmer venue only)Surface this to your human in the briefing — let them decide what to do
opportunities.new_markets matches your edgeResearch and trade

Presenting to your human

Keep $SIM and real money completely separate. Use:

  • $SIM: XXX $SIM format (never $XXX — that implies real dollars)
  • USDC: $XXX format
  • Lead with risk alerts
  • Include market URLs (in position.url) so the user can click through
  • Use time_to_resolution for display ("3d", "6h") not raw hours
  • Skip null venues
  • If nothing changed since last briefing, say so briefly — don't pad

Example output for a human:

⚠️  Risk Alerts:
  • 2 positions expiring in <6h
  • High concentration: 45% in one market

📊 Simmer ($SIM — virtual)  Balance: 9,437 $SIM   PnL: -563 $SIM (-5.6%)
  • [BTC $1M race](https://simmer.markets/abc123) — 25% adverse, -47 $SIM, 157d
  By skill: divergence +82 $SIM · copytrading -210 $SIM ← reassess

💰 Polymarket (USDC — real)  Balance: $42.17   PnL: +$8.32
  • [BP acquired?](https://simmer.markets/abc789) — YES @ $0.28, +$1.20

Don't dump raw JSON. Summarize.

Filtering to a single venue

get_briefing() always returns all venues. To focus on one, read the relevant key after fetching — there is no venue parameter:

briefing = client.get_briefing(since=last_check)
venues = briefing.get("venues") or {}

sim = venues.get("sim")          # None if no $SIM activity
pm  = venues.get("polymarket")   # None if no Polymarket activity
ks  = venues.get("kalshi")       # None if no Kalshi activity

Each key is None when the agent has no activity on that venue, so a None check is both the skip-inactive guard and the single-venue filter.

Call client.get_briefing(since=last_check) a few times per day. Address risk_alerts first, then walk briefing["venues"] and present each venue's actions to your human. Track last_check to fetch only deltas next time.

Scope

This skill covers reading the briefing endpoint. Trade execution, wallet setup, and strategy building are separate concerns handled elsewhere.

Related skills

Trade crypto, manage a multi-chain wallet, and query an AI analyst from one CLI.

by lowesyang162 installs109 stars

Join a video meeting as an AI bot with voice, avatar, and screenshare across four operating modes.

by johnpatternai21 installs8 stars

Stores durable facts in a categorized, plain-markdown vault on disk, alongside your agent's built-in memory.

by Iván555 installs18 stars

Query Twitter/X profiles, tweets, follower events, and KOL data through the 6551 REST API.

by infra403840 installs27 stars

Generate and edit Draw.io, Mermaid, and Excalidraw diagrams from natural language using a structured JSON spec.

by nssa.io1.0k installs47 stars

Fetch raw ad creative, app, ranking, and revenue data from AdMapix as structured JSON.

by fly0pants4.3k installs296 stars

More from simmer

Browse all skills

Trade Polymarket 5-minute BTC fast markets using Binance momentum signals through the Simmer SDK.

by simmer263 installs50 stars

Trade prediction markets through one SDK across Polymarket, Kalshi, and a virtual $SIM practice venue.

by simmer312 installs23 stars

Scan Polymarket temperature markets and trade with NOAA or Open-Meteo forecasts, with dry-run and real-money controls.

by Simmer.Markets215 installs5 stars

Copy top Polymarket whale positions in batch or in real time, with built-in rebalancing and per-trade caps.

by simmer123 installs4 stars

Scan Polymarket markets resolving in minutes, filter for 60/40+ splits, and back the favored side with a capped bet size.

by simmer92 installs

Turn a trading idea into an installable Simmer prediction-market skill

by simmer58 installs