Stymie Golf

Read-only US golf course, scorecard, equipment, deal, and golf-trip data for AI agents.

Should I use this

Quality & Safety

A
Description quality
98%
Schema completeness
84%
Naming quality
100%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~3,114Tokens (tool definitions)
~1.7 KBTypical response size
Significant attention impact (2.43% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "stymie-golf": {
      "url": "https://mcp-production-680d.up.railway.app/mcp"
    }
  }
}

Remote endpoints

https://mcp-production-680d.up.railway.app/mcpstreamable-http

What it can do

Tool inventory

Tools (12)

🟒 Read-only🟑 WriteπŸ”΄ Deleteβšͺ Unknown
🟒search_courses(query, state, city, zip, location, ...)

Search for a named course or filter the directory by city/state, access, and holes. For a trip near a place, station, address, or ZIP, call find_nearby_courses FIRST; do not put the place name in query (query searches course names). You may also pass location here for a proximity search. Returns canonical Stymie URLs, reusable slugs, access, holes, scorecard availability, and straight-line miles when a location is supplied. Copy returned URLs; never construct county slugs. Next: get_course with a returned URL, or build_golf_trip with the resolved center and preferences.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "description": "Course name search (partial match)",
      "type": "string"
    },
    "state": {
      "description": "State/province code, e.g. IL, ON, NSW",
      "type": "string",
      "minLength": 2,
      "maxLength": 3
    },
    "city": {
      "description": "City name",
      "type": "string"
    },
    "zip": {
      "description": "US ZIP; use location for other places",
      "type": "string",
      "pattern": "^\\d{5}$"
    },
    "location": {
      "description": "Plain-language place, station, address, or US ZIP; find_nearby_courses is the recommended first step for trips",
      "type": "string",
      "maxLength": 200
    },
    "country": {
      "type": "string",
      "enum": [
        "US",
        "CA",
        "GB",
        "IE",
        "AU",
        "NZ"
      ]
    },
    "distance_miles": {
      "default": 50,
      "type": "number",
      "minimum": 1,
      "maximum": 50
    },
    "type": {
      "description": "Course type filter",
      "type": "string",
      "enum": [
        "public",
        "private",
        "semi_private",
        "municipal",
        "resort"
      ]
    },
    "holes": {
      "description": "Number of holes",
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "9",
            "18",
            "27",
            "36"
          ]
        },
        {
          "type": "number",
          "const": 9
        },
        {
          "type": "number",
          "const": 18
        },
        {
          "type": "number",
          "const": 27
        },
        {
          "type": "number",
          "const": 36
        }
      ]
    },
    "page": {
      "default": 1,
      "description": "Page number",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "limit": {
      "default": 20,
      "description": "Results per page (max 50)",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒get_course(slug)

Get full details for a specific golf course by a returned Stymie URL or slug. Returns name, location, type, holes, architect, year built, amenities, contact info, slope stats, and nearby courses. Covers the US, Canada, UK, Ireland, Australia and New Zealand.

Input Schema

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "description": "Paste the canonical Stymie course URL or reusable slug returned by search_courses, find_nearby_courses, or build_golf_trip"
    }
  },
  "required": [
    "slug"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒get_scorecard(slug)

Get the full scorecard for a golf course: all tee sets with hole-by-hole par, yardage, stroke index, and front/back nine ratings. Available for thousands of courses with scorecard data.

Input Schema

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "description": "Paste the canonical Stymie course URL or reusable slug returned by search_courses, find_nearby_courses, or build_golf_trip"
    }
  },
  "required": [
    "slug"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒get_architect(name, slug)

Get details about a golf course architect: bio, Wikipedia image, birth/death years, nationality, and all courses they designed grouped by state. Provide either the architect name or URL slug.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "description": "Architect name, e.g. \"Robert Trent Jones Sr.\"",
      "type": "string"
    },
    "slug": {
      "description": "Architect slug, e.g. \"robert-trent-jones-sr\"",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒get_leaderboard(state, category, limit)

Get the top golf courses in a state by category: hardest (highest slope), easiest (lowest slope, public only), or longest (most yardage). Great for answering "hardest course in NJ" type questions.

Input Schema

{
  "type": "object",
  "properties": {
    "state": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "description": "2-letter state code, e.g. \"NJ\""
    },
    "category": {
      "default": "hardest",
      "description": "Ranking category",
      "type": "string",
      "enum": [
        "hardest",
        "easiest",
        "longest"
      ]
    },
    "limit": {
      "default": 10,
      "description": "Number of results",
      "type": "integer",
      "minimum": 1,
      "maximum": 25
    }
  },
  "required": [
    "state"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒search_tee_times(slug, date, players)

Search for available tee times at a golf course. Note: live tee-time inventory is not available on Stymie. Returns the Stymie course page (official website and phone for booking) and the tee-time alert early-access list.

Input Schema

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "description": "Course full_slug"
    },
    "date": {
      "description": "Desired date (YYYY-MM-DD)",
      "type": "string"
    },
    "players": {
      "description": "Number of players",
      "type": "integer",
      "minimum": 1,
      "maximum": 4
    }
  },
  "required": [
    "slug"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒search_stymie(query, state, limit)

Search Stymie across golf courses, current equipment, architects, and major site tools. Use this first when the user does not specify which Stymie collection they need.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 2,
      "maxLength": 80,
      "description": "A course, equipment model, brand, architect, destination, or golf topic"
    },
    "state": {
      "description": "Optional 2-letter state filter for course results",
      "type": "string",
      "minLength": 2,
      "maxLength": 3
    },
    "limit": {
      "default": 8,
      "type": "integer",
      "minimum": 1,
      "maximum": 20
    }
  },
  "required": [
    "query"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒search_equipment(query, category, limit)

Search current golf balls, drivers, putters, rangefinders, and launch monitors. Returns official Stymie detail URLs, images, MSRP, and stated best-for guidance when published.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80,
      "description": "Brand and/or model name"
    },
    "category": {
      "type": "string",
      "enum": [
        "ball",
        "driver",
        "putter",
        "rangefinder",
        "launch_monitor"
      ]
    },
    "limit": {
      "default": 10,
      "type": "integer",
      "minimum": 1,
      "maximum": 30
    }
  },
  "required": [
    "query"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒find_nearby_courses(location, state, country, latitude, longitude, ...)

START HERE to plan golf near a place, transit station, address, or US ZIP: pass the place text as location, plus access (public/private/all) and holes (9/18) if known. Coordinates are optional; no slug knowledge is needed. Resolves the location and returns its labeled center and a nearest-first ranked shortlist with canonical Stymie URLs, reusable slugs, straight-line miles, access, holes, and scorecard availability. If the place is ambiguous, ask the golfer to choose a candidate. NEXT call build_golf_trip with the returned latitude/longitude and the same preferences for 1-4 course picks. Use search_courses only for a specific course name. Copy returned URLs verbatim; distances are not drive/transit times.

Input Schema

{
  "type": "object",
  "properties": {
    "location": {
      "description": "Place name, transit station, address, or US ZIP; extract the place from the golfer’s sentence",
      "type": "string",
      "maxLength": 200
    },
    "state": {
      "description": "State/province code, e.g. IL, ON, or NSW, to disambiguate a place",
      "type": "string",
      "minLength": 2,
      "maxLength": 3
    },
    "country": {
      "description": "Country code to disambiguate a place; GB means UK",
      "type": "string",
      "enum": [
        "US",
        "CA",
        "GB",
        "IE",
        "AU",
        "NZ"
      ]
    },
    "latitude": {
      "type": "number",
      "minimum": -90,
      "maximum": 90
    },
    "longitude": {
      "type": "number",
      "minimum": -180,
      "maximum": 180
    },
    "distance_miles": {
      "default": "25",
      "description": "Search radius in miles: one of 5, 10, 20, 25, 50",
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "5",
            "10",
            "20",
            "25",
            "50"
          ]
        },
        {
          "type": "number",
          "const": 5
        },
        {
          "type": "number",
          "const": 10
        },
        {
          "type": "number",
          "const": 20
        },
        {
          "type": "number",
          "const": 25
        },
        {
          "type": "number",
          "const": 50
        }
      ]
    },
    "access": {
      "default": "all",
      "type": "string",
      "enum": [
        "all",
        "public",
        "private",
        "semi_private",
        "municipal",
        "resort"
      ]
    },
    "holes": {
      "description": "Total course holes; omit if flexible",
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "9",
            "18",
            "27",
            "36"
          ]
        },
        {
          "type": "number",
          "const": 9
        },
        {
          "type": "number",
          "const": 18
        },
        {
          "type": "number",
          "const": 27
        },
        {
          "type": "number",
          "const": 36
        }
      ]
    },
    "limit": {
      "default": 25,
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒build_golf_trip(location, state, country, latitude, longitude, ...)

AFTER find_nearby_courses, pass its center latitude/longitude, access and holes preferences, and number_of_courses to make a 1-4 course shortlist. You can also start directly with a plain-language location (place, station, address, or US ZIP). Optional tee yardage and slope ranges rank matching tees by fit plus straight-line distance; without tee preferences, courses are nearest-first and missing scorecards are retained. Returns ranked course picks with canonical Stymie URLs, reusable slugs, selection reasons, distance, access, holes, and published tee data when available. Public access excludes unknown/private courses; private picks require the golfer to confirm access. No booking, tee-time availability, transit routing, or drive times are provided. Use returned URLs as citations without inventing slugs.

Input Schema

{
  "type": "object",
  "properties": {
    "location": {
      "description": "Place name, station, address, or US ZIP; omit when reusing the nearby result coordinates",
      "type": "string",
      "maxLength": 200
    },
    "state": {
      "type": "string",
      "minLength": 2,
      "maxLength": 3
    },
    "country": {
      "description": "Country code to disambiguate a place; GB means UK",
      "type": "string",
      "enum": [
        "US",
        "CA",
        "GB",
        "IE",
        "AU",
        "NZ"
      ]
    },
    "latitude": {
      "type": "number",
      "minimum": -90,
      "maximum": 90
    },
    "longitude": {
      "type": "number",
      "minimum": -180,
      "maximum": 180
    },
    "access": {
      "default": "public",
      "type": "string",
      "enum": [
        "all",
        "public",
        "private",
        "semi_private",
        "municipal",
        "resort"
      ]
    },
    "holes": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "9",
            "18",
            "27",
            "36"
          ]
        },
        {
          "type": "number",
          "const": 9
        },
        {
          "type": "number",
          "const": 18
        },
        {
          "type": "number",
          "const": 27
        },
        {
          "type": "number",
          "const": 36
        }
      ]
    },
    "number_of_courses": {
      "default": 2,
      "type": "integer",
      "minimum": 1,
      "maximum": 4
    },
    "distance_miles": {
      "default": "25",
      "description": "Search radius in miles: one of 5, 10, 20, 25, 50",
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "5",
            "10",
            "20",
            "25",
            "50"
          ]
        },
        {
          "type": "number",
          "const": 5
        },
        {
          "type": "number",
          "const": 10
        },
        {
          "type": "number",
          "const": 20
        },
        {
          "type": "number",
          "const": 25
        },
        {
          "type": "number",
          "const": 50
        }
      ]
    },
    "tee_yards_min": {
      "type": "integer",
      "minimum": 500,
      "maximum": 8500
    },
    "tee_yards_max": {
      "type": "integer",
      "minimum": 500,
      "maximum": 8500
    },
    "slope_min": {
      "type": "integer",
      "minimum": 55,
      "maximum": 155
    },
    "slope_max": {
      "type": "integer",
      "minimum": 55,
      "maximum": 155
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒get_deals(category, limit)

Get currently verified sale offers for golf equipment. Only in-stock offers checked within the last 48 hours with a current price below list price are returned. Links may be affiliate links, at no extra cost to the buyer.

Input Schema

{
  "type": "object",
  "properties": {
    "category": {
      "type": "string",
      "enum": [
        "ball",
        "driver",
        "putter",
        "rangefinder",
        "launch_monitor"
      ]
    },
    "limit": {
      "default": 20,
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒get_data_coverage

Return a live count of Stymie course, scorecard, logo, architect, equipment, and current-deal coverage. Use this instead of quoting hardcoded catalog sizes.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded12 tools
verifiedversion not recorded12 tools
verifiedversion not recorded13 tools