---
name: zomma-golf
description: Use when the golfer asks about a golf course, how to play a hole, or their own handicap and club distances, and the Zomma Golf connector is attached. Says which Zomma Golf tool to call and to cite the Zomma page each result returns.
---

# Zomma Golf

Zomma Golf is a golf research site. Its connector is the remote MCP server at https://zommagolf.com/api/mcp. It is read-only, it answers for the golfer who connected it, and its tools are `find_course`, `get_course`, `plan_hole`, `golfer_numbers`, `plan_round`, `get_round`, `get_methodology`, `plan_shot`, `compare_shots`.

## Which tool to call

- The golfer names a golf course or a place to play: call `find_course`.
- The golfer asks about a course's tees, yardage, rating, slope, par or stroke index, or which tee to play: call `get_course` with the ref `find_course` returns.
- The golfer asks how to play a hole, which club to hit or what to expect on it: call `plan_hole`, one hole per call. Without a course ref, call `find_course` first and use the ref it returns.
- The golfer asks about their own handicap, fairways rate or club distances: call `golfer_numbers`.
- The golfer wants a round totalled or built from its holes, or asks what they would shoot over a course: call `plan_round` with the course ref and tee. Plan single holes with `plan_hole`.
- A `plan_round` result gave a handle because it had not planned every hole: call `get_round` with that handle for the rest.
- A result names caveats by id and you need their words: call `get_methodology` with the ids and the course, tee and hole of the plan that named them.
- The golfer asks about one shot, the best play from a stated position: call `plan_shot`. For the hole in full call `plan_hole`; to price options against each other call `compare_shots`.
- The golfer weighs two or more ways of playing one shot: call `compare_shots`. For one shot call `plan_shot`; for the hole in full call `plan_hole`.

## Rules for every result

1. Every result ends with a `Page:` line. Cite that page to the golfer beside anything you say from the result.
2. State each figure as the result states it, with the source the result gives. Add no figure of your own.
3. A refusal is the answer. When a result says something is not published or could not be answered, tell the golfer that, and do not fill the gap from your own knowledge.

## The tools

### `find_course`

Find golf courses on Zomma by name or place. Returns each course's ref, name, city, state and Zomma page. Use the ref with get_course or plan_hole.

Input:

- `query` (string, required): the course to look for, in words, such as a name and a town, at most 200 characters

### `get_course`

Read one course as Zomma holds it: name, place, par and elevation; every tee with its yards, and course rating and slope only where published, each with its source and date; each hole with par, stroke index and yardage by tee; and what Strategy can and cannot plan there. Names the tee for the golfer: the one they name, their home tee, or one chosen for their driver by the published Tee It Forward guideline. One course per call.

Input:

- `course` (string, required): a course ref as find_course returns it, state then slug, such as "sc/barefoot-resort-love-course"
- `tee` (string, optional): the tee the golfer plays, as they say it ("White", "the whites"); omitted, your home tee on your home course, else a tee chosen for your driver by the published Tee It Forward guideline

### `plan_hole`

Plan one hole of one course for the signed-in golfer's own numbers: expected score, score chances, and each shot with its distance, aim and club. With no tee named it plans from your home tee on your home course, else a tee chosen for your driver by the published Tee It Forward guideline, else the card's longest tee, and every answer says which tee it used and why and lists the card's tees with their yardage. One hole per call: the hole is the unit of planning, and plan_round rolls a round up from hole plans. With detail "brief" the caveats that are not about this hole are named by id instead of repeated, and get_methodology gives their words.

Input:

