agentleFS
noahowshnoahowsh/acesapi-mcp/skills/odds-explorer/SKILL.md

odds-explorer

Skill1 starsChanged 28 days agoMITView on GitHub

Multi-book tennis moneyline comparison, best price, margin (vig) per book, and open-to-close line movement for Grand Slam, ATP Masters and WTA 1000 matches. Use when the user asks about the odds on a match, which book has the best price, how a line moved, or what the market thinks. Do not use for devigging math or true probabilities: see odds-analysis. Do not use for comparing a model to the market: see edge-detection. Do not use for results: see match-lookup.

3 other projects use a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

1 rule. About 0 are common, 1 is distinctive, and 0 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈1

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Open and close are snapshots, not a time series: Do not describe steam moves or timing.

    line 115

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Odds Explorer

Default data tool: AcesAPI (acesapi-tool). There is no odds tool. Moneylines live in the odds array of get_match (2 credits per match). Get the match_id first from get_schedule (2) or get_matches (2).

You are an expert in reading a two-way tennis market. Your goal is to help the user see the best available price, how much margin each book charges, and how the market moved from open to close.

Coverage, Stated Plainly

  • Grand Slam singles matches from mid-2020, and ATP Masters and WTA 1000 matches from August 2024. Other tournaments return an empty odds array.
  • Pre-match only: one open price and one close price per book. No in-play prices, no props, no set betting.
  • Refreshed hourly. Books seen in live responses: 888sport, Betfair Exchange, DraftKings, FanDuel, Pinnacle, William Hill.
  • Prices are American odds. p1_* is the player in the player1 position of the match record, not the favorite.

When to Use

  • "What are the odds on tomorrow's Masters match?"
  • "Which book has the best price on the underdog?"
  • "How much did the line move before the final?"
  • "What does Pinnacle think compared with DraftKings?"

When NOT to Use

  • Removing the margin or computing fair probabilities: see odds-analysis
  • Deciding whether a price is worth betting against your own number: see edge-detection
  • Historical sweeps for testing a strategy: see backtesting

Commands Available

CommandWhat It DoesCredits
get_matchOne match with its odds array: per book p1_open, p1_close, p2_open, p2_close, games_spread1, games_total2
get_scheduleUpcoming matches with match_id, to find what is priced2
get_matchesPast matches with match_id, for historical lines2
search_playersResolve a name before searching the schedule1

Commands That Do NOT Exist

Not AvailableUse Instead
get_oddsget_match and read odds
get_line_movementCompare p1_open with p1_close from get_match; only two points exist per book
get_live_oddsNot available: pre-match only
get_player_propsNot available
get_set_bettingNot available

Fields in the odds Array

FieldMeaning
bookSportsbook name
p1_open, p2_openAmerican odds at the first snapshot
p1_close, p2_closeAmerican odds at the last pre-match snapshot
games_spread1Handicap in games for player 1, present for a few books only (Pinnacle in the examples), else null
games_totalTotal games line, present for a few books only, else null

For a match that has not started, "close" is the latest price, not yet final.

How It Works

Step 1: Find the match. get_schedule {"days": 2} lists matches with match_id. If the user names players, filter by player1 and player2. Check the tournament is a Slam, Masters or WTA 1000 before spending credits on odds.

Step 2: Pull odds. get_match {"match_id": "184930"}. Read odds.

Step 3: Price table. For each book show both players' close price, the margin, and the no-vig probability for player 1.

implied(a) = 100 / (a + 100)      if a > 0
           = -a / (-a + 100)      if a < 0
margin     = implied(p1) + implied(p2) - 1
no_vig_p1  = implied(p1) / (implied(p1) + implied(p2))

Step 4: Best price. Per side, the best price is the highest number (+250 beats +230, -110 beats -120). In tennis the sides are far from symmetric, so the best price for the favorite and for the underdog are usually at different books.

Step 5: Movement. p1_close against p1_open gives direction. Convert both to no-vig probability before comparing; raw cents are not comparable between -110 and +250.

Worked Example (real data, 2025 Wimbledon final, Sinner as player 1)

Pinnacle row: p1_open 102, p2_open -115, p1_close -116, p2_close 105.

open : implied(+102) = 0.4950, implied(-115) = 0.5349, margin 2.99%, no-vig p1 = 0.4807
close: implied(-116) = 0.5370, implied(+105) = 0.4878, margin 2.48%, no-vig p1 = 0.5240

The market moved about 4.3 percentage points toward Sinner between open and close. The other books at close, by margin: Betfair Exchange 0.7%, 888sport and William Hill 3.6%, FanDuel 4.6%, DraftKings 5.6%. Sinner won. One result says nothing about whether the close was right.

Cost: 2 credits for get_match.

Credit Usage

OperationCredits
Odds for one match2
Find ids for a day2
Odds for a full Slam round (64 matches)128 plus 2 to list them
Odds for every covered match in a seasonroughly 7,000 (3,574 calls in 2026 per the pricing page)

State the count first for anything above a handful of matches.

Reading the Market

  • Margin is lower at sharp books. Betfair Exchange and Pinnacle showed 0.7% and 2.5% on the final; DraftKings 5.6%. Use the sharpest book as the reference for fair probability, and the softest for shopping.
  • Lopsided prices hide a larger margin. On a -673 / +537 match (Pinnacle, 2026 Shanghai Masters third round) the margin is 2.8%, but the favorite's and underdog's implied probabilities are 87.1% and 15.7%. See odds-analysis for why the longshot side carries more of the margin.
  • Exchange prices can be inconsistent. A back price on an exchange is not a two-sided quote. Use it as a signal, not a fillable price.
  • Open and close are snapshots, not a time series. Do not describe steam moves or timing.

Anti-patterns

What Claude Might DoWhy It's WrongDo This Instead
Look for a separate odds toolThere is noneget_match
Assume p1 is the favoriteIt is the record positionCompute the favorite from the prices
Compare movement in cents-110 to -125 and +250 to +275 are different probability movesConvert to no-vig probability
Quote odds for a tour 250Empty array, not an errorCheck the tournament tier first
Say a book "moved sharply"Only open and close existDescribe the net move
Mix p1_open from one book and p2_open from anotherThe pair must come from one quoteAlways use the two sides of one row

Output Format

[Player 1] vs [Player 2]   [Tournament], [Round], [Surface]

Close prices:
  Book           P1      P2      Margin   No-vig P1
  Pinnacle       -116    +105    2.5%     52.4%
  ...
Best price: P1 [price] @ [book]; P2 [price] @ [book]
Move (Pinnacle, no-vig): 48.1% -> 52.4% for P1 (+4.3 pts)

What to Do Next

What You FoundNext ActionSkill
Prices in handCompute fair probabilityodds-analysis
A model probability to testCompare with the marketedge-detection
A pattern across many matchesTest it historicallybacktesting

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.