{"name":"io.github.opengolfapi/mcp-server","slug":"opengolfapi-mcp-server","title":null,"description":"Golf for AI agents — every US course free, plus open contribution, identity & tournaments.","url":"https://mcp.market/server/opengolfapi-mcp-server","rating":null,"grade":"B","score":77,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":28,"stars":4,"forks":0,"downloads_week":42,"last_push_at":"2026-08-18T18:57:02.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/opengolfapi/mcp-server","website":"https://opengolfapi.org/connect","version":"3.5.1","remotes":[],"packages":[{"registryType":"npm","identifier":"@opengolfapi/mcp-server","version":"3.5.1","transport":{"type":"stdio"},"environmentVariables":[{"description":"Free key (courses.opengolfapi.org/api-keys). Optional — only for contributing/identity.","format":"string","isSecret":true,"name":"OPENGOLFAPI_KEY"}]}],"tools":[{"name":"about","description":"What OpenGolfAPI is and how to use this MCP server.","write_action":false,"price_micros":0,"input_schema":null},{"name":"broadcast_feed","description":"OpenBroadcast P1 — ONE typed feed for a session: broadcast-worthy items (score/side_game/money/award/condition) in ascending (recorded_at, seq) order, each with template narration (headline<=60/ticker<=80). Money appears only via settled records. Replaces stitching moments+results+live_state. Requires key + session access (participant or compute).","write_action":false,"price_micros":0,"input_schema":null},{"name":"complete_sign_in","description":"Finish sign-in: exchange the 6-digit code for their OpenGolf ID + access token (use as X-OpenGolf-Token to act as them). Pass ref=<inviter player_id> when another player's invite brought them — it credits the referral.","write_action":false,"price_micros":0,"input_schema":null},{"name":"create_competition","description":"Create a Competition (any OpenMatch format). Requires key.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_dev_key","description":"Mint a developer API key bound to an OpenGolf ID (sign in first via request_sign_in_code → complete_sign_in). Returns the key ONCE. First-party rail: no OpenGolf ID, no key.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_tournament_invite","description":"Create a shareable invite (QR/link); everyone who redeems it joins the SAME event/session. max_uses caps size (foursome=4). Requires key.","write_action":true,"price_micros":0,"input_schema":null},{"name":"file_claim","description":"File a Claim in the trust ledger (ownership/attestation/identity/record/correction). Requires key.","write_action":false,"price_micros":0,"input_schema":null},{"name":"finalize_competition","description":"Finalize — run the kernel, store the gross Result. Requires key.","write_action":false,"price_micros":0,"input_schema":null},{"name":"find_beacons","description":"Discover ACTIVE public beacons (find-my-group / matchmaking). Requires key.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_awards","description":"A player's OpenAwards — derived trophies + course passport. Requires key.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_beta","description":"Read local course knowledge for a course/hole (free).","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_climate","description":"Monthly climate normals + best months to play for a course. Free.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_competition","description":"A Competition + live gross standings (free).","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_conditions","description":"LIVE weather at a course (temp/wind/precip, forecast-model, 15-min cache). FREE. Feeds plays_like.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_correction","description":"Check the status/verdict of a correction you proposed (approved | rejected | needs_info | applied). Requires a key.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_course","description":"Full detail for one course by id: scorecard (par + handicap per hole), tees, location, contact, nearby. Free.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_handicap","description":"OpenIndex (beta) — a player's estimated handicap computed from real, notarized rounds (every score stamped when it happened; verifiable by anyone). Not official — provable. Reading your OWN is free with your key; player_id must be the ogid_… form.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_my_chain","description":"Export YOUR tamper-evident OpenGolf Chain + checkpoints. Requires key (own-read free).","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_my_moments","description":"Read back your own contributed moments (breadcrumbs, swings, putts, conditions…) by player, session, or type. Requires a key.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_my_shots","description":"Read back your own contributed shots by player or session. Requires a key.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_nearby","description":"Nearby hotels, restaurants, and other courses for a course. Free.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_passport","description":"FREE (public, no key). Any golfer's shareable record — display name, OpenGolf Member #, courses played, rounds, trophies, referrals. Show a player's golf resume in your app.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_profile","description":"A player's public OpenGolf ID card — name, avatar, links, prefs. Free.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_referrals","description":"How many golfers a user has referred (+ the list) — the viral-loop metric for your app. Needs a key.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_showcase","description":"A player's public showcase — the collectibles/records on their OpenGolf ID (og.* namespaces + course.*). Free, keyless: pass their ogid_. Tombstoned (revoked/expired) records hidden. The provable trophy wall.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_tees","description":"All tee sets for a course with ratings, slopes, and yardages. Free.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_weather","description":"Live weather forecast for a course location (Weather.gov). Free.","write_action":false,"price_micros":0,"input_schema":null},{"name":"how_to_build","description":"The safe playbook for building on OpenGolfAPI and contributing data the right way. Call this once before contributing.","write_action":false,"price_micros":0,"input_schema":null},{"name":"join_tournament","description":"Redeem an invite token — the player joins the group/event. Requires key.","write_action":false,"price_micros":0,"input_schema":null},{"name":"link_dev_key","description":"Confirm your OpenGolf ID on an EXISTING key. Sign in first; pass that access_token + the key.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_claims","description":"List Claims (free). Filter claimant/subject/status.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_competitions","description":"List Competitions (free). Filter org/course/status.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_dev_keys","description":"List the keys owned by your OpenGolf ID (prefixes only). Needs access_token from complete_sign_in.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_game_formats","description":"Every OpenMatch scoring format. GROSS scoring is free & keyless.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_orgs","description":"Public directory of verified orgs (free).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_webhooks","description":"List your active webhook subscriptions. Requires key.","write_action":false,"price_micros":0,"input_schema":null},{"name":"log_shot","description":"Contribute a golf shot to the open OpenShot standard (any launch monitor). Requires a key. Units: speed mph, angles deg, spin rpm, distance yds.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mint_asset","description":"Mint an Asset (trophy/badge/stamp/coupon/membership) into the owner's trophy case + chain. Requires key.","write_action":false,"price_micros":0,"input_schema":null},{"name":"plays_like","description":"Effective distance — THE canonical \"plays like\" number (wind/elevation/temp/altitude), factors itemized. FREE, no key. Pair with get_conditions for live wind.","write_action":false,"price_micros":0,"input_schema":null},{"name":"post_beta","description":"Drop local course knowledge (\"beta\") on a hole — the AI-caddie's fuel. Requires key.","write_action":true,"price_micros":0,"input_schema":null},{"name":"propose_correction","description":"Propose a fix to a course FACT field (phone, website, address, architect, year_built, course_name, city, postal_code, course_type). Our AI reviews it (approve/reject/needs_info). Requires a key. Geometry is not correctable here.","write_action":false,"price_micros":0,"input_schema":null},{"name":"record_attempt","description":"Record an Attempt (score or side-game value). Idempotent. Requires key.","write_action":false,"price_micros":0,"input_schema":null},{"name":"record_consent","description":"Record a player's consent grant (auditable, revocable). Requires key.","write_action":false,"price_micros":0,"input_schema":null},{"name":"record_referral","description":"Record that one user referred another (a REFERRED_BY edge) — build YOUR app's invite loop on the shared graph, namespaced to your app. Needs a key.","write_action":false,"price_micros":0,"input_schema":null},{"name":"register_webhook","description":"Register an https URL for your domain events (HMAC-signed deliveries, owner-scoped). Requires your key (Authorization: Bearer ogapi_…).","write_action":false,"price_micros":0,"input_schema":null},{"name":"remove_webhook","description":"Deactivate one of your webhook subscriptions by id (audit row kept). Requires key.","write_action":true,"price_micros":0,"input_schema":null},{"name":"request_sign_in_code","description":"Start \"Sign in with OpenGolf\" for a person: emails them a 6-digit code. No API key needed. They read you the code, then call complete_sign_in.","write_action":false,"price_micros":0,"input_schema":null},{"name":"respond_to_review","description":"Respond to a correction that came back as needs_info — add a source or explanation and re-open it for review. Requires a key.","write_action":false,"price_micros":0,"input_schema":null},{"name":"score_round","description":"Score a round in any format — GROSS, FREE, no key. players:[{player_id,holes:{\"1\":4}}] or entries:[{player_id,hole,value}]; holes:[{hole,par,stroke_index?}].","write_action":false,"price_micros":0,"input_schema":null},{"name":"search_courses","description":"Search US golf courses by name, US state, or location (lat/lng + radius). Returns matching courses with location, type, par. Free, ODbL data.","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_beacon","description":"Broadcast a consented, EXPIRING presence/availability beacon (present|available|open). Requires key.","write_action":false,"price_micros":0,"input_schema":null},{"name":"sign_in_with_opengolf","description":"Derive a user's OpenGolf ID deterministically from their email (sub = ogid_ + sha256(lower(trim(email)))[:16]) — one line, no redirect. For a VERIFIED session token use request_sign_in_code → complete_sign_in.","write_action":false,"price_micros":0,"input_schema":null},{"name":"submit_moment","description":"Contribute an Open Connect event from any sensor/wearable/phone. The whole sensor spectrum rides through here — type-specific data goes in `payload`. Requires a key.","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_profile","description":"Edit a player's self-asserted profile fields (derived facts can't be set). Requires key (claimed players need their grant).","write_action":true,"price_micros":0,"input_schema":null},{"name":"verify_chain","description":"Verify a Chain export OR walk the public transparency log (GET /chain/log?subject=), public + keyless — recompute the hash-links, verify each RS256 checkpoint signature against the JWKS, and resolve the Bitcoin anchors; reports tampering and where. The whole history (registry, per-course, master) is independently auditable — trust no one.","write_action":false,"price_micros":0,"input_schema":null},{"name":"verify_record","description":"Verify a record/collectible against the OpenGolf Chain (a signed, hash-linked, Bitcoin-anchored transparency log). Returns the hash + whether it matches + the CLIENT-RECOMPUTE recipe (sha256 of the canonical record) + the anchor. Then you can go further, all keyless: pull a merkle inclusion proof (GET /chain/anchors/:id/inclusion?hash=), verify the checkpoint's RS256 signature against /.well-known","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":77,"grade":"B","scanned_at":"2026-09-26T05:12:47.889Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-26T05:12:47.935Z","components":{"code":{"score":25,"max":25,"notes":["6 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":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":12,"max":15,"notes":["last push 38 days ago"]},"identity":{"score":7,"max":10,"notes":["registry namespace matches repository owner"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"@opengolfapi/mcp-server","version":"3.5.1","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":3,"publishedAt":"2026-07-11T17:50:19.225Z","repositoryUrl":"git+https://github.com/opengolfapi/mcp-server.git","weeklyDownloads":42}],"repo":{"found":true,"owner":"opengolfapi","repo":"mcp-server","archived":false,"pushedAt":"2026-08-18T18:57:02Z","stars":4,"forks":0,"openIssues":0,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/276321877?v=4","ownerCreatedAt":"2026-04-15T14:21:31Z","license":"MIT"},"icon":{"url":"https://opengolfapi.org/icon.png","source":"site","width":512,"height":512},"presence":{"stars":4,"forks":0,"downloadsWeek":42,"license":"MIT","lastPushAt":"2026-08-18T18:57:02.000Z","score":28}}}},"grade_history":[],"reviews":[]}