liberfi-predict

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

LiberFi Prediction Market

LiberFi 预测市场

Browse prediction market events, manage positions, and place orders on Kalshi and Polymarket using the LiberFi CLI.
使用LiberFi CLI浏览预测市场事件、管理持仓,并在Kalshi和Polymarket上下单。

Pre-flight Checks

预检查

See bootstrap.md for CLI installation and connectivity verification.
This skill's auth requirements:
CommandRequires Auth
lfi predict events
No
lfi predict event <slug>
No
lfi predict balance
No
lfi predict positions
No
lfi predict trades
No
lfi predict orders
No (Polymarket needs POLY_* headers)
lfi predict order <id>
No (Polymarket needs POLY_* headers)
lfi predict polymarket-tick-size
No
lfi predict polymarket-fee-rate
No
lfi predict polymarket-setup-status
No (uses TEE wallet if logged in)
lfi predict polymarket-deposit-addresses
No
lfi predict polymarket-setup
Yes (LiberFi JWT)
lfi predict polymarket-place
Yes (LiberFi JWT — server signs via TEE)
lfi predict kalshi-place
Yes (LiberFi JWT — server signs via TEE)
lfi predict cancel
Yes (LiberFi JWT — auto L2 auth for polymarket)
lfi predict kalshi-quote
(DEPRECATED)
No
lfi predict kalshi-submit
(DEPRECATED)
No
lfi predict polymarket-order
(DEPRECATED)
No (requires POLY_* headers)
Recommended flow (TEE auto):
polymarket-setup
polymarket-place
/
kalshi-place
/
cancel
. The server holds the user's TEE wallet via Privy and signs every transaction internally — no POLY_* HMAC, no Solana signing, no EIP-712 work for the caller.
Legacy flow: Polymarket order operations via
polymarket-order
require CLOB HMAC authentication via five
--poly-*
flags. These are NOT LiberFi JWT credentials — they are the user's own Polymarket CLOB API credentials.
CLI安装和连通性验证请查看bootstrap.md
本技能的认证要求:
命令是否需要认证
lfi predict events
lfi predict event <slug>
lfi predict balance
lfi predict positions
lfi predict trades
lfi predict orders
否(Polymarket需要POLY_*头信息)
lfi predict order <id>
否(Polymarket需要POLY_*头信息)
lfi predict polymarket-tick-size
lfi predict polymarket-fee-rate
lfi predict polymarket-setup-status
否(已认证时使用TEE钱包)
lfi predict polymarket-deposit-addresses
lfi predict polymarket-setup
(需要LiberFi JWT)
lfi predict polymarket-place
(需要LiberFi JWT — 服务器通过TEE签名)
lfi predict kalshi-place
(需要LiberFi JWT — 服务器通过TEE签名)
lfi predict cancel
(需要LiberFi JWT — Polymarket自动完成L2认证)
lfi predict kalshi-quote
(已弃用)
lfi predict kalshi-submit
(已弃用)
lfi predict polymarket-order
(已弃用)
否(需要POLY_*头信息)
推荐流程(TEE自动)
polymarket-setup
polymarket-place
/
kalshi-place
/
cancel
。服务器通过Privy托管用户的TEE钱包,并在内部完成所有交易签名——调用者无需处理POLY_* HMAC、Solana签名或EIP-712相关操作。
旧版流程:通过
polymarket-order
进行Polymarket订单操作需要通过五个
--poly-*
参数完成CLOB HMAC认证。这些并非LiberFi JWT凭证——它们是用户自己的Polymarket CLOB API凭证。

TEE Auto Order Flow (CRITICAL)

TEE自动订单流程(关键)

