Official MCP server for OpenGolfAPI — 49 tools: golf course data, scoring, competitions, identity. Free tier, no key needed.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
tools
-
about
What OpenGolfAPI is and how to use this MCP server.
-
broadcast_feed
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
-
complete_sign_in
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 cre
-
create_competition
Create a Competition (any OpenMatch format). Requires key.
-
create_dev_key
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.
-
create_tournament_invite
Create a shareable invite (QR/link); everyone who redeems it joins the SAME event/session. max_uses caps size (foursome=4). Requires key.
-
file_claim
File a Claim in the trust ledger (ownership/attestation/identity/record/correction). Requires key.
-
finalize_competition
Finalize — run the kernel, store the gross Result. Requires key.
-
find_beacons
Discover ACTIVE public beacons (find-my-group / matchmaking). Requires key.
-
get_awards
A player's OpenAwards — derived trophies + course passport. Requires key.
-
get_beta
Read local course knowledge for a course/hole (free).
-
get_climate
Monthly climate normals + best months to play for a course. Free.
-
get_competition
A Competition + live gross standings (free).
-
get_conditions
LIVE weather at a course (temp/wind/precip, forecast-model, 15-min cache). FREE. Feeds plays_like.
-
get_correction
Check the status/verdict of a correction you proposed (approved
-
get_course
Full detail for one course by id: scorecard (par + handicap per hole), tees, location, contact, nearby. Free.
-
get_handicap
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 wi
-
get_my_chain
Export YOUR tamper-evident OpenGolf Chain + checkpoints. Requires key (own-read free).
-
get_my_moments
Read back your own contributed moments (breadcrumbs, swings, putts, conditions…) by player, session, or type. Requires a key.
-
get_my_shots
Read back your own contributed shots by player or session. Requires a key.
-
get_nearby
Nearby hotels, restaurants, and other courses for a course. Free.
-
get_passport
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.
-
get_profile
A player's public OpenGolf ID card — name, avatar, links, prefs. Free.
-
get_referrals
How many golfers a user has referred (+ the list) — the viral-loop metric for your app. Needs a key.
-
get_showcase
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 trop
-
get_tees
All tee sets for a course with ratings, slopes, and yardages. Free.
-
get_weather
Live weather forecast for a course location (Weather.gov). Free.
-
how_to_build
The safe playbook for building on OpenGolfAPI and contributing data the right way. Call this once before contributing.
-
join_tournament
Redeem an invite token — the player joins the group/event. Requires key.
-
link_dev_key
Confirm your OpenGolf ID on an EXISTING key. Sign in first; pass that access_token + the key.
-
list_claims
List Claims (free). Filter claimant/subject/status.
-
list_competitions
List Competitions (free). Filter org/course/status.
-
list_dev_keys
List the keys owned by your OpenGolf ID (prefixes only). Needs access_token from complete_sign_in.
-
list_game_formats
Every OpenMatch scoring format. GROSS scoring is free & keyless.
-
list_orgs
Public directory of verified orgs (free).
-
list_webhooks
List your active webhook subscriptions. Requires key.
-
log_shot
Contribute a golf shot to the open OpenShot standard (any launch monitor). Requires a key. Units: speed mph, angles deg, spin rpm, distance yds.
-
mint_asset
Mint an Asset (trophy/badge/stamp/coupon/membership) into the owner's trophy case + chain. Requires key.
-
plays_like
Effective distance — THE canonical "plays like" number (wind/elevation/temp/altitude), factors itemized. FREE, no key. Pair with get_conditions for live wind.
-
post_beta
Drop local course knowledge ("beta") on a hole — the AI-caddie's fuel. Requires key.
-
propose_correction
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. Geome
-
record_attempt
Record an Attempt (score or side-game value). Idempotent. Requires key.
-
record_consent
Record a player's consent grant (auditable, revocable). Requires key.
-
record_referral
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.
-
register_webhook
Register an https URL for your domain events (HMAC-signed deliveries, owner-scoped). Requires your key (Authorization: Bearer ogapi_…).
-
remove_webhook
Deactivate one of your webhook subscriptions by id (audit row kept). Requires key.
-
request_sign_in_code
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.
-
respond_to_review
Respond to a correction that came back as needs_info — add a source or explanation and re-open it for review. Requires a key.
-
score_round
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?}].
-
search_courses
Search US golf courses by name, US state, or location (lat/lng + radius). Returns matching courses with location, type, par. Free, ODbL data.
-
set_beacon
Broadcast a consented, EXPIRING presence/availability beacon (present
-
sign_in_with_opengolf
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
-
submit_moment
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.
-
update_profile
Edit a player's self-asserted profile fields (derived facts can't be set). Requires key (claimed players need their grant).
-
verify_chain
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 t
-
verify_record
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 ca
analyzed commit 328eb7c · analyzer v33 · 2w ago
skills & prompt files 1
- agent-rules opengolfapi-mcp-server-328eb7c/AGENTS.md
code files: 6
filesystem 1
- fs opengolfapi-mcp-server-328eb7c/gen-manifest.mjs :7
import { readFileSync, writeFileSync } from 'node:fs';
shell / exec 1
- shell (weak) opengolfapi-mcp-server-328eb7c/tests/smoke.test.ts :2
import { spawn } from 'node:child_process';
network 2
- net opengolfapi-mcp-server-328eb7c/src/index.ts :27
return fetch(input, { ...init, headers }); - net opengolfapi-mcp-server-328eb7c/src/registry.ts :290
const r = await fetch(API_BASE + '/api/v1/developer/keys', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-OpenGolf-Token': String(a.opengolf_token) }, body: JSON.stringify({ email
secrets 1
- secrets opengolfapi-mcp-server-328eb7c/src/index.ts :20
const OPENGOLFAPI_KEY = process.env.OPENGOLFAPI_KEY;
install hooks 1
- prepublishOnly opengolfapi-mcp-server-328eb7c/package.json :18
node sync-version.mjs && npm run build && node gen-manifest.mjs
declared dependencies 6
- @modelcontextprotocol/sdk@^1.0.0
- @sentry/node@^10.51.0
- zod@^3.22.0
- @types/node@^20.0.0
- typescript@^5.0.0
- vitest@^4.1.5