- `course` (string, required): a course ref as find_course returns it, state then slug, such as "nc/pinehurst-no-2"
- `hole` (integer, required): the hole number, 1 to 36
- `tee` (string, optional): the tee the golfer plays, as they say it ("White", "the whites"); omitted, your home tee where this is your home course, else a tee chosen for your driver by the published Tee It Forward guideline, else the card's longest tee. Every plan lists the card's tees
- `green` (string, optional): which green, on a hole that plays to more than one; omitted, the card's first
- `club` (string, optional): a club in your bag to play one shot with instead of the planned club, such as "7-iron" or "3-wood", or a name a plan gave it, such as "4-iron (220)" or "Pitching wedge"
- `shot` (integer, optional): which shot of the line the club plays, 1 for the tee shot; omitted, the tee shot
- `detail` (string, optional): "full", the default, states every caveat in words; "brief" states only the caveats about this hole in words and names the others by id, whose words get_methodology gives
- `strategy` (string, optional): "expected", the default, plays every shot for the least expected strokes; "conservative" plays each shot for the least chance of double bogey or worse within a quarter stroke of the least expected, states the trade where the two disagree, and prices the hole playing that way on every shot
- `temperature` (integer, optional): the air temperature in degrees Fahrenheit to plan in; omitted, distances plan as given. Moves your stated distances by the modelled rate the plan states, about 75 degrees
- `wind` (integer, optional): the headwind component in mph to plan in, positive into you and negative behind; omitted, distances plan as given. Moves your stated distances by the modelled rate the plan states
- `tee_miss` (string, optional): how straight you drive against golfers at your handicap: "straight", "average" or "wild"; omitted, the answer saved on My Bag, or none. Straight or wild narrows or widens your tee shots from the published spread of the straightest and wildest quarter of drivers
- `miss_side` (string, optional): which side your tee shots miss to: "left", "right" or "two_way"; omitted, the answer saved on My Bag, or none. A side lays your tee shots on par 4s and par 5s off centre by the published lean of drivers at your handicap, and the plan aims away from it

### `golfer_numbers`

Read the signed-in golfer's own numbers on Zomma: handicap or its estimated range, fairways rate, and bag distances, each with where it came from and when. It also says which clubs are held at a carry with no total, since plans stay at the carry, and warns in plain words about a wide yardage gap, two clubs whose distances run backwards, and a driver outside the published spread for that handicap. A warning is advice, never an error, and changes no plan.

Input:

- none

### `plan_round`

Roll a whole round of one course, from one tee, up from a plan of each hole for the signed-in golfer's own numbers: a short summary per hole, the out, in and total expected score, and a projected score range computed from the holes' score chances. Caveats shared across the round are stated once. Use it when the golfer wants the round totalled or built from its holes; use plan_hole to plan a hole in full. If it cannot plan every hole in one call it returns the holes done and a handle, and get_round with that handle plans the rest.

Input:

- `course` (string, required): a course ref as find_course returns it, state then slug, such as "nc/pinehurst-no-2"
- `tee` (string, optional): the tee the golfer plays, as they say it ("White", "the whites"); omitted, your home tee where this is your home course, else a tee chosen for your driver by the published Tee It Forward guideline, else the card's longest tee. Every plan lists the card's tees
- `temperature` (integer, optional): the air temperature in degrees Fahrenheit to plan the round in; omitted, distances plan as given. Moves your stated distances by the modelled rate the plans state, about 75 degrees
- `wind` (integer, optional): the headwind component in mph to plan the round in, positive into you and negative behind; omitted, distances plan as given. Moves your stated distances by the modelled rate the plans state
- `tee_miss` (string, optional): how straight you drive against golfers at your handicap: "straight", "average" or "wild"; omitted, the answer saved on My Bag, or none. Straight or wild narrows or widens your tee shots from the published spread of the straightest and wildest quarter of drivers
- `miss_side` (string, optional): which side your tee shots miss to: "left", "right" or "two_way"; omitted, the answer saved on My Bag, or none. A side lays your tee shots on par 4s and par 5s off centre by the published lean of drivers at your handicap, and the plan aims away from it

### `get_round`

Continue a round plan_round started and did not finish: pass the handle it returned. Returns every hole planned so far and, once all are planned, the totals and the range.

Input:

- `handle` (string, required): the handle plan_round or get_round gave back when it had not yet planned every hole