For the canonical end-to-end order placement flow — including pre-flight status checks, deposit handling, market vs limit order branching, and post- order verification — see reference/order-flow.md.
The CLI/skill expects this exact ordering for Polymarket:
  1. lfi status
    — confirm authenticated; if not, run
    lfi login key
  2. lfi predict polymarket-setup-status --json
    — check Safe deployment + token approvals
  3. If
    safe_deployed=false
    or any approval missing:
    lfi predict polymarket-setup --json
    (one-shot; gasless via Builder Relayer)
  4. Check Safe USDC balance — pass the TEE EOA, NOT the Safe:
    lfi predict balance --source polymarket --user <tee-eoa> --json
    (server derives Safe from EOA internally). If
    balance < 2
    , fetch BRIDGE deposit addresses using the Safe address from step 2/3:
    lfi predict polymarket-deposit-addresses --safe-address <safe> --json
    → returns
    { evm, svm, btc, tron }
    . Pick the field matching the user's chain (default
    evm
    for ETH/Polygon/Base/Arb/Op/BNB). Tell user to send ≥ $2 USDC to that bridge address (NEVER to the Safe address — the Safe is Polymarket's internal custody contract, not a user-facing deposit target). The Polymarket Bridge service auto-credits the Safe.
  5. Ask the user: market or limit? For limit, also ask price + size + GTC vs GTD (with expiration if GTD). For market, ask USDC spend (BUY) or share count (SELL)
  6. Show the final order summary, wait for explicit confirmation
  7. lfi predict polymarket-place --token-id <id> --side <s> --order-type <t> [--price <p>] [--size <sz>] [--expiration <epoch>] --json
  8. lfi predict orders --source polymarket --json
    — verify open orders
  9. lfi predict cancel <id> --source polymarket --json
    — cancel if user asks
For Kalshi the flow is shorter:
lfi predict kalshi-place --input-mint <inMint> --output-mint <outMint> --amount <amt> --json
— quote, sign (SignSOL), and submit are all done server-side.
关于完整的端到端下单流程——包括预检查状态、充值处理、市价/限价单分支以及下单后验证——请查看reference/order-flow.md
CLI/技能要求Polymarket操作严格遵循以下步骤:
  1. lfi status
    — 确认已认证;若未认证,执行
    lfi login key
  2. lfi predict polymarket-setup-status --json
    — 检查Safe部署情况和代币授权状态
  3. safe_deployed=false
    或存在未授权项:执行
    lfi predict polymarket-setup --json
    (一键完成;通过Builder Relayer实现无gas费用)
  4. 检查Safe的USDC余额——传入TEE EOA,而非Safe地址
    lfi predict balance --source polymarket --user <tee-eoa> --json
    (服务器会从EOA内部推导Safe地址)。若
    balance < 2
    ,使用步骤2/3中获取的Safe地址获取BRIDGE充值地址:
    lfi predict polymarket-deposit-addresses --safe-address <safe> --json
    → 返回
    { evm, svm, btc, tron }
    。选择与用户链匹配的字段(默认
    evm
    适用于ETH/Polygon/Base/Arb/Op/BNB)。告知用户向该桥接地址转入≥2美元的USDC(绝不要转入Safe地址——Safe是Polymarket的内部托管合约,并非面向用户的充值目标)。Polymarket Bridge服务会自动将资金转入Safe。
  5. 询问用户:市价单还是限价单?若为限价单,还需询问价格、数量以及GTC(取消前有效)或GTD(到期前有效,需提供到期时间)。若为市价单,询问USDC投入金额(买入)或份额数量(卖出)
  6. 展示最终订单摘要,等待用户明确确认
  7. lfi predict polymarket-place --token-id <id> --side <s> --order-type <t> [--price <p>] [--size <sz>] [--expiration <epoch>] --json
  8. lfi predict orders --source polymarket --json
    — 验证未成交订单
  9. lfi predict cancel <id> --source polymarket --json
    — 若用户要求则取消订单
Kalshi的流程更简短:
lfi predict kalshi-place --input-mint <inMint> --output-mint <outMint> --amount <amt> --json
— 报价、签名(SignSOL)和提交均在服务器端完成。

Skill Routing

技能路由规则

If user asks about...Route to
Token search, price, details, securityliberfi-token
Token K-line, candlestick chartliberfi-token
Trending tokens, market rankingsliberfi-market
Newly listed tokensliberfi-market
Wallet holdings, balance (non-prediction), PnLliberfi-portfolio
Wallet activity, transaction historyliberfi-portfolio
Token swap, trade executionliberfi-swap
Login, logout, session managementliberfi-auth
用户询问内容路由至
代币搜索、价格、详情、安全liberfi-token
代币K线图、蜡烛图liberfi-token
热门代币、市场排行liberfi-market
新上线代币liberfi-market
钱包资产、余额(非预测市场)、盈亏liberfi-portfolio
钱包活动、交易历史liberfi-portfolio
代币兑换、交易执行liberfi-swap
登录、登出、会话管理liberfi-auth

CLI Command Index

CLI命令索引

Query Commands (read-only)

查询命令(只读)

CommandDescriptionAuth
lfi predict events
List prediction events with filteringNo
lfi predict event <slug> --source <s>
Get event details by slugNo
lfi predict balance --source <s> --user <addr>
Get USDC balanceNo
lfi predict positions --user <addr>
Get portfolio positionsNo
lfi predict trades --wallet <addr>
List trade historyNo
lfi predict orders
List ordersNo (POLY_* for Polymarket)
lfi predict order <id> --source <s>
Get order detailsNo (POLY_* for Polymarket)
命令描述是否需要认证
lfi predict events
通过筛选列出预测事件
lfi predict event <slug> --source <s>
通过slug获取事件详情
lfi predict balance --source <s> --user <addr>
获取USDC余额
lfi predict positions --user <addr>
获取投资组合持仓
lfi predict trades --wallet <addr>
列出交易历史
lfi predict orders
列出订单否(Polymarket需要POLY_*头信息)
lfi predict order <id> --source <s>
获取订单详情否(Polymarket需要POLY_*头信息)

TEE Auto Flow Commands (recommended)

TEE自动流程命令(推荐)

CommandDescriptionAuth
lfi predict polymarket-tick-size --token-id <id>
Min tick size for a tokenNo
lfi predict polymarket-fee-rate --token-id <id>
Base fee rate (bps)No
lfi predict polymarket-setup-status [--wallet-address <addr>]
Safe deployment + approval statusNo (uses TEE wallet if logged in)
lfi predict polymarket-setup
Deploy Safe + approve all tokens (gasless)JWT
lfi predict polymarket-deposit-addresses --safe-address <addr>
Multi-chain deposit addresses for SafeNo
lfi predict polymarket-place --token-id <id> --side BUY|SELL --order-type GTC|GTD|FOK|FAK|MARKET [--price <p>] [--size <sz>] [--expiration <epoch>] [...]
Prepare → TEE sign → execute Polymarket orderJWT
lfi predict kalshi-place --input-mint <m> --output-mint <m> --amount <a> [--slippage-bps <bps>]
Quote → SignSOL → submit Kalshi orderJWT
lfi predict cancel <id> --source polymarket|kalshi
Cancel order (auto L2 auth for poly)JWT
命令描述是否需要认证
lfi predict polymarket-tick-size --token-id <id>
获取代币最小变动价位
lfi predict polymarket-fee-rate --token-id <id>
获取基础费率(基点)
lfi predict polymarket-setup-status [--wallet-address <addr>]
Safe部署状态和授权状态否(已认证时使用TEE钱包)
lfi predict polymarket-setup
部署Safe并授权所有代币(无gas费用)JWT
lfi predict polymarket-deposit-addresses --safe-address <addr>
Safe的多链充值地址
lfi predict polymarket-place --token-id <id> --side BUY|SELL --order-type GTC|GTD|FOK|FAK|MARKET [--price <p>] [--size <sz>] [--expiration <epoch>] [...]
准备→TEE签名→执行Polymarket订单JWT
lfi predict kalshi-place --input-mint <m> --output-mint <m> --amount <a> [--slippage-bps <bps>]
报价→SignSOL→提交Kalshi订单JWT
lfi predict cancel <id> --source polymarket|kalshi
取消订单(Polymarket自动完成L2认证)JWT

Legacy / Deprecated Commands

旧版/已弃用命令

CommandDescriptionAuth
lfi predict kalshi-quote --input-mint <m> --output-mint <m> --amount <a> --user-public-key <k>
DEPRECATED — use
kalshi-place
. Request Kalshi quote
No
lfi predict kalshi-submit --signed-transaction <tx> --order-context '<json>'
DEPRECATED — use
kalshi-place
. Submit pre-signed Kalshi tx
No
lfi predict polymarket-order --body '<json>' --poly-api-key <k> --poly-address <a> --poly-signature <s> --poly-passphrase <p> --poly-timestamp <t>
DEPRECATED — use
polymarket-place
. Create Polymarket order with caller-managed POLY_* headers
POLY_* headers
命令描述是否需要认证
lfi predict kalshi-quote --input-mint <m> --output-mint <m> --amount <a> --user-public-key <k>
已弃用 — 请使用
kalshi-place
。请求Kalshi报价
lfi predict kalshi-submit --signed-transaction <tx> --order-context '<json>'
已弃用 — 请使用
kalshi-place
。提交已签名的Kalshi交易
lfi predict polymarket-order --body '<json>' --poly-api-key <k> --poly-address <a> --poly-signature <s> --poly-passphrase <p> --poly-timestamp <t>
已弃用 — 请使用
polymarket-place
。通过调用者管理的POLY_*头信息创建Polymarket订单
POLY_*头信息

Parameter Reference

参数参考

Events list (
lfi predict events
):
  • --limit <n>
    — Max results per page
  • --cursor <cursor>
    — Pagination cursor
  • --status <status>
    — Event status filter (e.g.
    active
    ,
    resolved
    )
  • --source <source>
    — Provider source:
    kalshi
    or
    polymarket
  • --tag-slug <slug>
    — Filter by tag
  • --search <query>
    — Free-text search
  • --sort-by <field>
    — Sort field
  • --sort-asc <bool>
    — Sort ascending:
    true
    or
    false
  • --with-markets <bool>
    — Include embedded markets:
    true
    or
    false
Event detail (
lfi predict event <slug>
):
  • <slug>
    Required. Event slug identifier
  • --source <source>
    Required. Provider source:
    kalshi
    or
    polymarket
Balance (
lfi predict balance
):
  • --source <source>
    Required. Provider source:
    kalshi
    or
    polymarket
  • --user <address>
    Required. For
    polymarket
    : pass the user's TEE EOA (e.g.
    evmAddress
    from
    lfi whoami
    ); the server auto-derives the Safe via CREATE2. NEVER pass a Safe address here. For
    kalshi
    : pass the Solana public key (
    solAddress
    ).
