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
11 tools: 2 change things and 9 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things2Claude Code: ask: see these tools
- Only reads9Claude Code: allow: see these tools
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/mcpFindings
Matches of fixed checks, with the text they matched.
- Warnsearch_markets
The server marks "search_markets" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "search_markets" says "search": a word for reading.
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".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "search_markets" says "search": a word for reading.
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/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .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.