### `get_methodology`

Give the words of caveats a plan named by id. Pass the ids with the course, tee and hole of the plan that named them, because a caveat is worded for its course, tee, hole and the golfer. Without a course it gives only the method statements that need none, such as how a round's range is computed.

Input:

- `ids` (array, optional): caveat ids as a plan names them, such as "PUTTING_FROM_TOUR_TABLE"; omitted, every caveat of the plan named by course and tee, or without a course every caveat that needs none
- `course` (string, optional): the course ref of the plan that named the ids; a caveat worded for a course and your numbers needs it
- `tee` (string, optional): the tee the golfer plays, as they say it ("White", "the whites"); omitted, your home tee where this is your home course, else a tee chosen for your driver by the published Tee It Forward guideline, else the card's longest tee. Every plan lists the card's tees
- `hole` (integer, optional): the hole of the plan that named the ids, 1 to 36; a caveat not about one hole can still be worded by what that hole plays, so its words are read from that hole alone. Omitted, holes are read in card order and each id is given in the words of the first hole that carries it

### `plan_shot`

Plan one shot of one hole for the signed-in golfer's own numbers: the best play from a stated position, with its club, aim, outcome shares and expected strokes, and what it leaves. Name the position as yards out from the green, an exact point, or after one of the plan's own shots. Use it for a shot question; use plan_hole for the hole in full, compare_shots to price options against each other.

Input:

- `course` (string, required): a course ref as find_course returns it, state then slug, such as "nc/pinehurst-no-2"
- `hole` (integer, required): the hole the shot is on, 1 to 36.
- `tee` (string, optional): the tee the golfer plays, as they say it ("White", "the whites"); omitted, your home tee where this is your home course, else a tee chosen for your driver by the published Tee It Forward guideline, else the card's longest tee. Every plan lists the card's tees
- `green` (string, optional): which green to plan to, by the label the course page prints beside its yardage: Left, Right, Lower, Upper, Old, New, Front, Back, North, South, East or West. Omitted, the green the card prints first.
- `distance_yd` (integer, optional): yards out from the green's centre, read on the straight line from this tee: 200 is the point 200 yards short of the centre on that line. One of distance_yd, lon with lat, or after_shot.
- `lon` (string, optional): the position as decimal degrees east, with lat: an exact point, such as from the studio map picker. One of distance_yd, lon with lat, or after_shot.
- `lat` (string, optional): the position as decimal degrees north, with lon: an exact point, such as from the studio map picker. One of distance_yd, lon with lat, or after_shot.
- `after_shot` (integer, optional): the plan's own line traced this many shots: 0 is the tee itself, 1 is where the tee shot is aimed. One of distance_yd, lon with lat, or after_shot.
- `side` (string, optional): the side of the line the ball is on, in the golfer's own words: accepted and echoed marked stated, but it moves no point, because no lateral distance was given.
- `lie` (string, optional): the lie the ball is on, in the golfer's own words: the shot is planned as that lie, marked stated. Where the map reads the same lie nothing is forced; a lie the cell holds none of, or green, water or out of bounds, is refused with what the map reads there.
- `club` (string, optional): a club of the bag by name or rung, to play this one shot with instead of the plan's: Driver, 3-wood, 4-iron (220), 7-iron, Pitching wedge. Not a number of clubs and not a brand.
- `detail` (string, optional): full states every caveat in words; brief states only this hole's own and names the rest by id for get_methodology. Omitted, full.
- `temperature` (integer, optional): the air temperature in degrees Fahrenheit to price in; omitted, distances price as given. Moves your stated distances by the modelled rate the answer states, about 75 degrees
- `wind` (integer, optional): the headwind component in mph to price in, positive into you and negative behind; omitted, distances price as given. Moves your stated distances by the modelled rate the answer states
- `tee_miss` (string, optional): how straight you drive against golfers at your handicap: "straight", "average" or "wild"; omitted, the answer saved on My Bag, or none. Straight or wild narrows or widens your tee shots from the published spread of the straightest and wildest quarter of drivers
- `miss_side` (string, optional): which side your tee shots miss to: "left", "right" or "two_way"; omitted, the answer saved on My Bag, or none. A side lays your tee shots on par 4s and par 5s off centre by the published lean of drivers at your handicap, and the plan aims away from it