Positions (
lfi predict positions
):
  • --user <address>
    Required. Same rule as
    balance
    : TEE EOA for polymarket (server derives Safe), Solana public key for kalshi.
  • --source <source>
    — Optional provider source filter
Trades (
lfi predict trades
):
  • --wallet <address>
    Required. Same rule as
    balance
    : TEE EOA for polymarket (server derives Safe), Solana public key for kalshi.
  • --source <source>
    — Optional provider source filter
  • --limit <n>
    — Max results per page
  • --cursor <cursor>
    — Pagination cursor
  • --type <types>
    — Comma-separated trade types
  • --side <side>
    — Trade side filter
Orders (
lfi predict orders
):
  • --source <source>
    — Provider source
  • --wallet-address <address>
    — Wallet address (required for kalshi)
  • --market-id <id>
    — Market ID filter
  • --asset-id <id>
    — Asset ID filter
  • --next-cursor <cursor>
    — Pagination cursor
  • --poly-api-key
    ,
    --poly-address
    ,
    --poly-signature
    ,
    --poly-passphrase
    ,
    --poly-timestamp
    — Polymarket CLOB auth (required when source is polymarket)
Order detail (
lfi predict order <id>
):
  • <id>
    Required. Order ID
  • --source <source>
    Required. Provider source
  • Same
    --poly-*
    flags as orders list
Polymarket tick size (
lfi predict polymarket-tick-size
):
  • --token-id <id>
    Required. Polymarket CLOB token ID
Polymarket fee rate (
lfi predict polymarket-fee-rate
):
  • --token-id <id>
    Required. Polymarket CLOB token ID
Polymarket setup status (
lfi predict polymarket-setup-status
):
  • --wallet-address <addr>
    — Optional EVM address. Defaults to caller's TEE wallet when authenticated.
Polymarket setup (run) (
lfi predict polymarket-setup
):
  • No flags. Requires authentication. Idempotent — safe to call repeatedly.
Polymarket deposit addresses (
lfi predict polymarket-deposit-addresses
):
  • --safe-address <addr>
    Required. Safe wallet address (from
    polymarket-setup-status
    )
Polymarket place (TEE auto) (
lfi predict polymarket-place
):
  • --token-id <id>
    Required. Polymarket CLOB token ID
  • --side BUY|SELL
    Required.
  • --order-type GTC|GTD|FOK|FAK|MARKET
    Required.
  • --price <p>
    — Limit price (limit orders only, e.g.
    0.55
    ). Required for GTC/GTD/FOK/FAK.
  • --size <sz>
    — Limit: shares; market BUY: USDC; market SELL: shares. Required for limit and market.
  • --expiration <epochSec>
    — Required for
    GTD
    .
  • --neg-risk true|false
    — Force NegRisk exchange. Auto-detected when omitted.
  • --fee-rate-bps <n>
    — Override fee rate (PS auto-resolves when omitted).
  • --tick-size <n>
    — Override tick size (PS auto-resolves when omitted).
  • --taker-address <addr>
    — Restrict the taker (advanced).
