# PGA Golf (remote · mcp.pga.com)

PGA's official MCP Server for all things golf-related. Find a coach, play golf, improve your game.

- Trust score: 72/100 (medium)
- Change this week: +6
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `mcp.pga.com`: 72/100 (this document), [markdown](https://verifymcp.io/servers/com-pga-pga-golf/mcp.md), [page](https://verifymcp.io/servers/com-pga-pga-golf/mcp)

## Channel facts

- Endpoint: `https://mcp.pga.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 74/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 71/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 1607 tokens (~178/item across 9 items; 3 tools + 6 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 96/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 88% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.
  - Supports UI / widget rendering.

## Install

### Claude

```bash
claude mcp add --transport http com-pga-pga-golf https://mcp.pga.com/mcp
```

### Codex

```toml
[mcp_servers.com-pga-pga-golf]
url = "https://mcp.pga.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-pga-pga-golf": {
      "type": "remote",
      "url": "https://mcp.pga.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-pga-pga-golf --url https://mcp.pga.com/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  com-pga-pga-golf:
    url: "https://mcp.pga.com/mcp"
```

### Other

```json
{
  "mcpServers": {
    "com-pga-pga-golf": {
      "type": "http",
      "url": "https://mcp.pga.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 72, 0)

- [security] Resource “book_golf_lesson” now points somewhere else: ui://views/ext-apps/book_golf_lesson.html?v=5a520bc0 → ui://widgets/ext-apps/book_golf_lesson.html
- [security] Resource “search_golf_coaches” now points somewhere else: ui://views/ext-apps/search_golf_coaches.html?v=326b03fc → ui://widgets/ext-apps/search_golf_coaches.html
- [security] Resource “get_golf_coach_availability” now points somewhere else: ui://views/ext-apps/get_golf_coach_availability.html?v=b87da82c → ui://widgets/ext-apps/get_golf_coach_availability.html

### 2026-08-02 (score 72, +1)

- [security] Resource “book_golf_lesson” now points somewhere else: ui://views/ext-apps/book_golf_lesson.html?v=5a520bc0 → ui://widgets/ext-apps/book_golf_lesson.html
- [security] Resource “search_golf_coaches” now points somewhere else: ui://views/ext-apps/search_golf_coaches.html?v=326b03fc → ui://widgets/ext-apps/search_golf_coaches.html
- [security] Resource “get_golf_coach_availability” now points somewhere else: ui://views/ext-apps/get_golf_coach_availability.html?v=b87da82c → ui://widgets/ext-apps/get_golf_coach_availability.html

### 2026-08-01 (score 71, 0)

- [security] Resource “book_golf_lesson” now points somewhere else: ui://views/ext-apps/book_golf_lesson.html?v=5a520bc0 → ui://widgets/ext-apps/book_golf_lesson.html
- [security] Resource “search_golf_coaches” now points somewhere else: ui://views/ext-apps/search_golf_coaches.html?v=326b03fc → ui://widgets/ext-apps/search_golf_coaches.html
- [security] Resource “get_golf_coach_availability” now points somewhere else: ui://views/ext-apps/get_golf_coach_availability.html?v=b87da82c → ui://widgets/ext-apps/get_golf_coach_availability.html

### 2026-07-31 (score 71, +3)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 68, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 68, +2)

- [security] Resource “search_golf_coaches” now points somewhere else: ui://views/ext-apps/search_golf_coaches.html?v=bbd72409 → ui://widgets/ext-apps/search_golf_coaches.html
- [security] Resource “get_golf_coach_availability” now points somewhere else: ui://views/ext-apps/get_golf_coach_availability.html?v=345e0fe8 → ui://widgets/ext-apps/get_golf_coach_availability.html
- [security] Resource “book_golf_lesson” now points somewhere else: ui://views/ext-apps/book_golf_lesson.html?v=4b358595 → ui://widgets/ext-apps/book_golf_lesson.html
- [security] The server rewrote its instructions, which are the text every model session reads
- [functional regression] Schema quality: 151 → 178
- [functional] Schema quality: fair → good

### 2026-07-28 (score 66, 0)

- [security] Resource “get_golf_coach_availability” now points somewhere else: ui://views/ext-apps/get_golf_coach_availability.html?v=345e0fe8 → ui://widgets/ext-apps/get_golf_coach_availability.html
- [security] Resource “search_golf_coaches” now points somewhere else: ui://views/ext-apps/search_golf_coaches.html?v=bbd72409 → ui://widgets/ext-apps/search_golf_coaches.html
- [security] Resource “book_golf_lesson” now points somewhere else: ui://views/ext-apps/book_golf_lesson.html?v=4b358595 → ui://widgets/ext-apps/book_golf_lesson.html

### 2026-07-27 (score 66, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

## MCP tools (3)

### `search_golf_coaches` (~259 tokens)

Search Golf Coaches

Search for qualified PGA golf coaches listed on pga.com/coach in the specified location (required).
Use this tool when the user asks to find, browse, or compare coaches in a location.
If the user asks for availability for a specific coach, use `get_golf_coach_availability` instead.
Internal record identifiers (for example coach `slug` and offering `id`) are for tool calls only and must never be shown or mentioned to the user.
\- Search results include the coach's profile information, offerings, and pricing.
\- Results are ordered by proximity to the search location, so list them to the user in this order.
\- Results are paginated, so use the pagination cursor provided at the end of the response to retrieve the next page of results.

Input parameters:

- `paginationCursor` (string): Pagination cursor from a prior `search_golf_coaches` response. Use only when fetching additional pages of the same search.
- `searchLocation` (string, required): Required location used to find nearby coaches. Accepts city/state, ZIP code, full address, or latitude/longitude coordinates.
- `searchRadius` (number): Search radius in miles from `searchLocation`. Use 25 by default unless the user requests a different radius.

Output parameters:

- `coaches` (array)
- `count` (number)
- `endCursor`
- `hasNextPage` (boolean)

### `get_golf_coach_availability` (~165 tokens)

Get Golf Coach Availability

Retrieve offering details and available lesson times for one specific coach.
Use this when the user asks for schedule, openings, or available times for a known coach.
If the user has not selected a coach yet, call `search_golf_coaches` first.
Coach `slug` and offering `id` values are internal identifiers and must never be shown or mentioned to the user.

Input parameters:

- `offeringId` (string): Optional offering ID to scope availability to a single offering. Use this when the user has already selected an offering.
- `slug` (string, required): Coach slug from a pga.com profile URL or prior `search_golf_coaches` results (e.g., `anthonyvitale`). Internal-only value; never display or mention it to the user.

Output parameters:

- `coach` (object)

### `book_golf_lesson` (~145 tokens)

Book Golf Lesson

Request to book a golf lesson for a specific coach's offering.
\- `offeringId` is an internal identifier; never show or mention it to the user.
\- A continuation URL will be returned that you can direct the user to after calling this tool.
\- If the offering was booked automatically (e.g., free lesson or no prepayment required), the confirmation code will also be included.

Input parameters:

- `offeringId` (string, required): Internal offering record ID to book a lesson for. Never display or mention this identifier to the user.
- `startDateTime` (string, required): The start date and time of the lesson in ISO 8601 format.
- `student` (required)

Output parameters:

- `continuationUrl` (string): The URL to continue the booking flow after calling this tool.
- `lesson` (object): Confirmation details for the booked lesson (if booked successfully).
- `message` (string): A message describing the outcome of the booking.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/com-pga-pga-golf/mcp#diagnostics

## Score history

- 2026-08-03: 72
- 2026-08-02: 72
- 2026-08-01: 71
- 2026-07-31: 71
- 2026-07-30: 68
- 2026-07-29: 68
- 2026-07-28: 66
- 2026-07-27: 66
- 2026-07-26: 65

## Links

- Remote endpoint: https://mcp.pga.com/mcp
- Website: https://mcp.pga.com/
- Changelog RSS feed: https://verifymcp.io/servers/com-pga-pga-golf/mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-pga-pga-golf/mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/com-pga-pga-golf/mcp