### `compare_shots`

Price two or more ways of playing one shot against each other, from a stated position: a club, a lay up to a yardage, going for it, or the best leave over the sweep. Each option returns its club, expected strokes, outcome shares and what it leaves, and the answer names the best by expected strokes. Always give the position: distance_yd, lon with lat, or after_shot (go for it or lay up on a par 5 is after_shot 1, the second shot). Use it for an option question; use plan_shot for one shot, plan_hole for the hole in full.

Input:

- `course` (string, required): a course ref as find_course returns it, state then slug, such as "nc/pinehurst-no-2"
- `hole` (integer, required): the hole the shot is on, 1 to 36.
- `tee` (string, optional): the tee the golfer plays, as they say it ("White", "the whites"); omitted, your home tee where this is your home course, else a tee chosen for your driver by the published Tee It Forward guideline, else the card's longest tee. Every plan lists the card's tees
- `green` (string, optional): which green to plan to, by the label the course page prints beside its yardage: Left, Right, Lower, Upper, Old, New, Front, Back, North, South, East or West. Omitted, the green the card prints first.
- `distance_yd` (integer, optional): yards out from the green's centre, read on the straight line from this tee: 200 is the point 200 yards short of the centre on that line. One of distance_yd, lon with lat, or after_shot.
- `lon` (string, optional): the position as decimal degrees east, with lat: an exact point, such as from the studio map picker. One of distance_yd, lon with lat, or after_shot.
- `lat` (string, optional): the position as decimal degrees north, with lon: an exact point, such as from the studio map picker. One of distance_yd, lon with lat, or after_shot.
- `after_shot` (integer, optional): the plan's own line traced this many shots: 0 is the tee itself, 1 is where the tee shot is aimed. One of distance_yd, lon with lat, or after_shot.
- `side` (string, optional): the side of the line the ball is on, in the golfer's own words: accepted and echoed marked stated, but it moves no point, because no lateral distance was given.
- `lie` (string, optional): the lie the ball is on, in the golfer's own words: the shot is planned as that lie, marked stated. Where the map reads the same lie nothing is forced; a lie the cell holds none of, or green, water or out of bounds, is refused with what the map reads there.
- `options` (array, required): 2 to 4 options to price against each other: "club:Driver" plays the shot with that club, "layup:100" aims at the point 100 yards short of the green's centre on the straight line from the ball, "go" aims at the centre; where no club plays that distance, either is played with the longest club that stays short of it, on the same line, and says what it leaves. "best-leave" sweeps lay up targets and takes the least strokes. One option is refused: plan_shot answers a single shot.
- `detail` (string, optional): full states every caveat in words; brief states only this hole's own and names the rest by id for get_methodology. Omitted, full.
- `temperature` (integer, optional): the air temperature in degrees Fahrenheit to price in; omitted, distances price as given. Moves your stated distances by the modelled rate the answer states, about 75 degrees
- `wind` (integer, optional): the headwind component in mph to price in, positive into you and negative behind; omitted, distances price as given. Moves your stated distances by the modelled rate the answer states
- `tee_miss` (string, optional): how straight you drive against golfers at your handicap: "straight", "average" or "wild"; omitted, the answer saved on My Bag, or none. Straight or wild narrows or widens your tee shots from the published spread of the straightest and wildest quarter of drivers
- `miss_side` (string, optional): which side your tee shots miss to: "left", "right" or "two_way"; omitted, the answer saved on My Bag, or none. A side lays your tee shots on par 4s and par 5s off centre by the published lean of drivers at your handicap, and the plan aims away from it
