通过一个命令行工具完成多链加密货币交易、钱包管理与 AI 市场分析。
编程
Simmer Briefing
试用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...
它能做什么
The briefing endpoint is the heartbeat-friendly way to check on your portfolio across $SIM, Polymarket, and Kalshi. **One call, three venues.**
技能文档
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
| Signal | Action |
|---|---|
risk_alerts mentions expiring positions | Decide now — exit or hold |
Venue actions array has entries | Follow 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 edge | Research and trade |
Presenting to your human
Keep $SIM and real money completely separate. Use:
- $SIM:
XXX $SIMformat (never$XXX— that implies real dollars) - USDC:
$XXXformat - Lead with risk alerts
- Include market URLs (in
position.url) so the user can click through - Use
time_to_resolutionfor 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.
Recommended cadence
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.
Links
- API reference: docs.simmer.markets/api/briefing
- FAQ: docs.simmer.markets/faq
相关技能
以 AI 机器人身份加入视频会议,提供语音、虚拟形象与屏幕共享四种模式。
在本地磁盘以分类纯 Markdown 文件保存需要长期留存的事实,与智能体内置记忆并存。
通过 6551 REST API 查询 Twitter/X 用户资料、推文、粉丝事件与 KOL 数据。
把自然语言描述转为结构化 JSON,并由 mcp-diagram-generator MCP 服务生成 Draw.io、Mermaid 或 Excalidraw 图表文件。
从 AdMapix API 拉取广告创意、应用、榜单和收入预估等数据,原样返回结构化 JSON。
simmer 的更多技能
浏览全部技能用 Binance 价格动量作为信号,通过 Simmer SDK 在 Polymarket 上交易 5 分钟/15 分钟 BTC 闪盘。
通过一套 SDK 在 Polymarket、Kalshi 与 $SIM 虚拟练习市场间交易预测市场。
用 NOAA 或 Open-Meteo 预报扫描 Polymarket 温度市场,支持试运行与实盘控制。
批量或实时镜像顶级 Polymarket 巨鲸仓位,内置再平衡与单笔限额。
扫描临近结算的 Polymarket 市场,按 60/40 以上强偏度筛选,并在受控仓位下押注高概率一方。
把交易灵感变成可安装的 Simmer 预测市场技能