Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

Kalshi Event Contract Tracker

v1.1.0

Track Kalshi event contract prices, order book depth, and recent trades. Covers sports, politics, economics, and weather markets. Converts contract prices to...

0· 106·0 current·0 all-time

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for rsquaredsolutions2026/kalshi-tracker.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "Kalshi Event Contract Tracker" (rsquaredsolutions2026/kalshi-tracker) from ClawHub.
Skill page: https://clawhub.ai/rsquaredsolutions2026/kalshi-tracker
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Required binaries: curl, jq
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install kalshi-tracker

ClawHub CLI

Package manager switcher

npx clawhub@latest install kalshi-tracker
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Suspicious
medium confidence
Purpose & Capability
The SKILL.md clearly implements a Kalshi read-only tracker (prices, order book, trades) and uses curl/jq to call Kalshi APIs — this matches the name and description. However, the registry metadata at the top of the report lists no required env vars or primary credential, while the SKILL.md declares a Kalshi API key (KALSHI_API_KEY). That mismatch is unexpected and should be corrected.
Instruction Scope
Instructions only call Kalshi API endpoints, parse results with jq (and a small Python snippet), and present read-only market data. The SKILL.md does not instruct the agent to read local files, other credentials, or send data to third-party endpoints outside the Kalshi API. Error handling mentions the API key and 401s. Scope appears limited to the stated purpose.
Install Mechanism
This is instruction-only with no install spec or code to download and execute; that is the lowest-risk install model.
!
Credentials
The SKILL.md requires KALSHI_API_KEY (Authorization: Bearer $KALSHI_API_KEY) but the skill registry metadata reported no required env vars or primary credential — a clear inconsistency. Also, the runtime uses python3 in a conversion step but python3 is not listed in the required binaries (only curl and jq are listed). These mismatches could lead to runtime failures or indicate the package metadata was not kept in sync with the instructions.
Persistence & Privilege
always:false and no install step that modifies agent configuration. The skill can be invoked autonomously (default), which is normal — there is no elevated persistence requested.
What to consider before installing
This skill appears to do what it says (read-only Kalshi market queries), but before installing: 1) verify the author/source since the registry metadata does not declare the KALSHI_API_KEY even though SKILL.md requires it; that suggests the listing might be incomplete or stale. 2) Ensure python3 is available on the agent environment (SKILL.md calls a python3 snippet) or ask the publisher to add python3 to the required binaries. 3) Confirm you are comfortable providing a Kalshi API key (KALSHI_API_KEY) and limit the key's scope if possible; keep it secret. 4) Check the API endpoints used (api.elections.kalshi.com/trade-api/...) against Kalshi's official API docs to confirm they are legitimate. If you cannot verify the source or these mismatches, treat the skill as untrusted and avoid installing it until the metadata and required dependencies are corrected.

Like a lobster shell, security has layers — review code before you run it.

Runtime requirements

📈 Clawdis
Binscurl, jq
agentbetsvk97fx7f2c2emt9s1qc6qc5dp8h83kkc8bettingvk97fx7f2c2emt9s1qc6qc5dp8h83kkc8latestvk97fx7f2c2emt9s1qc6qc5dp8h83kkc8openclawvk97fx7f2c2emt9s1qc6qc5dp8h83kkc8prediction-marketsvk97fx7f2c2emt9s1qc6qc5dp8h83kkc8sports-bettingvk97fx7f2c2emt9s1qc6qc5dp8h83kkc8
106downloads
0stars
2versions
Updated 1mo ago
v1.1.0
MIT-0

Kalshi Event Contract Tracker

Monitor Kalshi prediction market contracts — prices, order books, and trade history.

When to Use

Use this skill when the user asks about:

  • Kalshi market prices or event contracts
  • Prediction market odds for sports, politics, economics, or weather
  • Order book depth or liquidity on Kalshi
  • Converting Kalshi contract prices to American odds
  • Recent trades or volume on a Kalshi market
  • Comparing Kalshi prices against sportsbook odds

Event Categories

Common Kalshi event categories:

CategorySeries PrefixExamples
SportsSPORTS-NBA winners, NFL spreads, World Cup
PoliticsPOL-Elections, policy decisions
EconomicsECON-, FED-GDP, inflation, Fed rate decisions
WeatherWEATHER-Temperature records, hurricane landfalls
FinanceFINANCE-Stock prices, crypto prices
EntertainmentENT-Award show winners, box office

Operations

1. List Active Events

Browse events with optional category filtering:

curl -s "https://api.elections.kalshi.com/trade-api/v2/events?status=open&limit=50" \
  -H "Authorization: Bearer $KALSHI_API_KEY" \
  | jq '[.events[] | {
    ticker: .event_ticker,
    title: .title,
    category: .category,
    markets_count: (.markets | length),
    volume: .volume
  }] | sort_by(-.volume) | .[:20]'

To filter by category (e.g., sports):

