MCP 서버

PGA Golf

com.pga/pga-golf
기타 공개 · 연결 가능 MCP 2025-11-25

이 MCP로 할 수 있는 일

Searches PGA golf coaches and group programs, retrieves lesson availability, and initiates lesson bookings.

book_golf_lesson
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.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['offeringId', 'startDateTime', 'student'], 'properties': {'student': {'anyOf': [{'type': 'object', 'required': ['type', 'firstName', 'lastName', 'email'], 'properties': {'type': {'type': 'string', 'const': 'adult'}, 'email': {'type': 'string', 'description': 'The email address of the student booking the lesson.'}, 'phone': {'type': 'string', 'description': 'The phone number of the student booking the lesson.'}, 'lastName': {'type': 'string', 'description': 'The last name of the student booking the lesson.'}, 'firstName': {'type': 'string', 'description': 'The first name of the student booking the lesson.'}}}, {'type': 'object', 'required': ['type', 'firstName', 'lastName', 'guardianFirstName', 'guardianLastName', 'email'], 'properties': {'type': {'type': 'string', 'const': 'junior'}, 'email': {'type': 'string', 'description': 'The email address of the student booking the lesson.'}, 'phone': {'type': 'string', 'description': 'The phone number of the student booking the lesson.'}, 'lastName': {'type': 'string', 'description': 'The last name of the student booking the lesson.'}, 'firstName': {'type': 'string', 'description': 'The first name of the student booking the lesson.'}, 'guardianLastName': {'type': 'string', 'description': 'The last name of the guardian booking the lesson.'}, 'guardianFirstName': {'type': 'string', 'description': 'The first name of the guardian booking the lesson.'}}, 'description': "The contact information for the student participating in the lesson. Student type can be either 'adult' or 'junior'. If the student is a junior, the guardian's information is also required."}]}, 'offeringId': {'type': 'string', 'description': 'Internal offering record ID to book a lesson for. Never display or mention this identifier to the user.'}, 'startDateTime': {'type': 'string', 'description': 'The start date and time of the lesson in ISO 8601 format.'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['message'], 'properties': {'lesson': {'type': 'object', 'required': ['confirmationCode'], 'properties': {'confirmationCode': {'type': 'string'}}, 'description': 'Confirmation details for the booked lesson (if booked successfully).', 'additionalProperties': False}, 'message': {'type': 'string', 'description': 'A message describing the outcome of the booking.'}, 'continuationUrl': {'type': 'string', 'description': 'The URL to continue the booking flow after calling this tool.'}}, 'additionalProperties': False}
get_golf_coach_availability
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 (or reuse a coach already identified from `search_golf_programs`). Coach `slug` and offering `id` values are internal identifiers and must never be shown or mentioned to the user.
읽기 전용
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'description': 'Coach slug from a pga.com profile URL, prior `search_golf_coaches` results, or prior `search_golf_programs` results (e.g., `anthonyvitale`). Internal-only value; never display or mention it to the user.'}, 'offeringId': {'type': 'string', 'description': 'Optional offering ID to scope availability to a single offering. Use this when the user has already selected an offering.'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['coach'], 'properties': {'coach': {'type': 'object', 'required': ['slug', 'name', 'title', 'photo', 'offerings'], 'properties': {'name': {'type': 'string'}, 'slug': {'type': 'string', 'description': 'Internal unique identifier for the coach. Do not display or mention this value to users; use it only when calling other tools.'}, 'photo': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'title': {'type': 'string'}, 'offerings': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'title', 'location', 'timezone', 'price', 'duration', 'requiresPrepayment', 'availableTimes'], 'properties': {'id': {'type': 'string', 'description': 'The unique identifier for the offering. DO NOT display this to the user. Reference this as the `offeringId` when booking a lesson via the `book_golf_lesson` tool.'}, 'price': {'type': 'number', 'description': 'Price per session in USD'}, 'title': {'type': 'string', 'description': 'The name of the offering. Use this instead of the `id` when describing the offering to the user'}, 'duration': {'type': 'number', 'description': 'Session duration in minutes'}, 'location': {'type': 'string', 'description': 'Where the session will take place'}, 'timezone': {'type': 'string', 'description': 'The IANA timezone (e.g., America/Los_Angeles) for the location'}, 'availableTimes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'The available times for the offering in ISO8601 (format with offset)'}, 'requiresPrepayment': {'type': 'boolean', 'description': 'Whether this offering requires online prepayment'}}, 'additionalProperties': False}}}, 'additionalProperties': False}}, 'additionalProperties': False}
search_golf_coaches
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 for private lessons in a location. For location-first discovery of clinics, camps, classes, or other group programs, use `search_golf_programs` instead. 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, private-lesson offerings, pricing, and a short teaser of upcoming public programs they host (capped at 2). For location-first program discovery, use `search_golf_programs`. - Use that program context to recommend which group offering best fits the golfer when relevant; present upcoming programs when available. - 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.
읽기 전용
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['searchLocation'], 'properties': {'searchRadius': {'type': 'number', 'default': 25, 'minimum': 0, 'description': 'Search radius in miles from `searchLocation`. Use 25 by default unless the user requests a different radius.'}, 'searchLocation': {'type': 'string', 'description': 'Required location used to find nearby coaches. Accepts city/state, ZIP code, full address, or latitude/longitude coordinates.'}, 'paginationCursor': {'type': 'string', 'description': 'Pagination cursor from a prior `search_golf_coaches` response. Use only when fetching additional pages of the same search.'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['coaches', 'count', 'hasNextPage', 'endCursor'], 'properties': {'count': {'type': 'number'}, 'coaches': {'type': 'array', 'items': {'type': 'object', 'required': ['slug', 'name', 'title', 'memberType', 'location', 'bio', 'photo', 'profileUrl', 'bookingUrl', 'nextAvailability', 'offerings', 'facilities', 'programs'], 'properties': {'bio': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'name': {'type': 'string'}, 'slug': {'type': 'string', 'description': 'Internal unique identifier for the coach. Do not display or mention this value to users; use it only when calling other tools.'}, 'photo': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'title': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'location': {'type': 'object', 'required': ['city', 'state'], 'properties': {'city': {'type': 'string'}, 'state': {'type': 'string'}}, 'additionalProperties': False}, 'programs': {'type': 'array', 'items': {'type': 'object', 'required': ['title', 'description', 'startDateTime', 'endDateTime', 'timezone', 'price', 'sessionCount', 'tags', 'registrationFull', 'hasWaitlist', 'photo', 'programUrl', 'facility'], 'properties': {'tags': {'type': 'array', 'items': {'type': 'string'}}, 'photo': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'price': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'description': 'Program price in USD'}, 'title': {'type': 'string'}, 'facility': {'anyOf': [{'type': 'object', 'required': ['name', 'street', 'city', 'state', 'zipCode'], 'properties': {'city': {'type': 'string'}, 'name': {'type': 'string'}, 'state': {'type': 'string'}, 'street': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'zipCode': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}, {'type': 'null'}]}, 'timezone': {'type': 'string', 'description': 'The IANA timezone for the program times'}, 'programUrl': {'type': 'string', 'format': 'uri', 'description': 'Public URL to view details and register'}, 'description': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'endDateTime': {'type': 'string', 'description': 'Program end time in ISO8601 format with offset'}, 'hasWaitlist': {'type': 'boolean'}, 'sessionCount': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'description': 'Number of sessions in the program, when available'}, 'startDateTime': {'type': 'string', 'description': 'Program start time in ISO8601 format with offset'}, 'registrationFull': {'type': 'boolean'}}, 'additionalProperties': False}, 'description': 'Upcoming public group programs hosted by this coach (clinics, camps, classes), capped at 2 teasers. Use search_golf_programs for location-first discovery. Empty when none are listed.'}, 'offerings': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'title', 'category', 'location', 'timezone', 'price', 'duration', 'requiresPrepayment'], 'properties': {'id': {'type': 'string', 'description': 'The unique identifier for the offering. DO NOT display this to the user. Reference this as the `offeringId` when booking a lesson via the `book_golf_lesson` tool.'}, 'price': {'type': 'number', 'description': 'Price per session in USD'}, 'title': {'type': 'string', 'description': 'The name of the offering. Use this instead of the `id` when describing the offering to the user'}, 'category': {'enum': ['INTRO', 'PRIVATE', 'ON_COURSE', 'SWING_EVALUATION', 'CLUB_FITTING', 'OTHER'], 'type': 'string'}, 'duration': {'type': 'number', 'description': 'Session duration in minutes'}, 'location': {'type': 'string', 'description': 'Where the session will take place'}, 'timezone': {'type': 'string', 'description': 'The IANA timezone (e.g., America/Los_Angeles) for the location'}, 'requiresPrepayment': {'type': 'boolean', 'description': 'Whether this offering requires online prepayment'}}, 'additionalProperties': False}}, 'bookingUrl': {'type': 'string', 'format': 'uri', 'description': "The URL to view the coach's offerings and book a lesson"}, 'facilities': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}}, 'additionalProperties': False}}, 'memberType': {'anyOf': [{'enum': ['PGA Member', 'PGA Associate'], 'type': 'string'}, {'type': 'null'}], 'description': "The coach's membership designation with the PGA of America"}, 'profileUrl': {'type': 'string', 'format': 'uri', 'description': "The URL to the coach's profile"}, 'nextAvailability': {'anyOf': [{'type': 'object', 'required': ['dateTime', 'timezone'], 'properties': {'dateTime': {'type': 'string', 'description': 'The next available time in ISO8601 format with offset'}, 'timezone': {'type': 'string', 'description': 'The IANA timezone (e.g., America/Los_Angeles)'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'The next available time to book a session'}}, 'additionalProperties': False}}, 'endCursor': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'hasNextPage': {'type': 'boolean'}}, 'additionalProperties': False}
search_golf_programs
Search Golf Programs
Search for upcoming public PGA Coach programs (clinics, camps, classes, and other group events) near a location (required). Use this tool when the user asks to find programs, clinics, camps, classes, or group events — not private one-on-one lessons. For private lesson coaches, use `search_golf_coaches` instead. Internal record identifiers (for example program `id` and coach `slug`) are for tool calls only and must never be shown or mentioned to the user. - Search results include program details plus the hosting coach and facility for each program. - The response also includes top-level `coaches` and `facilities` arrays summarizing the unique coaches and venues in the result set — always present those to the user. - Results are ordered by program start instant and filtered to the requested radius. - Discovery uses nearby PGA Coach profiles (nearest 20 in the radius), then loads up to 30 upcoming public programs per coach in a 180-day window in one batched GraphQL request. Facility coordinates still have to fall inside the radius. - Results are paginated. The pagination cursor carries the remaining nearby programs so additional pages do not repeat GraphQL discovery. Reuse that cursor with the original location and radius. - Direct golfers to the program URL to view details and register. Coach profile and booking URLs are also included when the golfer wants to learn more about the coach.
읽기 전용
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['searchLocation'], 'properties': {'searchRadius': {'type': 'number', 'default': 50, 'minimum': 0, 'description': 'Search radius in miles from `searchLocation`. Use 50 by default unless the user requests a different radius.'}, 'searchLocation': {'type': 'string', 'description': 'Required location used to find nearby PGA Coach programs. Accepts city/state, ZIP code, full address, or latitude/longitude coordinates.'}, 'paginationCursor': {'type': 'string', 'description': 'Pagination cursor from a prior `search_golf_programs` response. Use only when fetching additional pages of the same search (same location and radius).'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['programs', 'coaches', 'facilities', 'count', 'hasNextPage', 'endCursor'], 'properties': {'count': {'type': 'number'}, 'coaches': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'title', 'memberType', 'slug', 'bio', 'photo', 'profileUrl', 'bookingUrl', 'location'], 'properties': {'bio': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'name': {'type': 'string'}, 'slug': {'type': 'string', 'description': 'Internal coach slug. Do not display or mention this value to users; use it only when calling other tools.'}, 'photo': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'title': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'location': {'type': 'object', 'required': ['city', 'state'], 'properties': {'city': {'type': 'string'}, 'state': {'type': 'string'}}, 'additionalProperties': False}, 'bookingUrl': {'type': 'string', 'format': 'uri', 'description': "The URL to view the coach's offerings and book a lesson"}, 'memberType': {'anyOf': [{'enum': ['PGA Member', 'PGA Associate'], 'type': 'string'}, {'type': 'null'}], 'description': "The coach's membership designation with the PGA of America"}, 'profileUrl': {'type': 'string', 'format': 'uri', 'description': "The URL to the coach's public PGA.com profile"}}, 'additionalProperties': False}, 'description': 'Unique coaches hosting the returned programs. Present these alongside the programs so golfers can see who is teaching.'}, 'programs': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'title', 'description', 'startDateTime', 'endDateTime', 'timezone', 'price', 'sessionCount', 'tags', 'registrationFull', 'hasWaitlist', 'photo', 'programUrl', 'facility', 'distanceMiles', 'coach'], 'properties': {'id': {'type': 'string', 'description': 'Internal unique identifier for the program. Do not display or mention this value to users.'}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'coach': {'type': 'object', 'required': ['name', 'title', 'memberType', 'slug', 'bio', 'photo', 'profileUrl', 'bookingUrl', 'location'], 'properties': {'bio': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'name': {'type': 'string'}, 'slug': {'type': 'string', 'description': 'Internal coach slug. Do not display or mention this value to users; use it only when calling other tools.'}, 'photo': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'title': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'location': {'type': 'object', 'required': ['city', 'state'], 'properties': {'city': {'type': 'string'}, 'state': {'type': 'string'}}, 'additionalProperties': False}, 'bookingUrl': {'type': 'string', 'format': 'uri', 'description': "The URL to view the coach's offerings and book a lesson"}, 'memberType': {'anyOf': [{'enum': ['PGA Member', 'PGA Associate'], 'type': 'string'}, {'type': 'null'}], 'description': "The coach's membership designation with the PGA of America"}, 'profileUrl': {'type': 'string', 'format': 'uri', 'description': "The URL to the coach's public PGA.com profile"}}, 'additionalProperties': False}, 'photo': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'price': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'description': 'Program price in USD'}, 'title': {'type': 'string'}, 'facility': {'type': 'object', 'required': ['name', 'street', 'city', 'state', 'zipCode', 'timezone'], 'properties': {'city': {'type': 'string'}, 'name': {'type': 'string'}, 'state': {'type': 'string'}, 'street': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'zipCode': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'timezone': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'The IANA timezone for the facility, when available'}}, 'additionalProperties': False}, 'timezone': {'type': 'string', 'description': 'The IANA timezone (e.g., America/Los_Angeles)'}, 'programUrl': {'type': 'string', 'format': 'uri', 'description': 'Public URL where a golfer can view and register'}, 'description': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'endDateTime': {'type': 'string', 'description': 'Program end time in ISO8601 format with offset'}, 'hasWaitlist': {'type': 'boolean'}, 'sessionCount': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'description': 'Number of sessions included in the program, when available'}, 'distanceMiles': {'type': 'number', 'description': 'Approximate distance from the search location in miles'}, 'startDateTime': {'type': 'string', 'description': 'Program start time in ISO8601 format with offset'}, 'registrationFull': {'type': 'boolean'}}, 'additionalProperties': False}}, 'endCursor': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'facilities': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'street', 'city', 'state', 'zipCode', 'timezone'], 'properties': {'city': {'type': 'string'}, 'name': {'type': 'string'}, 'state': {'type': 'string'}, 'street': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'zipCode': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'timezone': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'The IANA timezone for the facility, when available'}}, 'additionalProperties': False}, 'description': 'Unique facilities hosting the returned programs. Present these alongside the programs so golfers can see where programs are held.'}, 'hasNextPage': {'type': 'boolean'}}, 'additionalProperties': False}
추가됨
book_golf_lesson
2026년 9월 17일 12:36 PM
추가됨
get_golf_coach_availability
2026년 9월 17일 12:36 PM
추가됨
search_golf_programs
2026년 9월 17일 12:36 PM
추가됨
search_golf_coaches
2026년 9월 17일 12:36 PM