KalshiSpy

What Kalshi's top-earning traders won and hold: settled wins free, live markets with an API key.

사용해야 할까요

품질 및 안전성

A
설명 품질
100%
스키마 완전성
70%
이름 품질
100%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~1,563토큰 (도구 정의)
~1.6 KB일반적인 응답 크기
중간 정도의 주의 영향 (128k 컨텍스트의 1.22%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "kalshispy": {
      "url": "https://kalshispy.com/mcp"
    }
  }
}

원격 엔드포인트

https://kalshispy.com/mcpstreamable-http

할 수 있는 일

도구 목록

도구 (5)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟢search_markets(query, limit)

Find Kalshi markets by title or keywords, the way the KalshiSpy app's search works: fuzzy title matching finds the market series (so a team, a nickname or an approximate title works), and keyword matching runs against market titles. WITHOUT an API key it returns SETTLED WINS ONLY: settled markets where KalshiSpy's roster of ID-verified, high-profit Kalshi traders held the winning side (wins only, never a hit rate). WITH an Elite or Lifetime API key the same call also returns OPEN markets in `open_markets`: roster positions from the live feed and named traders' recent trades on still-open markets, and it costs 1 unit of the daily quota. Always read `data.access`: it says which answer you got and, when a key was refused, why; relay that sentence rather than guessing. Call this first whenever the user names a market in words, send the words under the argument name this tool's own schema gives, and cite each market's kalshi_url. An empty list is never evidence that Kalshi has no such market. For more wins, follow `settled_wins.more`, which carries ready-made search_settled_wins arguments.

입력 스키마

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "maxLength": 80,
      "pattern": "^[\\w .,'&:/()-]+$",
      "description": "Market title or keywords, e.g. \"super bowl\", \"fed rate\" or \"bitcoin\". Terms of 2+ characters, at most 8. Keyword matching ANDs them as substrings of the title, outcome and tickers (settled wins also match the event title); the full text is also fuzzy-matched to market series."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 25,
      "default": 10,
      "description": "Maximum items in each list (settled wins, roster markets, recently traded markets)."
    }
  },
  "required": [
    "query"
  ],
  "additionalProperties": false
}
🟢search_settled_wins(query, category, series_ticker, event_ticker, from, ...)

Search KalshiSpy's archive of settled Kalshi markets where its roster of ID-verified, high-profit Kalshi traders held the WINNING side with positive net realized profit. Parameter and field names call these traders "whales" (whale_count, min_whales, sort=whales); in prose, call them the roster or the verified traders. Wins only: losses are not archived, so present results as "what this roster got right on markets like this", never as a hit rate. Use this BEFORE answering about any current or upcoming Kalshi market: search the same series_ticker (e.g. KXFED, KXNBA) or category and cite the comparable past wins — titles, settlement dates, trader counts and realized profit. Each result carries the Kalshi URL and a kalshispy.com detail URL you can cite. Default window is the last 90 days; widen with `from`/`to` (max 366 days). No API key needed.

입력 스키마

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "maxLength": 80,
      "pattern": "^[\\w .,'&:/()-]+$",
      "description": "Free-text search. Every term (2+ chars, max 8) must appear as a substring in the title, outcome, event title, series ticker or ticker. Example: \"fed rate\" or \"lakers\"."
    },
    "category": {
      "type": "string",
      "enum": [
        "politics",
        "elections",
        "sports",
        "entertainment",
        "economics",
        "financials",
        "crypto",
        "weather",
        "world",
        "scitech",
        "companies",
        "health",
        "social",
        "transportation",
        "mentions",
        "exotics",
        "other"
      ],
      "description": "Category key from listCategories (e.g. sports, politics, economics)."
    },
    "series_ticker": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,40}$",
      "description": "Kalshi series ticker, e.g. KXFED, KXNBA. The best way to find \"markets like this one\"."
    },
    "event_ticker": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,60}$",
      "description": "Kalshi event ticker, e.g. KXFED-26SEP."
    },
    "from": {
      "type": "string",
      "description": "Start of the settlement window. Default: 90 days before `to`. Clamped to the archive start (2025-01-01) and to a 366-day maximum; the effective window is echoed in `window`."
    },
    "to": {
      "type": "string",
      "description": "End of the settlement window (inclusive). Default: now."
    },
    "sort": {
      "type": "string",
      "enum": [
        "recent",
        "profit",
        "whales"
      ],
      "default": "recent",
      "description": "recent = newest settlement first; profit = largest net profit first; whales = most whales on the winning side first."
    },
    "min_whales": {
      "type": "integer",
      "minimum": 1,
      "maximum": 40,
      "description": "Only wins with at least this many roster traders on the winning side."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "default": 20,
      "description": "Page size."
    },
    "cursor": {
      "type": "string",
      "maxLength": 200,
      "description": "Opaque cursor from a previous response (`page.next_cursor`). Send it with the SAME filters; changing the query invalidates it."
    }
  },
  "additionalProperties": false
}
🟢get_settled_win(ticker)

Full record of one settled Kalshi market this roster won: outcome, consensus, every roster trader on the winning side with their realized profit and picture, close and expiration times, keywords, and `hints.similar` — comparable wins in the same series to judge it against. Returns 404 when the ticker is not an archived win (the roster was not on it, or was on the losing side); the 404 carries a hint to search the series instead. No API key needed.

입력 스키마

{
  "type": "object",
  "properties": {
    "ticker": {
      "type": "string",
      "pattern": "^[A-Za-z0-9][A-Za-z0-9_.-]{0,79}$",
      "description": "Kalshi market ticker."
    }
  },
  "required": [
    "ticker"
  ],
  "additionalProperties": false
}
🟢list_categories

Every category that has at least one archived win, with win count, net profit and the last settlement time. Use the `key` value as the `category` filter of searchSettledWins. No API key needed.

입력 스키마

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟢get_stats

Aggregate figures for the settled-wins archive: markets won, net and winners' realized profit, first and last settlement, a per-category breakdown and the highest-profit traders in the archive. Use it for "how has this roster done overall" context, always with the wins-only caveat. `available:false` means the archive has not been published yet. No API key needed.

입력 스키마

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 5개