Kalshi place (TEE auto) (
lfi predict kalshi-place
):
  • --input-mint <addr>
    Required. Input token mint
  • --output-mint <addr>
    Required. Output token mint
  • --amount <amt>
    Required. Amount in smallest unit
  • --slippage-bps <bps>
    — Slippage tolerance in basis points
Cancel order (
lfi predict cancel <id>
):
  • <id>
    Required. Order ID
  • --source polymarket|kalshi
    Required. For polymarket the L2 HMAC headers are derived from the caller's TEE wallet automatically.
Kalshi quote (
lfi predict kalshi-quote
):
  • --input-mint <address>
    Required. Input token mint address
  • --output-mint <address>
    Required. Output token mint address
  • --amount <amount>
    Required. Swap amount
  • --user-public-key <key>
    Required. User's Solana public key
  • --slippage-bps <bps>
    — Slippage tolerance in basis points
Kalshi submit (
lfi predict kalshi-submit
):
  • --signed-transaction <tx>
    Required. Signed transaction data
  • --order-context <json>
    Required. Order context as JSON string (contains
    user_public_key
    ,
    market_slug
    ,
    side
    ,
    outcome
    , mints,
    amount
    ,
    price
    ,
    slippage_bps
    )
Polymarket order (
lfi predict polymarket-order
):
  • --body <json>
    Required. Raw order JSON string
  • --poly-api-key <key>
    Required. Polymarket API key
  • --poly-address <address>
    Required. Polymarket address
  • --poly-signature <sig>
    Required. Polymarket HMAC signature
  • --poly-passphrase <pass>
    Required. Polymarket passphrase
  • --poly-timestamp <ts>
    Required. Polymarket timestamp