curl -s "https://api.elections.kalshi.com/trade-api/v2/events?status=open&limit=50&series_ticker=SPORTS" \
  -H "Authorization: Bearer $KALSHI_API_KEY" \
  | jq '[.events[] | {
    ticker: .event_ticker,
    title: .title,
    markets_count: (.markets | length),
    volume: .volume,
    close_time: .close_time
  }] | sort_by(-.volume)'

2. Get Contract Prices

Fetch current Yes/No prices, volume, and status for a specific event's markets. Replace EVENT_TICKER with the event ticker from operation 1:

curl -s "https://api.elections.kalshi.com/trade-api/v2/events/EVENT_TICKER" \
  -H "Authorization: Bearer $KALSHI_API_KEY" \
  | jq '{
    event: .event.title,
    category: .event.category,
    markets: [.event.markets[] | {
      ticker: .ticker,
      subtitle: .subtitle,
      yes_price: (.yes_bid // "no bid"),
      no_price: (.no_bid // "no bid"),
      yes_ask: (.yes_ask // "no ask"),
      no_ask: (.no_ask // "no ask"),
      last_price: .last_price,
      volume: .volume,
      open_interest: .open_interest,
      status: .status,
      close_time: .close_time
    }]
  }'

3. Convert Contract Prices to American Odds

After fetching prices, convert to American odds for sportsbook comparison:

curl -s "https://api.elections.kalshi.com/trade-api/v2/events/EVENT_TICKER" \
  -H "Authorization: Bearer $KALSHI_API_KEY" \
  | jq -r '.event.markets[] | "\(.subtitle)\t\(.last_price)"' \
  | python3 -c "
import sys
for line in sys.stdin:
    parts = line.strip().split('\t')
    if len(parts) != 2:
        continue
    name, price_str = parts
    try:
        price = float(price_str) / 100
    except (ValueError, TypeError):
        print(f'{name}: no price available')
        continue
    if price <= 0 or price >= 1:
        print(f'{name}: {price_str}c (off the board)')
    elif price > 0.5:
        odds = -(price / (1 - price)) * 100
        print(f'{name}: {price_str}c → {int(odds):+d} (implied {price:.1%})')
    elif price < 0.5:
        odds = ((1 - price) / price) * 100
        print(f'{name}: {price_str}c → +{int(odds)} (implied {price:.1%})')
    else:
        print(f'{name}: {price_str}c → +100/-100 (implied 50.0%)')
"

4. Check Order Book Depth

View resting orders to assess liquidity for a specific market. Replace MARKET_TICKER with the market ticker from operation 2:

curl -s "https://api.elections.kalshi.com/trade-api/v2/markets/MARKET_TICKER/orderbook" \
  -H "Authorization: Bearer $KALSHI_API_KEY" \
  | jq '{
    ticker: .ticker,
    yes_orders: [.orderbook.yes[]? | "price: \(.[0])c  qty: \(.[1])"],
    no_orders: [.orderbook.no[]? | "price: \(.[0])c  qty: \(.[1])"],
    spread: ((.orderbook.yes[0]?[0] // 0) + (.orderbook.no[0]?[0] // 0) - 100),
    depth_yes_top3: ([.orderbook.yes[:3]?[]?[1]] | add // 0),
    depth_no_top3: ([.orderbook.no[:3]?[]?[1]] | add // 0)
  }'

5. Fetch Recent Trades

See the last trades executed on a market for momentum and volume analysis:

curl -s "https://api.elections.kalshi.com/trade-api/v2/markets/MARKET_TICKER/trades?limit=20" \
  -H "Authorization: Bearer $KALSHI_API_KEY" \
  | jq '[.trades[] | {
    time: .created_time,
    price: .yes_price,
    count: .count,
    taker_side: .taker_side
  }]'

Output Rules

  1. Always show the event title, market subtitle, and contract ticker
  2. Show contract prices in cents (e.g., 45c for $0.45)
  3. When showing American odds conversion, include both the cent price and the converted odds
  4. For order books, report the bid/ask spread and top-3 depth on each side
  5. Flag markets with fewer than 5 contracts of top-of-book depth as "thin liquidity"
  6. Flag markets with bid/ask spread > 10c as "wide spread — use limit orders"
  7. Always show volume and open interest for context
  8. Note the market close time so the agent knows time-to-expiry

Error Handling

  • If KALSHI_API_KEY is not set, tell the user to create a Kalshi account at https://kalshi.com/ and generate an API key
  • If the API returns 401, the API key may be expired — suggest regenerating it
  • If an event ticker returns empty markets, the event may have settled or been delisted
  • If rate limited (429), wait 60 seconds before retrying
  • If order book is empty, the market may be halted or near expiry

About

Built by AgentBets — full tutorial at agentbets.ai/guides/openclaw-kalshi-tracker-skill/.

Part of the OpenClaw Skills series for the Agent Betting Stack.

Comments

Loading comments...