Skip to content

huebr odds intelligence

by jucasoliveira · remote · no sign-in to list tools · v1.0.1 · published by GitHub user jucasoliveira

Cross-venue prediction market odds (Polymarket, Kalshi, PredictIt, Manifold) with arbitrage signals

Changes · 2

11 tools: 2 change things and 9 only read.

Scanned Oct 21, 2026

1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http huebr https://huebr.net/mcp

Findings

Matches of fixed checks, with the text they matched.

1 warn
  • The server marks "search_markets" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "search_markets" says "search": a word for reading.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

11 tools

Changes things 2Claude Code: ask
  • post_signalRecords a forecast on one market (or cross-venue event) for the calling API key.No findings

    Why it is in this group

    • The name "post_signal" says "post": a word for a change.
    Description, as the server wrote it
    Records a forecast on one market (or cross-venue event) for the calling API key. probability is the probability that the market resolves YES. The market price and cross-venue consensus at posting time are stored with it. Each signal is scored with Brier score and log loss when the market resolves, building a calibration record per key. It does not place a trade.

    Annotations the server declares

    • title: Post a signal
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • search_marketsOpen binary markets on every venue whose text contains all the keywords, with normalised prices (probability, best bid and ask for YES and NO), volume, close time, the venue URL an…1 finding

    Why it is in this group

    • The name "search_markets" says "search": a word for reading.
    • The description's first verb is "open": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "search_markets" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "search_markets" says "search": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Open binary markets on every venue whose text contains all the keywords, with normalised prices (probability, best bid and ask for YES and NO), volume, close time, the venue URL and the cross-venue eventId when the market is matched on other venues.

    Annotations the server declares

    • title: Search markets
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
Only reads 9Claude Code: allow
  • find_arbitrageCross-venue arbitrage, buying YES on one venue and NO on another so one leg always pays, with net edge per contract after modelled fees, ROI and available size.No findings

    Why it is in this group

    • The name "find_arbitrage" says "find": a word for reading.
    Description, as the server wrote it
    Cross-venue arbitrage, buying YES on one venue and NO on another so one leg always pays, with net edge per contract after modelled fees, ROI and available size. Without a PRO plan, results beyond a short preview cost $0.01 per call from the caller's prepaid credit; callers without credit see the preview.

    Annotations the server declares

    • title: Find arbitrage
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • find_cross_venue_eventsPropositions matched across venues with each venue's price side by side, the liquidity-weighted consensus probability, the dispersion between venues and the cheapest venue to buy Y…No findings

    Why it is in this group

    • The name "find_cross_venue_events" says "find": a word for reading.
    Description, as the server wrote it
    Propositions matched across venues with each venue's price side by side, the liquidity-weighted consensus probability, the dispersion between venues and the cheapest venue to buy YES or NO.

    Annotations the server declares

    • title: Compare odds across venues
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • find_mispricingsVenues whose executable price is away from the consensus of the other real-money venues, with expected edge per contract if that consensus is right.No findings

    Why it is in this group

    • The name "find_mispricings" says "find": a word for reading.
    Description, as the server wrote it
    Venues whose executable price is away from the consensus of the other real-money venues, with expected edge per contract if that consensus is right. Without a PRO plan, results beyond a short preview cost $0.01 per call from the caller's prepaid credit; callers without credit see the preview.

    Annotations the server declares

    • title: Find mispricings
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • get_calibrationThe calling key's calibration record - Brier score, log loss, skill against the market price and the consensus at posting time, and a 10-bucket calibration curve.No findings

    Why it is in this group

    • The name "get_calibration" says "get": a word for reading.
    Description, as the server wrote it
    The calling key's calibration record - Brier score, log loss, skill against the market price and the consensus at posting time, and a 10-bucket calibration curve.

    Annotations the server declares

    • title: Get my calibration
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • get_eventOne matched event by id (evt_...), with every venue quote and the live arbitrage and mispricing signals on it.No findings

    Why it is in this group

    • The name "get_event" says "get": a word for reading.
    Description, as the server wrote it
    One matched event by id (evt_...), with every venue quote and the live arbitrage and mispricing signals on it.

    Annotations the server declares

    • title: Get cross-venue event
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • get_marketFull detail for one market by id: {venue}:{nativeId}, as returned by search_markets.No findings

    Why it is in this group

    • The name "get_market" says "get": a word for reading.
    Description, as the server wrote it
    Full detail for one market by id: {venue}:{nativeId}, as returned by search_markets.

    Annotations the server declares

    • title: Get market
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • get_price_historyImplied probability of one market as the last value per bucket, for any range (default the last 24 hours at 5 minute resolution).No findings

    Why it is in this group

    • The name "get_price_history" says "get": a word for reading.
    Description, as the server wrote it
    Implied probability of one market as the last value per bucket, for any range (default the last 24 hours at 5 minute resolution). History is kept permanently, including for closed markets. Without a PRO plan, the full series costs $0.002 per call from the caller's prepaid credit; callers without credit get the latest 12 points.

    Annotations the server declares

    • title: Get price history
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • list_my_signalsThe calling key's signals, newest first, with status (OPEN, SCORED, VOID) and scores once resolved.No findings

    Why it is in this group

    • The name "list_my_signals" says "list": a word for reading.
    Description, as the server wrote it
    The calling key's signals, newest first, with status (OPEN, SCORED, VOID) and scores once resolved.

    Annotations the server declares

    • title: List my signals
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • list_venuesVenues covered (Polymarket, Kalshi, PredictIt, Manifold), the number of open markets on each, sync health and whether prices are streamed live.No findings

    Why it is in this group

    • The name "list_venues" says "list": a word for reading.
    Description, as the server wrote it
    Venues covered (Polymarket, Kalshi, PredictIt, Manifold), the number of open markets on each, sync health and whether prices are streamed live.

    Annotations the server declares

    • title: List venues
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.0.1. Values in angle brackets are yours to fill in.

claude mcp add --transport http huebr https://huebr.net/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__huebr__list_venues",
      "mcp__huebr__get_market",
      "mcp__huebr__find_cross_venue_events",
      "mcp__huebr__get_event",
      "mcp__huebr__find_arbitrage",
      "mcp__huebr__find_mispricings",
      "mcp__huebr__get_price_history",
      "mcp__huebr__list_my_signals",
      "mcp__huebr__get_calibration"
    ],
    "ask": [
      "mcp__huebr__search_markets",
      "mcp__huebr__post_signal"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as huebr. Review it before you use it.