事件列表 (
lfi predict events
):
  • --limit <n>
    — 每页最大结果数
  • --cursor <cursor>
    — 分页游标
  • --status <status>
    — 事件状态筛选(例如
    active
    resolved
  • --source <source>
    — 服务商来源:
    kalshi
    polymarket
  • --tag-slug <slug>
    — 按标签筛选
  • --search <query>
    — 自由文本搜索
  • --sort-by <field>
    — 排序字段
  • --sort-asc <bool>
    — 是否升序排序:
    true
    false
  • --with-markets <bool>
    — 是否包含内嵌市场:
    true
    false
事件详情 (
lfi predict event <slug>
):
  • <slug>
    必填。事件slug标识符
  • --source <source>
    必填。服务商来源:
    kalshi
    polymarket
余额查询 (
lfi predict balance
):
  • --source <source>
    必填。服务商来源:
    kalshi
    polymarket
  • --user <address>
    必填。对于
    polymarket
    :传入用户的TEE EOA(例如
    lfi whoami
    返回的
    evmAddress
    );服务器会通过CREATE2自动推导Safe地址。绝不要传入Safe地址。对于
    kalshi
    :传入Solana公钥(
    solAddress
    )。
持仓查询 (
lfi predict positions
):
  • --user <address>
    必填。规则与
    balance
    相同:Polymarket使用TEE EOA(服务器推导Safe),Kalshi使用Solana公钥。
  • --source <source>
    — 可选的服务商来源筛选
交易历史查询 (
lfi predict trades
):
  • --wallet <address>
    必填。规则与
    balance
    相同:Polymarket使用TEE EOA(服务器推导Safe),Kalshi使用Solana公钥。
  • --source <source>
    — 可选的服务商来源筛选
  • --limit <n>
    — 每页最大结果数
  • --cursor <cursor>
    — 分页游标
  • --type <types>
    — 逗号分隔的交易类型
  • --side <side>
    — 交易方向筛选
订单列表 (
lfi predict orders
):
  • --source <source>
    — 服务商来源
  • --wallet-address <address>
    — 钱包地址(Kalshi必填)
  • --market-id <id>
    — 市场ID筛选
  • --asset-id <id>
    — 资产ID筛选
  • --next-cursor <cursor>
    — 分页游标
  • --poly-api-key
    ,
    --poly-address
    ,
    --poly-signature
    ,
    --poly-passphrase
    ,
    --poly-timestamp
    — Polymarket CLOB认证参数(来源为polymarket时必填)
订单详情 (
lfi predict order <id>
):
  • <id>
    必填。订单ID
  • --source <source>
    必填。服务商来源
  • 与订单列表相同的
    --poly-*
    参数
Polymarket最小变动价位 (
lfi predict polymarket-tick-size
):
  • --token-id <id>
    必填。Polymarket CLOB代币ID
Polymarket费率 (
lfi predict polymarket-fee-rate
):
  • --token-id <id>
    必填。Polymarket CLOB代币ID
Polymarket部署状态 (
lfi predict polymarket-setup-status
):
  • --wallet-address <addr>
    — 可选的EVM地址。已认证时默认使用调用者的TEE钱包。
Polymarket部署执行 (
lfi predict polymarket-setup
):
  • 无参数。需要认证。幂等操作——可重复调用。
Polymarket充值地址 (
lfi predict polymarket-deposit-addresses
):
  • --safe-address <addr>
    必填。Safe钱包地址(来自
    polymarket-setup-status
Polymarket下单(TEE自动) (
lfi predict polymarket-place
):
  • --token-id <id>
    必填。Polymarket CLOB代币ID
  • --side BUY|SELL
    必填
  • --order-type GTC|GTD|FOK|FAK|MARKET
    必填
  • --price <p>
    — 限价(仅限价单需要,例如
    0.55
    )。GTC/GTD/FOK/FAK订单必填。
  • --size <sz>
    — 限价单:份额数;市价买入:USDC金额;市价卖出:份额数。限价单和市价单均必填。
  • --expiration <epochSec>
    GTD
    订单必填。
  • --neg-risk true|false
    — 强制使用NegRisk交易所。省略时自动检测。
  • --fee-rate-bps <n>
    — 覆盖费率(省略时PS自动解析)。
  • --tick-size <n>
    — 覆盖最小变动价位(省略时PS自动解析)。
  • --taker-address <addr>
    — 限制对手方地址(高级功能)。
Kalshi下单(TEE自动) (
lfi predict kalshi-place
):
  • --input-mint <addr>
    必填。输入代币mint地址
  • --output-mint <addr>
    必填。输出代币mint地址
  • --amount <amt>
    必填。最小单位金额
  • --slippage-bps <bps>
    — 滑点容忍度(基点)
取消订单 (
lfi predict cancel <id>
):
  • <id>
    必填。订单ID
  • --source polymarket|kalshi
    必填。对于Polymarket,L2 HMAC头信息会从调用者的TEE钱包自动推导。
Kalshi报价 (
lfi predict kalshi-quote
):
  • --input-mint <address>
    必填。输入代币mint地址
  • --output-mint <address>
    必填。输出代币mint地址
  • --amount <amount>
    必填。兑换金额
  • --user-public-key <key>
    必填。用户的Solana公钥
  • --slippage-bps <bps>
    — 滑点容忍度(基点)
Kalshi提交 (
lfi predict kalshi-submit
):
  • --signed-transaction <tx>
    必填。已签名的交易数据
  • --order-context <json>
    必填。订单上下文JSON字符串(包含
    user_public_key
    market_slug
    side
    outcome
    、mints、
    amount
    price
    slippage_bps
Polymarket订单 (
lfi predict polymarket-order
):
  • --body <json>
    必填。原始订单JSON字符串
  • --poly-api-key <key>
    必填。Polymarket API密钥
  • --poly-address <address>
    必填。Polymarket地址
  • --poly-signature <sig>
    必填。Polymarket HMAC签名
  • --poly-passphrase <pass>
    必填。Polymarket密码短语
  • --poly-timestamp <ts>
    必填。Polymarket时间戳

Operation Flow

操作流程

Browse Prediction Events

浏览预测事件

  1. Fetch events:
    lfi predict events --with-markets true --limit 20 --json
  2. Present results: Show event title, status, number of markets, volume
  3. Suggest next step: "Want to see details for a specific event?" / "需要查看某个事件的详情?"
  1. 获取事件
    lfi predict events --with-markets true --limit 20 --json
  2. 展示结果:显示事件标题、状态、市场数量、交易量
  3. 建议下一步:"需要查看某个事件的详情?"

Browse Events by Source

按来源浏览事件

  1. Determine source: Ask user for
    kalshi
    or
    polymarket
  2. Fetch:
    lfi predict events --source kalshi --with-markets true --limit 20 --json
  3. Present: Events filtered by provider
  4. Suggest next step: "Pick an event to view its markets and outcomes"
  1. 确定来源:询问用户选择
    kalshi
    polymarket
  2. 获取事件
    lfi predict events --source kalshi --with-markets true --limit 20 --json
  3. 展示结果:按服务商筛选后的事件
  4. 建议下一步:"选择一个事件查看其市场和结果"

View Event Details

查看事件详情

  1. Determine slug: From user selection or input
  2. Fetch event:
    lfi predict event <slug> --source <source> --json
  3. Present: Event title, description, status, resolution sources, markets with outcomes and prices
  4. Suggest next step: "Want to check your balance or place an order?"
  1. 确定slug:从用户选择或输入中获取
  2. 获取事件
    lfi predict event <slug> --source <source> --json
  3. 展示结果:事件标题、描述、状态、结果来源、包含结果和价格的市场信息
  4. 建议下一步:"需要查看余额或下单?"

Check USDC Balance

查询USDC余额

If the user says "我的余额", "my balance", "我在 Polymarket/Kalshi 有多少钱" or any first-person variant — DO NOT ask for a wallet address. Use the "My ..." auto-flow below.
Generic flow (when the user explicitly provides someone else's address):
  1. Collect inputs: Source (kalshi/polymarket) and wallet address
  2. Fetch:
    lfi predict balance --source <source> --user <address> --json
  3. Present: Available USDC balance
  4. Suggest next step: "Ready to place a prediction?" / "准备下注了吗?"
如果用户说“我的余额”、“my balance”、“我在 Polymarket/Kalshi 有多少钱”或任何第一人称表述——不要向用户索要钱包地址。请使用下方的“我的...”自动流程。
通用流程(用户明确提供他人地址时):
  1. 收集输入:来源(kalshi/polymarket)和钱包地址
  2. 获取余额
    lfi predict balance --source <source> --user <address> --json
  3. 展示结果:可用USDC余额
  4. 建议下一步:"准备下注了吗?"

Kalshi Order Flow (Quote → Sign → Submit)

Kalshi订单流程(报价→签名→提交)

  1. Browse events:
    lfi predict events --source kalshi --with-markets true --json
  2. View event:
    lfi predict event <slug> --source kalshi --json
    — identify market, outcomes, and mints
  3. Check balance:
    lfi predict balance --source kalshi --user <publicKey> --json
  4. Get quote:
    lfi predict kalshi-quote --input-mint <inMint> --output-mint <outMint> --amount <amt> --user-public-key <key> --json
  5. Present quote: Show expected output amount, price, slippage
  6. (mandatory) Wait for explicit user confirmation
  7. User signs the transaction (externally, e.g. via wallet)
  8. Submit:
    lfi predict kalshi-submit --signed-transaction <signedTx> --order-context '<contextJson>' --json
  9. Present result: Show signature, status
  1. 浏览事件
    lfi predict events --source kalshi --with-markets true --json
  2. 查看事件
    lfi predict event <slug> --source kalshi --json
    — 确定市场、结果和mints
  3. 检查余额
    lfi predict balance --source kalshi --user <publicKey> --json
  4. 获取报价
    lfi predict kalshi-quote --input-mint <inMint> --output-mint <outMint> --amount <amt> --user-public-key <key> --json
  5. 展示报价:显示预期输出金额、价格、滑点
  6. (必填) 等待用户明确确认
  7. 用户签名交易(外部操作,例如通过钱包)
  8. 提交交易
    lfi predict kalshi-submit --signed-transaction <signedTx> --order-context '<contextJson>' --json
  9. 展示结果:显示签名、状态

Polymarket Order Flow

Polymarket订单流程

  1. Browse events:
    lfi predict events --source polymarket --with-markets true --json
  2. View event:
    lfi predict event <slug> --source polymarket --json
  3. Check balance:
    lfi predict balance --source polymarket --user <address> --json
  4. Prepare order body: Construct the Polymarket order JSON
  5. (mandatory) Show order summary and wait for explicit user confirmation
  6. Create order:
    lfi predict polymarket-order --body '<orderJson>' --poly-api-key <key> --poly-address <addr> --poly-signature <sig> --poly-passphrase <pass> --poly-timestamp <ts> --json
  7. Present result: Show order response
  1. 浏览事件
    lfi predict events --source polymarket --with-markets true --json
  2. 查看事件
    lfi predict event <slug> --source polymarket --json
  3. 检查余额
    lfi predict balance --source polymarket --user <address> --json
  4. 准备订单体:构造Polymarket订单JSON
  5. (必填) 展示订单摘要并等待用户明确确认
  6. 创建订单
    lfi predict polymarket-order --body '<orderJson>' --poly-api-key <key> --poly-address <addr> --poly-signature <sig> --poly-passphrase <pass> --poly-timestamp <ts> --json
  7. 展示结果:显示订单响应

View Positions

查看持仓

If the user says "我的持仓", "我现在押了哪些", "my positions", "我赌了什么" or any first-person variant — DO NOT ask for a wallet address. Use the "My ..." auto-flow below.
Generic flow (when the user explicitly provides someone else's address):
  1. Determine user: Get wallet address from user
  2. Fetch:
    lfi predict positions --user <address> --json
  3. Present: Show event/market, outcome, size, entry price, current value
  4. Suggest next step: "Want to see your trade history?" / "需要查看交易历史?"
如果用户说“我的持仓”、“我现在押了哪些”、“my positions”、“我赌了什么”或任何第一人称表述——不要向用户索要钱包地址。请使用下方的“我的...”自动流程。
通用流程(用户明确提供他人地址时):
  1. 确定用户:从用户处获取钱包地址
  2. 获取持仓
    lfi predict positions --user <address> --json
  3. 展示结果:显示事件/市场、结果、数量、入场价格、当前价值
  4. 建议下一步:"需要查看交易历史?"

View Trade History

查看交易历史

If the user says "我的交易", "我赚了多少", "我亏了多少", "my trades", "我的盈亏" or any first-person variant — DO NOT ask for a wallet address. Use the "My ..." auto-flow below.
Generic flow (when the user explicitly provides someone else's address):
  1. Determine wallet: Get wallet address from user
  2. Fetch:
    lfi predict trades --wallet <address> --limit 20 --json
  3. Present: Show trade timestamp, event/market, side, price, size
  4. Suggest next step: "Want to check your current positions?" / "需要查看当前持仓?"
如果用户说“我的交易”、“我赚了多少”、“我亏了多少”、“my trades”、“我的盈亏”或任何第一人称表述——不要向用户索要钱包地址。请使用下方的“我的...”自动流程。
通用流程(用户明确提供他人地址时):
  1. 确定钱包:从用户处获取钱包地址
  2. 获取交易历史
    lfi predict trades --wallet <address> --limit 20 --json
  3. 展示结果:显示交易时间戳、事件/市场、方向、价格、数量
  4. 建议下一步:"需要查看当前持仓?"

"My ..." auto-flow (CRITICAL — covers "我的", "my", "我自己")

“我的...”自动流程(关键——覆盖“我的”、“my”、“我自己”)

Whenever the user asks about THEIR OWN prediction-market data — positions, trades, balance, PnL, "我现在押了哪些", "我在预测市场赚了多少", "我在 Polymarket 上的钱", etc. — run this exact sequence. NEVER ask the user to type their wallet address.
  1. Check session:
    lfi status --json
  2. If not authenticated (or
    expired: true
    ):
    lfi login key --role AGENT --name "OpenClawAgent" --json
  3. Fetch TEE wallet addresses:
    lfi whoami --json
    → returns
    evmAddress
    (use for Polymarket) and
    solAddress
    (use for Kalshi).
  4. Determine source(s):
    • If the user named "Polymarket" → use
      evmAddress
      only.
    • If the user named "Kalshi" → use
      solAddress
      only.
    • If neither was named (e.g. "我在预测市场赚了多少") → query BOTH and merge.
  5. Run the matching query for each source — pass the TEE EOA / SOL pubkey from step 3 DIRECTLY. NEVER convert to a Safe address first; the server does that internally for Polymarket.
    • Positions:
      lfi predict positions --user <evmAddress|solAddress> [--source <s>] --json
    • Trades:
      lfi predict trades --wallet <evmAddress|solAddress> [--source <s>] --limit 50 --json
    • Balance:
      lfi predict balance --source <s> --user <evmAddress|solAddress> --json
  6. Present a single consolidated answer that names the source(s) used and, for the "我赚了多少" / PnL question, sums realized + unrealized PnL across the returned trades/positions.
Why this is mandatory: prediction queries always require an address parameter in the CLI, but a normal user does NOT know their TEE wallet address — the LiberFi server holds it. The skill must resolve "我" → TEE wallet via
whoami
, transparently. The user should never have to type or even see the hex/Base58 address unless they ask.
EOA vs Safe — critical distinction for Polymarket: The address from
whoami.evmAddress
is the user's TEE EOA. For
balance
/
positions
/
trades
queries, ALWAYS pass the EOA — the prediction-server derives the Polymarket Safe via CREATE2 internally. The Safe address (returned by
polymarket-setup-status
) is ONLY for
polymarket-deposit-addresses --safe-address
(Polymarket Bridge requires the actual Safe as bridge key). Mixing these up → balance / positions / trades return EMPTY because the server tries to derive a Safe from an already-Safe address.
每当用户询问他们自己的预测市场数据——持仓、交易、余额、盈亏、“我现在押了哪些”、“我在预测市场赚了多少”、“我在 Polymarket 上的钱”等——请严格执行以下步骤。绝不要让用户输入钱包地址。
  1. 检查会话
    lfi status --json
  2. 若未认证(或
    expired: true
    ):执行
    lfi login key --role AGENT --name "OpenClawAgent" --json
  3. 获取TEE钱包地址
    lfi whoami --json
    → 返回
    evmAddress
    (用于Polymarket)和
    solAddress
    (用于Kalshi)。
  4. 确定来源
    • 如果用户提到“Polymarket” → 仅使用
      evmAddress
    • 如果用户提到“Kalshi” → 仅使用
      solAddress
    • 如果两者都未提及(例如“我在预测市场赚了多少”) → 查询两者并合并结果。
  5. 对每个来源执行匹配查询——直接传入步骤3中的TEE EOA/SOL公钥。绝不要先转换为Safe地址;服务器会为Polymarket内部完成转换。
    • 持仓:
      lfi predict positions --user <evmAddress|solAddress> [--source <s>] --json
    • 交易:
      lfi predict trades --wallet <evmAddress|solAddress> [--source <s>] --limit 50 --json
    • 余额:
      lfi predict balance --source <s> --user <evmAddress|solAddress> --json
  6. 展示合并后的结果,注明使用的来源;对于“我赚了多少”/盈亏查询,需汇总返回的交易/持仓中的已实现+未实现盈亏。
为何这是必填项:预测查询在CLI中始终需要地址参数,但普通用户不知道他们的TEE钱包地址——该地址由LiberFi服务器托管。技能需通过
whoami
自动将“我”解析为TEE钱包地址,全程透明。除非用户主动询问,否则用户无需输入甚至查看十六进制/Base58格式的地址。
EOA与Safe的关键区别(针对Polymarket)
whoami.evmAddress
是用户的TEE EOA。对于
balance
/
positions
/
trades
查询,必须传入EOA——预测服务器会通过CREATE2从EOA自动推导Polymarket Safe地址。Safe地址(由
polymarket-setup-status
返回)仅用于
polymarket-deposit-addresses --safe-address
(Polymarket Bridge需要真实的Safe地址作为桥接密钥)。混淆两者会导致余额/持仓/交易查询返回空值,因为服务器会尝试从已有的Safe地址再推导一个Safe地址。

Check Order Status

查看订单状态

  1. List orders:
    lfi predict orders --source <source> --wallet-address <address> --json
  2. Or get specific order:
    lfi predict order <id> --source <source> --json
  3. Present: Show order status, side, price, filled amount
  1. 列出订单
    lfi predict orders --source <source> --wallet-address <address> --json
  2. 或查看特定订单
    lfi predict order <id> --source <source> --json
  3. 展示结果:显示订单状态、方向、价格、成交金额

Cross-Skill Workflows

跨技能工作流

"Research an event and place a bet"

“研究事件并下注”

Full flow: predict → predict → predict → predict → predict
  1. predict
    lfi predict events --search "bitcoin" --with-markets true --json
  2. predict
    lfi predict event <slug> --source kalshi --json
    — view markets and outcomes
  3. predict
    lfi predict balance --source kalshi --user <publicKey> --json
    — check funds
  4. predict
    lfi predict kalshi-quote --input-mint <in> --output-mint <out> --amount <amt> --user-public-key <key> --json
    — get quote
  5. Present quote, wait for confirmation, user signs transaction
  6. predict
    lfi predict kalshi-submit --signed-transaction <tx> --order-context '<ctx>' --json
完整流程:predict → predict → predict → predict → predict
  1. predict
    lfi predict events --search "bitcoin" --with-markets true --json
  2. predict
    lfi predict event <slug> --source kalshi --json
    — 查看市场和结果
  3. predict
    lfi predict balance --source kalshi --user <publicKey> --json
    — 检查资金
  4. predict
    lfi predict kalshi-quote --input-mint <in> --output-mint <out> --amount <amt> --user-public-key <key> --json
    — 获取报价
  5. 展示报价,等待用户确认,用户签名交易
  6. predict
    lfi predict kalshi-submit --signed-transaction <tx> --order-context '<ctx>' --json

"Check my prediction portfolio and trade history"

“查看我的预测投资组合和交易历史”

Full flow: predict → predict
  1. predict
    lfi predict positions --user <address> --json
    — current positions
  2. predict
    lfi predict trades --wallet <address> --limit 50 --json
    — trade history
  3. Present consolidated portfolio view
完整流程:predict → predict
  1. predict
    lfi predict positions --user <address> --json
    — 当前持仓
  2. predict
    lfi predict trades --wallet <address> --limit 50 --json
    — 交易历史
  3. 展示合并后的投资组合视图

"Browse events, then research the underlying token"

“浏览事件,然后研究相关代币”

Full flow: predict → token → token
  1. predict
    lfi predict events --with-markets true --limit 10 --json
  2. User selects an event related to a specific token
  3. token
    lfi token info sol <tokenAddress> --json
    — token details
  4. token
    lfi token security sol <tokenAddress> --json
    — security audit
完整流程:predict → token → token
  1. predict
    lfi predict events --with-markets true --limit 10 --json
  2. 用户选择与特定代币相关的事件
  3. token
    lfi token info sol <tokenAddress> --json
    — 代币详情
  4. token
    lfi token security sol <tokenAddress> --json
    — 安全审计

Suggest Next Steps

建议下一步操作

Just completedSuggest to user
Events list"Want to view a specific event?" / "需要查看某个事件的详情?"
Event detail"Want to check your balance or place an order?" / "需要查看余额或下单?"
Balance check"Ready to place a prediction?" / "准备下注了吗?"
Kalshi quote"Want to proceed with this trade?" / "要继续这笔交易吗?"
Kalshi submit"Order submitted! Check your positions to verify." / "订单已提交!查看持仓确认。"
Polymarket order"Order created! Check order status to confirm." / "订单已创建!查看订单状态确认。"
Positions view"Want to see trade history?" / "需要查看交易历史?"
Trade history"Want to check current positions?" / "需要查看当前持仓?"
Orders list"Want to see details for a specific order?" / "需要查看某个订单的详情?"
刚完成的操作向用户建议
事件列表浏览"需要查看某个事件的详情?"
事件详情查看"需要查看余额或下单?"
余额查询"准备下注了吗?"
Kalshi报价获取"要继续这笔交易吗?"
Kalshi订单提交"订单已提交!查看持仓确认。"
Polymarket订单创建"订单已创建!查看订单状态确认。"
持仓查看"需要查看交易历史?"
交易历史查看"需要查看当前持仓?"
订单列表浏览"需要查看某个订单的详情?"

Edge Cases

边缘情况

  • Invalid source: If the API returns an error about source, list valid sources (
    kalshi
    ,
    polymarket
    ) and ask the user to choose
  • No events found: Inform user: "No prediction events found matching your criteria. Try different filters or search terms."
  • Empty positions: Inform user: "No open positions found for this wallet. You can browse events to find prediction opportunities."
  • Insufficient balance: If balance is too low for a trade, inform the user and suggest depositing funds
  • Invalid slug: If event not found, suggest searching events first via
    lfi predict events --search <keyword>
  • Polymarket auth missing: If POLY_* flags are missing for Polymarket operations, list all required flags and ask the user to provide them
  • Invalid JSON in --body or --order-context: If JSON parsing fails, show the parse error and ask the user to correct the JSON
  • Quote expired: Kalshi quotes have limited validity; if too much time passes, get a new quote
  • Network timeout: Retry once after 3 seconds; if still fails, suggest checking connectivity via
    lfi ping --json
  • 无效来源:如果API返回来源错误,列出有效来源(
    kalshi
    polymarket
    )并请用户选择
  • 未找到事件:告知用户:"未找到符合条件的预测事件。请尝试不同的筛选条件或搜索词。"
  • 无持仓:告知用户:"该钱包无未平仓持仓。你可以浏览事件寻找预测机会。"
  • 余额不足:如果余额不足以交易,告知用户并建议充值
  • 无效slug:如果未找到事件,建议用户先通过
    lfi predict events --search <keyword>
    搜索事件
  • Polymarket认证缺失:如果Polymarket操作缺少POLY_*参数,列出所有必填参数并请用户提供
  • --body或--order-context中的JSON无效:如果JSON解析失败,显示解析错误并请用户修正JSON
  • 报价过期:Kalshi报价有效期有限;如果时间过长,获取新报价
  • 网络超时:3秒后重试一次;若仍失败,建议用户通过
    lfi ping --json
    检查连通性

Common Pitfalls

常见陷阱

PitfallCorrect Approach
Forgetting
--source
on event detail
Always specify
--source kalshi
or
--source polymarket
Missing POLY_* flags for PolymarketAll five
--poly-*
flags are required for Polymarket orders and order queries
Modifying the quote response before submittingPass quote data through as-is in
--order-context
Submitting without user confirmationALWAYS show order/quote summary and wait for explicit "yes"
Fabricating a signed transactionThe
--signed-transaction
must come from the user's actual wallet signing
Using wrong mint addressesVerify mints from the event detail response before quoting
陷阱正确做法
查看事件详情时忘记
--source
始终指定
--source kalshi
--source polymarket
Polymarket操作缺少POLY_*参数Polymarket订单和订单查询需要所有五个
--poly-*
参数
提交前修改报价响应直接将报价数据传入
--order-context
,不要修改
未获得用户确认就提交始终展示订单/报价摘要并等待用户明确回复“是”
伪造签名交易
--signed-transaction
必须来自用户实际钱包的签名
使用错误的mint地址在报价前从事件详情响应中验证mint地址

Security Notes

安全说明

See security-policy.md for global security rules.
Skill-specific rules:
  • Polymarket CLOB credentials are sensitive — never log, display, or store POLY_* values beyond the immediate command execution
  • Kalshi transactions involve real funds — never fabricate or guess signed transaction data
  • NEVER place orders without explicit user confirmation — always show the order summary first
  • The
    --order-context
    and
    --body
    fields are opaque — pass them through as-is; do not interpret, modify, or display raw content beyond summarizing key fields (amount, side, market)
  • After order submission, provide the result so the user can independently verify
全局安全规则请查看security-policy.md
本技能专属规则:
  • Polymarket CLOB凭证敏感——绝不要记录、显示或存储POLY_*值,仅在执行命令时临时使用
  • Kalshi交易涉及真实资金——绝不要伪造或猜测签名交易数据
  • 绝不要在未获得用户明确确认的情况下下单——始终先展示订单摘要
  • --order-context
    --body
    字段为透明字段——直接传递,不要解析、修改或显示原始内容,仅汇总关键字段(金额、方向、市场)
  • 订单提交后,向用户展示结果以便用户独立验证