{"name":"io.github.mbrionesalvarez/caddie-mcp","slug":"mbrionesalvarez-caddie-mcp","title":null,"description":"Your Garmin golf data in Claude: GPS shots, strokes gained, club distances, health context","url":"https://mcp.market/server/mbrionesalvarez-caddie-mcp","rating":null,"grade":"A","score":88,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":19,"stars":0,"forks":0,"downloads_week":17,"last_push_at":"2026-08-11T17:13:25.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"pypi","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/mbrionesalvarez/caddie-mcp","website":"https://github.com/mbrionesalvarez/caddie-mcp","version":"1.0.1","remotes":[],"packages":[{"registryType":"pypi","identifier":"caddie-mcp","version":"1.0.1","runtimeHint":"uvx","transport":{"type":"stdio"}}],"tools":[{"name":"correlate_health_performance","description":"Does recovery (or weather) affect your golf? Joins each round to its health/conditions data and computes a Pearson correlation. Daily metrics (sleep_score, hrv, readiness...) come from the night/day around the round; round-window metrics (bb_at_tee, avg_hr_during_round, avg_stress_during_ round, temp_c, wind_speed_mph) are measured DURING the round itself. Returns the paired table, r, and an hones","write_action":false,"price_micros":0,"input_schema":null},{"name":"garmin_status","description":"Check connector health: Garmin auth state, last sync, cached data coverage (rounds, shots, GPS %, club %). Call this first in a session.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_club_stats","description":"Per-club performance over the last N rounds: measured avg/min/max/ stddev carry distance (excludes putts and penalties), sample size, usage share, lateral miss bias from Garmin's dx offsets, plus Garmin's own average and 'advice' distances for comparison.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_course_intel","description":"Personal course intelligence for one course (name substring match): per-hole scoring average vs par, hardest and easiest holes, most common tee club per hole, and round history there. Use for strategy questions like 'how should I play X next time?'.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_handicap","description":"WHS-style Handicap Index: best-N-of-20 differentials, which rounds count, and the index trend over time. Needs rounds with tee rating and slope (Garmin records these when a tee box is selected on the watch).","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_health_context","description":"Health context for a round or date (YYYY-MM-DD): sleep score and duration the night before, HRV status, Body Battery range, training readiness, average stress, resting HR, steps. With round_id, also returns the round summary so performance and recovery sit side by side. NULL fields mean the watch/feature didn't record — say so, don't guess.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_performance_stats","description":"PGA-style performance stats over the last N rounds: driving distance/ accuracy + miss direction, GIR and proximity by distance bucket, scrambling and sand saves, putting (make % by feet, 3-putt avoidance), scoring (par 3/4/5 averages, bounce-back, distribution). Optionally pass benchmark_handicap to compare every metric against that handicap level.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_round","description":"Get one round in depth: header, hole-by-hole scorecard, and optionally every shot. round_id comes from list_rounds. Prefer get_shots (with filters or geojson) when the goal is shot analysis or mapping.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_shots","description":"Get shot-level data (GPS, club, lie, distance, miss offsets dx/dy). Filter by round_id, holes, club name substring, or shot_type (drive|approach|chip|putt|penalty). format=\"geojson\" returns a FeatureCollection (shot LineStrings + pin Points) ready for Mapbox or Leaflet — ideal for shot maps and dashboards.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_strokes_gained","description":"Strokes Gained (Broadie method) per round: total plus off-tee / approach / short-game / putting. baseline: \"auto\" grades each round against the player's own handicap level; or force one of scratch, 5hcp, 10hcp, 15hcp, 20hcp, bogey (scratch = the number seen on TV). estimated_share > 0 means some shots lacked GPS and used inferred lies/distances — hedge conclusions accordingly.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_rounds","description":"List golf rounds, newest first, as compact summaries (date, course, score, putts, fairways, GIR, ratings). Dates are YYYY-MM-DD; course is a case-insensitive substring match. Use get_round for hole-by-hole detail.","write_action":false,"price_micros":0,"input_schema":null},{"name":"query_golf_data","description":"Run a read-only SQL SELECT over the golf database (DuckDB dialect). Tables: rounds, holes, shots, clubs, daily_health. Read the schema://data-dictionary resource for columns, units, and enums. Single statement, SELECT/WITH only, capped at 200 rows — aggregate server-side instead of selecting raw rows when possible.","write_action":true,"price_micros":0,"input_schema":null},{"name":"sync_garmin_data","description":"","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":88,"grade":"A","scanned_at":"2026-11-04T06:34:45.978Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-11-04T06:34:45.884Z","components":{"code":{"score":25,"max":25,"notes":["25 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":12,"max":15,"notes":["last push 85 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"pypi","identifier":"caddie-mcp","version":"1.0.1","found":true,"weeklyDownloads":17,"license":"MIT","dependencyCount":5,"publishedAt":"2026-08-11T17:12:37.440387Z"}],"repo":{"found":true,"owner":"mbrionesalvarez","repo":"caddie-mcp","archived":false,"pushedAt":"2026-08-11T17:13:25Z","stars":0,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/62852342?v=4","ownerCreatedAt":"2020-03-29T18:51:30Z","license":"MIT"},"icon":{"url":null,"source":"none"},"presence":{"stars":0,"forks":0,"downloadsWeek":17,"license":"MIT","lastPushAt":"2026-08-11T17:13:25.000Z","score":19}}}},"grade_history":[],"reviews":[]}