BookTheTee Golf Tee Times
Server Details
Find public golf courses near NYC and get official tee-time booking links.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
TDQS
Scored across 3 tools
The three tools are mostly distinct: search_courses finds courses, get_course returns one course's full record, and get_booking_link returns the deep link. There is minor overlap since get_course's record likely includes booking details, which could confuse selection with get_booking_link, but descriptions draw a clear line.
All three tools follow a consistent verb_noun snake_case pattern: search_courses, get_course, get_booking_link. The convention is predictable and readable throughout.
Three tools is on the lean side but well-scoped for a course-discovery and booking-handoff server. Each tool earns its place, though the surface is minimal for a domain with booking workflows.
Search, lookup, and booking-link handoff are covered, but there is no live tee-time availability check and no booking/reservation action, which are core to the tee-time domain. The design intentionally delegates booking externally, but the surface leaves notable gaps for agents expecting availability data.
Available Tools
3 toolsget_booking_linkGet booking linkARead-onlyInspect
Official booking deep link and method (online/phone) for a course. Send the user here to book.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, so the safety profile is already covered. The description compensates by disclosing the return content (deep link plus booking method), which is meaningful given there is no output schema. It omits auth requirements or failure modes, so it is not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the resource and return payload front-loaded ahead of the usage instruction. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with no output schema, the description covers purpose, expected return content, and the user-facing action. The only real gap is that the slug's origin/format is left to the schema, which is undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the single parameter "slug" is never mentioned by name or format. The phrase "for a course" implicitly identifies what the slug refers to, which is partial compensation but leaves the agent inferring the identifier's meaning and shape.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: it returns the official booking deep link and the booking method (online/phone) for a course. An agent immediately knows this is a retrieval tool for booking URLs. It does not explicitly name the siblings get_course or search_courses to differentiate scope, which caps it at 4.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Send the user here to book" gives a clear, actionable when-to-use cue tied to the user's booking intent. There is no explicit when-not guidance or comparison against get_course (e.g., use that for details, this for the booking action), so it stops short of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_courseGet course detailsBRead-onlyInspect
Full record for one course by slug (fees, caveats, resident rules, sources).
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read. The description adds genuine value by enumerating the record contents (fees, caveats, resident rules, sources), but says nothing about behavior when the slug is unknown or whether the record can be partial — a gap, though modest given the read-only annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the key (slug) and payload (fields) front-loaded; nothing is wasted. The parenthetical field list is informative rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-param read tool with no output schema, the description gives a rough sense of the returned record but omits error behavior for an invalid slug and any note on where slugs come from. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and there is one required parameter, so the description must carry the load. It identifies the parameter's nature ('slug') but adds no format, example, or source guidance (e.g., where to get a valid slug), leaving the schema's bare 'type: string' largely unenriched.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific retrieval action ('full record for one course') plus the lookup key ('by slug'), which clearly distinguishes it from search_courses (plural, list) and get_booking_link (different resource). It stops short of explicitly naming those siblings, but the verb+resource is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use guidance or mention of alternatives. The phrase 'by slug' hints that a slug must first be obtained (presumably from search_courses), but the description never says this or explains when to prefer this tool over the sibling lookup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_coursesSearch golf coursesARead-onlyInspect
Search public golf courses (currently NYC metro) with official tee-time booking links. Filters are optional. Courses with unknown fee/location are excluded only when that filter is set. Does not check live tee-time availability; date is echoed back with booking-window notes.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | YYYY-MM-DD desired play date (informational) | |
| limit | No | ||
| region | No | Region id, e.g. "nyc" | |
| max_fee | No | Max USD; matches courses whose green_fee_max <= max_fee (or green_fee_min if max unknown) | |
| near_lat | No | ||
| near_lng | No | ||
| radius_mi | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered; the description adds real behavior beyond that: unknown fee/location courses are excluded only when the relevant filter is set, live availability is not checked, and `date` is echoed back with booking-window notes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, front-loaded with scope and value, followed by filter behavior and the availability caveat. No sentence is filler and each adds a distinct constraint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations covering permissions, the description carries most of the load and does it well for a 7-param search: scope, optionality, exclusion rules, and the availability caveat are all stated. The undocumented proximity and limit params keep it just short of complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 43% (limit, near_lat, near_lng, radius_mi are undocumented). The description clarifies `date` as informational/echoed and explains the unknown-fee exclusion rule that governs max_fee, but says nothing about the proximity trio or limit, so it only partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Search public golf courses') plus scope ('currently NYC metro') and the differentiating payload (official tee-time booking links). It doesn't explicitly name siblings get_course/get_booking_link, but the search-vs-get distinction is inferable from the verb and result description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Filters are optional' tells the agent all parameters can be omitted, and 'Does not check live tee-time availability' is an explicit when-not. It never routes the agent to get_course or get_booking_link for detail/booking, which is the remaining gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
- First observed
get_booking_link - First observed
get_course - First observed
search_courses
Related MCP Connectors
Search golf tee times by natural language. Returns GolfNow booking links. Does not book or hold.
Live golf tee time availability across US courses. Search by location, date, players, and price.
Scorecards, tee yardages, USGA ratings and green contour maps for 30,000 golf courses worldwide.
Read-only US golf course, scorecard, equipment, deal, and golf-trip data for AI agents.
Related MCP Servers
AlicenseNot gradedqualityBmaintenanceEnables agents to search and retrieve live local happenings in New York City — music, theater, comedy, film, art, sports, festivals, markets, food and drink, classes, tours and nightlife — each with dates, times, prices, booking links and images. Two tools, search_directions and get_details, let assistants answer time-sensitive questions about what is happening nearby and return bookable results.176MIT- AlicenseAqualityDmaintenanceEnables AI assistants to find and get status of NYC public restrooms using live NYC Open Data, including hours, accessibility, and inspection reports.229 npm1MIT
- AlicenseBqualityDmaintenanceProvides tools for discovering events at Madison Square Garden via the Ticketmaster API, returning structured data with event details like name, date, price, and ticket purchase links.1664 npm25MIT
- FlicenseNot gradedqualityDmaintenanceAutomates tennis court bookings on San Francisco Recreation websites using browser automation, with tools to check availability, initiate booking with SMS verification, and complete bookings.9-
Glama MCP Gateway
Add one secure layer between your agents and this server.