{"id":74749,"plugin_id":"plugin_asdk_app_6ad1467bd8f88191bead2eb0a9b87e49","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-10-31T15:03:55.173Z","digest":"67f545ab023abb45936b75e0f3bd08b96ecd0b0ab16d305aa9a8b5f1658a6e44","against":null,"payload":{"description":"Routes tennis analytics requests to the right 2 or 3 skills. Load this FIRST when an ATP or WTA data or analytics request comes in and you are unsure which skills to activate. Prevents loading all 16 skills when only a few are needed. Also sets expectations on what the data cannot answer (serve statistics, in-play, props).","included_files":[],"name":"dispatch","skill_md_contents":"---\nname: dispatch\ndescription: \"Routes tennis analytics requests to the right 2 or 3 skills. Load this FIRST when an ATP or WTA data or analytics request comes in and you are unsure which skills to activate. Prevents loading all 16 skills when only a few are needed. Also sets expectations on what the data cannot answer (serve statistics, in-play, props).\"\nmetadata:\n  version: 1.0.0\n  author: AcesAPI\n---\n\n# Skill Dispatch Guide\n\nMatch the request to a pattern below. Load those skills only.\n\n**Default data tool:** `acesapi-tool`. It covers 13 tools for ATP and WTA singles. Load it alongside the strategy skill unless the request needs no data (user-supplied numbers).\n\n**Tour check first.** ATP is the default. For WTA questions, every call needs `\"league\": \"wta\"`. Ask which tour only if the player or event is ambiguous.\n\n## First-Use Persona Detection\n\n| Signal | Persona | Start With |\n|--------|---------|-----------|\n| \"What matches are on today?\" / exploring | **Explorer** | `match-lookup` + `acesapi-tool` |\n| \"Tell me about this player\" | **Scout** | `player-scouting` + `ranking-history` |\n| \"Who wins tomorrow?\" | **Previewer** | `match-preview` + `surface-elo` |\n| \"I want to build a prediction model\" | **Builder** | `feature-engineering` + `surface-elo` |\n| \"Is my model any good?\" | **Validator** | `walk-forward-validation` + `probability-calibration` |\n| \"I am new to odds\" | **Odds reader** | `odds-analysis` + `odds-explorer` |\n\n## Request Patterns -> Skills to Load\n\n### \"Who plays today?\" / \"Who won?\" / \"Show me the draw\" / \"Every final this season\"\n1. `match-lookup`: results, schedules, draws\n2. `acesapi-tool`: `get_matches`, `get_schedule`, `get_tournament`, `list_tournaments`\n\n### \"Tell me about [player]\" / \"How is she doing?\" / \"Compare these two players\"\n1. `player-scouting`: profile, surface fit, opposition quality, form\n2. `acesapi-tool`: `search_players`, `get_player`, `get_surface_splits`, `get_player_stats`\n3. Two players with a direct record: also `head-to-head-analysis`\n\n### \"[A] vs [B] head to head\" / \"Who leads the rivalry?\" / \"How do they split on clay?\"\n1. `head-to-head-analysis`: record, surface split, finals, weighting\n2. `surface-elo` if a probability is wanted\n\n### \"Who is number one?\" / \"Ranking on a date\" / \"How did the ranking change?\"\n1. `ranking-history`: lists, trajectories, points versus rank\n2. `surface-elo` if the question is really about strength\n\n### \"Who is best on clay?\" / \"Win probability for A vs B\" / \"How does the rating work?\"\n1. `surface-elo`: ratings, probability formula, blending\n2. `head-to-head-analysis` for context if a rivalry exists\n\n### \"Preview the match\" / \"Who is favored tomorrow and why?\"\n1. `match-preview`: assembles ratings, form, record, route, price\n2. `surface-elo` for the probability\n3. `odds-explorer` if the event is a Slam, Masters or WTA 1000\n\n### \"What are the odds?\" / \"Best price\" / \"How did the line move?\"\n1. `odds-explorer`: prices, margins, open to close\n2. `odds-analysis` for devigging\n3. Remember: odds exist only for Grand Slams (mid-2020 on) and Masters and WTA 1000 (August 2024 on)\n\n### \"What probability does +450 imply?\" / \"Remove the vig\" / \"Shin vs power\"\n1. `odds-analysis`: no data needed unless prices must be fetched\n\n### \"How many games will the match go?\" / \"Straight sets chance\" / \"Tiebreak frequency\"\n1. `set-score-modeling`: set distributions, totals, tiebreaks\n2. `surface-elo` for the match probability that feeds it\n3. State that serve data does not exist\n\n### \"Build features\" / \"What should I feed the model?\" / \"Is there leakage?\"\n1. `feature-engineering`: pre-match ratings, form, rest, symmetric layout\n2. `walk-forward-validation` when evaluation comes next\n\n### \"Cross-validation okay?\" / \"Compare two models\" / \"How many matches do I need?\"\n1. `walk-forward-validation`: time-ordered evaluation and significance\n2. `probability-calibration` for reliability\n\n### \"Are my probabilities calibrated?\" / \"Overconfident on favorites\"\n1. `probability-calibration`: reliability tables, Platt, isotonic\n2. `walk-forward-validation` for the split\n\n## Things the Data Cannot Answer\n\nSay so immediately and offer the closest proxy.\n\n| Request | Reality | Offer |\n|---------|---------|-------|\n| Aces, double faults, first-serve percentage, break points | No serve statistics exist | Games-won share, tiebreak record, total games per match (`player-scouting`, `set-score-modeling`) |\n| Live or in-play prices | Pre-match open and close only | Open to close movement (`odds-explorer`) |\n| Player props (aces, games won, sets) | No props data | Not supported: do not build a prop model |\n| Injury or fitness reports | None | Rest days and recent load from scores (`feature-engineering`) |\n| Prices for tour 250 and 500 events | Not covered | Ratings-only analysis |\n| Rankings outside the top 100 to 150 | Not in the lists | Ratings via `get_ratings` for active players with 10 or more rated matches |\n| Doubles | Singles only | State the limit |\n\n## Multi-Skill Workflows\n\n\n\n**Research workflow:** `ranking-history` and `surface-elo` to find an anomaly (a rank far from rating) -> `player-scouting` to explain it -> `head-to-head-analysis` for the direct record.\n\n## Credit Awareness\n\nBefore any request that loops over many matches or players, state the number of calls and the credits (see `acesapi-tool`). Cheap by default: one preview is about 20 credits; a day of results is 2; odds for a Slam round of 64 matches is 128. A typical monthly allowance is 500 credits.\n\n## Rules for Every Answer\n\n- Cite the tool results used, and name the tour.\n- Use pre-match ratings only (`rating.before`), never `rating.after`.\n- Probabilities and edges are estimates. Mention variance and sample size, and prefer closing-line value over short-run results.\n- If a user asks for a lock, a guarantee or a pick to bet the house on, decline that framing and give the analysis.\n\n## Anti-patterns\n\n| What the Model Might Do | Why It's Wrong | Do This Instead |\n|---------------------|---------------|-----------------|\n| Load all 16 skills | Wastes context | 2 or 3 per request |\n| Reach for a nonexistent odds tool | Odds are inside `get_match` | `odds-explorer` |\n| Start odds analysis without checking coverage | Tour 250 events have no prices | Check the tournament tier |\n| Skip the tour | WTA ids and ATP ids differ | Pass `league` |\n| Answer serve questions | No data | Offer proxies |\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}