github TypeScript analyzed 328eb7c

opengolfapi/mcp-server

github

Official MCP server for OpenGolfAPI — 49 tools: golf course data, scoring, competitions, identity. Free tier, no key needed.

maintainer
opengolfapi
license
MIT
first seen
2026-07-05
last seen
2026-08-19
releases · 30d
0
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 56 tools
transport stdio · http verified reported listed in the official MCP registry counts 56 tools · 0 res · 0 prompts permission surface via README inference

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

skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit 328eb7c · analyzer v33 · 2w ago

skills & prompt files 1

code evidence vHEAD · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

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