# CoachBoard MCP — tools

Generated from the tools themselves: these are the exact names and descriptions an agent gets.
Back to the index: https://www.coachboard.app/mcp

## Plays for articles

### `new_board` — Start a new play

Start again on a fresh play with one empty board for this sport. Then build it with the other tools (set_board_config for a half pitch or a plain board).

- `sport`: one of `big-football`, `basketball`
- `title` (optional)

### `export_play` — Export the play for an article

Check the play and hand it back as play data (exactly the format the CoachBoard app saves), for an article's player. It is checked FIRST: inside the board, no overlapping players, nothing hidden under a player, readable text, and in an animation the ball always reaches a player. If anything fails you get NO data, only the problems — fix them with the other tools and export again. On success you also get an embed snippet for any web page: an iframe whose link carries the play itself (nothing is stored), plus embed.js to size it. Nothing is saved anywhere.

- `title` (optional)

### `load_play` — Continue from play data

Load play data from an earlier export_play (e.g. from an article) to change it. Replaces this connection's play; nothing is saved.

- `play` — The play data, as returned by export_play (JSON).

## Building the board

### `layout_drill` — Lay out a standard drill

Set up a standard drill in one call: say the shape, the numbers and the size in
metres, and the tool places everyone exactly — the numbers are always right.

Shapes: rondo (attackers round the edge, defenders inside), possession (both teams
spread through the area), two-goals (a small-sided game), one-goal (attack one goal —
finishing, playing out). It draws the area with its size label, places the players,
a ball at a player's feet, and goals where the shape has them.

Use this for any rondo, possession game, small-sided game or attack on one goal.
Use setup_drill only for a layout none of these shapes fits.
It builds on an EMPTY board: to change a drill that's already there, use fit_drill or
progress_drill, or clear the board first.

- `shape`: one of `rondo`, `possession`, `two-goals`, `one-goal` — rondo: attackers round the edge, defenders inside. possession: both teams spread through the area (keep-away). two-goals: a game with a goal at each end (football), or a full-court game (basketball). one-goal: attack one goal (football finishing, playing out), or a half-court game at a real basket (basketball: 3v3, 5v5, a 3v2 fast break).
- `home` — Home players (e.g. the attackers in a rondo). Must be at least 0, at most 22.
- `away` — Away players (e.g. the defenders in a rondo). Must be at least 0, at most 22.
- `neutral` (optional) — Neutral players who play for whoever has the ball. Must be at least 0, at most 6.
- `widthMetres` — Must be at least 5, at most 105.
- `heightMetres` — Must be at least 5, at most 68.
- `goalkeepers`: one of `true`, `false`, `unset` — Football two-goals / one-goal: put a keeper in each goal (counted within home/away). Basketball has none. "unset" if not needed.

### `setup_drill` — Set up a drill

Lay out a complete practice on one board in a single call: the playing area with its
dimension label, the players, and the equipment.

Use this whenever you are building a drill, grid, rondo, small-sided game or practice
shape — it replaces placing the area, players and cones separately.

For a rondo, a possession game, a small-sided game or an attack on one goal, use
layout_drill instead: it places everyone exactly. Use this tool for layouts none of
those shapes fits, or to add equipment on its own.
Do NOT use it to modify a board that already has content; it only adds.

Coordinates are in field units and belong to the TARGET board's own space (a full
football pitch is 10500 × 6800, a basketball court 12693 × 6800, a square board
6800 × 6800). Anything outside is clamped to the edge and reported back as a warning.

Keep players far enough apart that markers don't overlap — the sport line in the system
prompt gives the minimum (it differs by sport: markers are bigger on a court). Closer
and they overlap on screen, so the drill says 5v2 but a coach counts six.
Leave more than the minimum where you can; players standing exactly at the limit look
crowded.

Never place equipment at a player's coordinates: players are drawn on top of objects,
so a ball too close to a player is hidden. Put the ball at the player's feet, not on
them (small equipment that lands on a player is moved clear automatically).

- `area` (optional) — The playing area, drawn as a rectangle from its top-left corner, in field units. Convert metres with the sport's scale from the system prompt (football 100 per metre, so 20 × 20 m is 2000 × 2000; basketball ~453 per metre).
- `players` — Must be at most 40 items. [] if not needed.
- `equipment` — Must be at most 60 items. [] if not needed.

### `place_formation` — Place a formation

Put a whole team on the board in a named formation — goalkeeper, numbers and
positions exactly as the app's own formation presets place them.

Use it for "set up a 4-3-3", "show our 4-4-2 against their 3-5-2", "put the
opposition in a 4-2-3-1". Give `home`, `away`, or both.
Only place a team the coach asked for: to show a move, animate the players already
there and OFFER an opposition rather than adding one.

Always prefer this to placing eleven players one by one with setup_drill: the
positions will match what the coach sees when they drag the same formation in.
Home attacks left to right on a full pitch; away is mirrored.

It ADDS players and never removes any. Names are per sport and not every sport
has presets — call describe_board to see the list for this sport. An unknown
name places nothing and the valid names are sent back.

- `home` — Formation for the home side, by name — e.g. "4-3-3". Dashes and spaces are optional. "" if not needed.
- `away` — Formation for the away side. Give both to show one lineup against another. "" if not needed.

### `place_set` — Place a saved set

Put one of the coach's saved sets from their Library on the board — a group of
players, equipment and drawings they saved earlier, with all its styling.

Use it for "add my rondo set", "drop in the corner routine I saved". describe_board
lists the Library. It lands like the app's drag-and-drop: turned to this half's
direction, centred where you say, everything kept.

- `set` — The set's name (as saved in the Library), or its id. Must be at least 1 characters, at most 80 characters.
- `at` (optional) — Where its centre goes. Default: the middle of the board.

### `move_items` — Move items

Move SPECIFIC things already on the board; everything else stays where it is.

Use it for "move the back four up 5 metres", "put the 9 on the penalty spot",
"shift the cones left". Give `by` (a shift) or `to` (a point).
A group keeps its shape. On an animated board this moves them in every frame;
to make players move BETWEEN frames use animate_board.

- `select` — Which items. Every field given must match. At least one is required.
- `by` (optional) — Shift by this much: dx right (+) / left (−), dy down (+) / up (−). Field units: see the sport's scale in the system prompt (football 100 = 1 m).
- `to` (optional) — Put them here; several items keep their shape and their centre goes to this point.

### `restyle_items` — Restyle items

Change how SPECIFIC things look or are labelled; everything else stays as it is.

Use it for "make the 7 bigger", "turn the striker to face the goal", "rename the 9 to
Ali", "hide the numbers", "swap the 6 to the away team", "make the arrows dashed".

Sizes are the app's: players S, M, L (default), XL, 2XL, 3XL; equipment small / normal /
large; or "bigger"/"smaller" for one step. On an animated board it applies to every frame.
Everything the app's edit panel has: player fill/text/border colour and border width,
line width and arrowhead or screen/handoff/shot mark, zone fill, label size and
background, and lock. Only equipment the app lets rotate can be rotated.

- `select` — Which items. Every field given must match. At least one is required.
- `size`: one of `S`, `M`, `L`, `XL`, `2XL`, `3XL`, `small`, `normal`, `large`, `bigger`, `smaller`, `unset` — Players: S–3XL (default L). Equipment: small / normal / large. "bigger"/"smaller" step one size. "unset" if not needed.
- `rotation` (optional) — Degrees. For players this is the way they face. Must be at least -360, at most 360.
- `shape`: one of `circle`, `jersey`, `jersey-basketball`, `unset` — Players only. "unset" if not needed.
- `color` — red, blue, green, yellow, white, black — the app's palette — or a hex colour. Must be matching ^(red|blue|green|yellow|white|black|#[0-9a-fA-F]{3}|#[0-9a-fA-F]{6})$. "" if not needed.
- `number` — Players only, ONE player at a time. Must be at most 2 characters. "" if not needed.
- `name` — Players only, ONE player at a time. Must be at most 12 characters. "" if not needed.
- `team`: one of `home`, `away`, `neutral`, `unset` — Players only. They take that team's colour. "unset" if not needed.
- `showNumber`: one of `true`, `false`, `unset` — "unset" if not needed.
- `showLabel`: one of `true`, `false`, `unset` — "unset" if not needed.
- `lineStyle`: one of `solid`, `dashed`, `unset` — Arrows and zones. "unset" if not needed.
- `newText` — Text labels: the new wording. Must be at least 1 characters, at most 120 characters. "" if not needed.
- `textColor` — Players: the colour of the number and name. Must be matching ^(red|blue|green|yellow|white|black|#[0-9a-fA-F]{3}|#[0-9a-fA-F]{6})$. "" if not needed.
- `borderColor` — Players: the ring round the marker. Must be matching ^(red|blue|green|yellow|white|black|#[0-9a-fA-F]{3}|#[0-9a-fA-F]{6})$. "" if not needed.
- `borderWidth`: one of `S`, `M`, `L`, `XL`, `unset` — Players: border thickness S–XL (default M). "unset" if not needed.
- `lineWidth` (optional) — Lines and zone outlines: 1 (thin) to 10 (thick), the app's slider. Must be at least 1, at most 10.
- `head`: one of `none`, `start`, `end`, `both`, `unset` — Lines: arrowhead position. Replaces any screen/handoff/shot mark. "unset" if not needed.
- `mark`: one of `screen`, `handoff`, `shot`, `none`, `unset` — Lines: a coaching end-mark instead of an arrowhead (basketball). "unset" if not needed.
- `fill` (optional) — Zones: fill colour (see-through), or "none". Text labels: the background, or "none".
- `textSize`: one of `S`, `M`, `L`, `XL`, `2XL`, `3XL`, `small`, `medium`, `large`, `xlarge`, `xxlarge`, `xxxlarge`, `unset` — Text labels: S–3XL. Below L is hard to read at board zoom. "unset" if not needed.
- `locked`: one of `true`, `false`, `unset` — Lock (or unlock) so it can't be dragged by accident. "unset" if not needed.

### `delete_items` — Delete items

Remove SPECIFIC things from the board; everything else stays.

Use it for "delete the red cone", "get rid of the ball", "remove the arrows".
More than 5 items at once asks the coach first unless they said "all".
On an animated board they are removed from every frame.

- `select` — Which items. Every field given must match. At least one is required.
- `confirmBulkDelete`: one of `true`, `false`, `unset` — Only when the coach explicitly asked to remove them all. Needed to delete more than 5 items at once. "unset" if not needed.

### `fit_drill` — Fit a drill to the players available

Fit the drill on the board to the number of players who actually turned up —
"only 4 turned up", "we're a defender short", "I've got 12 today".

Keeps what the drill trains: the ratio stays (a 4v2 fitted to four becomes 3v1, not
2v2), the players furthest from the action go first, and the area grows or shrinks so
each player keeps the same space. It reads the board itself — just give the total.

- `players` — How many players are available in total. Must be at least 1, at most 40.

### `progress_drill` — Make a drill harder or easier

Make the drill on the board harder or easier by one step — "they find it too easy",
"that's too much for them", "add a defender", "two touches max".

Levers: space (default: space), numbers, conditions. Leave the lever unset unless
the coach named one — the default is applied and the others are offered back.
For conditions, give the wording (e.g. "Two touches max").

- `direction`: one of `harder`, `easier`
- `lever`: one of `space`, `numbers`, `conditions`, `unset` — Only if the coach named one. "unset" if not needed.
- `condition` — For the conditions lever, e.g. "Two touches max". Must be at most 60 characters. "" if not needed.

### `annotate_board` — Annotate the board

Add coaching marks on top of what is already on the board: movement arrows,
highlighted zones, and text labels.

Use it for "draw the pressing arrows", "draw the pick and roll", "diagram the play",
"show it with arrows", "mark the space between their lines", "label the trigger".
This is the play DIAGRAM (static arrows): when the coach asks for a drawing, draw
every step of the described play here, players where they stand.
A player who drives or carries the ball is a drive/dribble (wavy), never a run.
A movement the coach wants to SEE (an attack, a run, an overlap, "show me how…") is
animate_board by default; use arrows for it only when they say draw, diagram, arrows,
or not animated.

Arrow kinds carry the sport's standard notation, so pick by MEANING and the
right line style follows:
  • football run: a player's run without the ball: dashed arrow
  • football pass: a pass: solid arrow
  • football dribble: carrying the ball: wavy arrow
  • football drive: a drive with the ball = a dribble: wavy arrow
  • football shot: a shot: thick solid arrow
  • basketball run: a cut (a player moving without the ball): solid arrow
  • basketball pass: a pass: dashed arrow
  • basketball dribble: a dribble: wavy arrow
  • basketball drive: a drive (attacking with the dribble): wavy arrow
  • basketball shot: a shot: line ending in the shot mark, to the basket
  • basketball screen: a screen: line ending in a bar where the screener stands
  • basketball handoff: a handoff: line ending in a double bar

  • line: a plain line; double: the app's double arrow.
  • via: a movement curves through its (middle) bend point, keeping its style; a plain line
    with via is the app's polyline (straight segments, no arrowhead).

Arrows can curve left or right. Zones are rectangles, circles or 3–10-sided polygons,
a dashed outline by default (fill only if asked; it's see-through). Labels S–3XL with a
background pill like the app's notes. canvasNotes put text OUTSIDE the board, beside it.
Colours: red, blue, green, yellow, white, black (the app's palette) or hex.

Arrow ends can be players ({player: "5"}) or {place: "basket"} / {place: "goal"}: the tool
finds them, so you needn't look coordinates up. Otherwise, coordinates are field units in the
target board's own space. Arrows shorter
than 300 units are reported back as too small to read.
Use setup_drill to place players and equipment; this tool only annotates.

- `arrows` — Must be at most 40 items. [] if not needed.
- `zones` — Must be at most 12 items. [] if not needed.
- `labels` — Must be at most 30 items. [] if not needed.
- `canvasNotes` — Free text on the canvas, OUTSIDE the board (a title, a session note), placed beside the target board. Must be at most 10 items. [] if not needed.

### `animate_board` — Animate a move

Animate a move as frames: players run and the ball travels, step by step, the
way the coach would build it with the frames timeline.

The DEFAULT whenever the coach asks to see a movement: "show me an attack movement",
"show the overlap", "how does the press move across", "animate the build-up", "play it
step by step", "make it a video". Use annotate_board (static arrows) instead only when
they ask for a drawing ("draw", "diagram", "with arrows", "a picture") or say not to
animate.

Describe each step: who moves (by number/team/name) and where — `to` an absolute
point or `by` an offset — plus `ballTo`, the player who has the ball at the end of
that step (it is placed at their feet). Curve a run left or right for overlaps and
runs in behind. Only players and the ball move; cones and goals stay put.

Frames are ADDED after any that exist; replace: true starts again from Frame 1 (e.g. to
rebuild a move after players were removed). The players must already be on the board —
set them up first with setup_drill or place_formation. Animate the players who are
there: don't add an opposing team or extra players for the move unless the coach asked;
offer them in your reply instead.

- `frames` — One entry per step of the move, in order. Added after any frames already there (unless replace). Must be at most 12 items. [] if not needed.
- `replace`: one of `true`, `false`, `unset` — Start the animation again: drop every step after Frame 1, then build these frames from Frame 1. For rebuilding a move after the team changed. "unset" if not needed.
- `editFrame` (optional) — Change where players (and the ball) are in an EXISTING frame, like dragging them there in the app. The runs into and out of that frame follow.

### `manage_frames` — Change the animation

Change a board's animation without adding moves: remove frames from the end, turn
loop or forward-then-backward on or off, and set how long frames hold.

Use it for "delete the last two frames", "make it loop", "play it back and forth",
"slow the second frame down to 3 seconds". To ADD moves, use animate_board.
Like the app: only frames at the end can be removed and the first frame always stays.

- `removeLast` (optional) — Remove this many frames from the end. Frame 1 always stays. Must be at least 1, at most 50.
- `loop`: one of `true`, `false`, `unset` — Play the animation on repeat. "unset" if not needed.
- `forwardThenBack`: one of `true`, `false`, `unset` — The app's "forward then backward": play to the end, then back to the start. "unset" if not needed.
- `frameSeconds` — How long each frame holds (frame 1 = the first), 0.1–10 s. Must be at most 50 items. [] if not needed.

### `describe_board` — Read the board

Report what is currently on the board — counts by team, the working area,
equipment, drawings, frames, and any problems a coach would notice.

Call this FIRST whenever the coach asks a question about what is already there
rather than asking for a change: "is this right for U9s?", "will this work with
12?", "what is wrong with this drill?", "give me the coaching points".
It changes nothing, so it is always safe.

Also call it before adapting a board you have not seen this turn — knowing what
is there beats guessing.

The `issues` list is already checked for you: equipment hidden behind players,
overlapping players, anything off the board, and text or lines too small to read.
Answer the coach's question; do not silently start fixing things.

- `allBoards`: one of `true`, `false`, `unset` — Summarise every board in the play — use this for a whole session. "unset" if not needed.
- `detail`: one of `true`, `false`, `unset` — Include every item with ALL its properties (players, equipment, lines, zones, text, canvas notes), the frames and the board's settings. Use it before editing specific items, and straight away when you'll move or animate players (it has their positions; the summary doesn't); it is a larger response. "unset" if not needed.
- `catalogue`: one of `true`, `false`, `unset` — Include what this sport's boards CAN have: every template, rule-set, surface, player/equipment/line/text property and its allowed values, formations, animation controls. "unset" if not needed.

### `arrange_board` — Tidy up the board

Fix how the board READS without changing what the drill trains. Positions
move; nothing is added or removed.

Use it for "they are all bunched up", "that cone is hidden under a player",
"spread the midfield out", "this looks a mess".

It works the board out for itself — no coordinates needed. Equipment is moved
away from players rather than the other way round, because where a coach put a
player is the point of the drill, whereas a ball drawn underneath one is just a
mistake.

It reports honestly when a board is simply too crowded to fix by spacing alone;
in that case the area needs to grow, which is fit_drill or progress_drill.
Nothing to fix means no changes at all — it will not invent work.

- `action`: one of `declutter`, `spread`, `unset` — declutter: separate overlapping players and lift equipment out from under them. spread: push players further apart on purpose, for "give them more room". "unset" if not needed.
- `factor` (optional) — For spread only. Above 1 spreads out, below 1 draws in. Default 1.2. Must be at least 0.5, at most 3.
- `ids` — For spread only: limit it to these elements. Omit to spread all players. Must be at most 60 items. [] if not needed.

### `set_board_config` — Change the board setup

Change the board itself, exactly as the app's board settings do: name, orientation,
full / half / plain shape, which way a half faces, rule-set markings (basketball),
surface pattern, background, line colour and thickness, team colours.

Behaves like the app:
  • name, orientation, rule-set, pattern, colours, markings: safe. Orientation is a
    display rotation only; coordinates never move.
  • turning a half (halfRotation) carries everything on it round with it.
  • switching shape family (full ↔ half ↔ plain, or plain shape) CLEARS the board —
    players, drawings, frames — so on a board with content it asks the coach first.

- `name` — Must be at most 60 characters. "" if not needed.
- `orientation`: one of `horizontal`, `vertical`, `unset` — Display rotation only — always safe, element coordinates never change. "unset" if not needed.
- `extent`: one of `full`, `half`, `unset` — Full or half pitch/court. Switching clears the board (as the app does), so it asks first. "unset" if not needed.
- `halfRotation` (optional) — Which way a half faces (0 right, 90 down, 180 left, 270 up). Turning a half carries everything on it round with it.
- `boardKind`: one of `pitch`, `plain`, `unset` — pitch/court with markings, or a plain board. Switching clears the board, so it asks first. "unset" if not needed.
- `plainShape`: one of `rectangle`, `rectangle-v`, `square`, `unset` — For plain boards. Switching clears the board, so it asks first. "unset" if not needed.
- `showPitchMarkings`: one of `true`, `false`, `unset` — The app always shows markings on a pitch/court; only hide them if asked. "unset" if not needed.
- `markingVariant` — The rule-set whose markings the court shows (basketball: fiba, nba, ncaa, wnba, euroleague, highschool). describe_board lists them. Must be at most 40 characters. "" if not needed.
- `surface` — Surface texture (football: stripes, checks, circles; basketball: planks, walnut, parquet) or "none". describe_board lists them. Must be at most 40 characters. "" if not needed.
- `backgroundColor` — red, blue, green, yellow, white, black — the app's palette — or a hex colour. Must be matching ^(red|blue|green|yellow|white|black|#[0-9a-fA-F]{3}|#[0-9a-fA-F]{6})$. "" if not needed.
- `markingsColor` — Colour of the pitch/court lines. Must be matching ^(red|blue|green|yellow|white|black|#[0-9a-fA-F]{3}|#[0-9a-fA-F]{6})$. "" if not needed.
- `markingsWidth`: one of `Thin`, `Normal`, `Thick`, `XL`, `unset` — Thickness of the pitch/court lines. "unset" if not needed.
- `homeTeamColor` — Also recolours every home player, as the app does. Must be matching ^(red|blue|green|yellow|white|black|#[0-9a-fA-F]{3}|#[0-9a-fA-F]{6})$. "" if not needed.
- `awayTeamColor` — Also recolours every away player. Must be matching ^(red|blue|green|yellow|white|black|#[0-9a-fA-F]{3}|#[0-9a-fA-F]{6})$. "" if not needed.
- `confirmReset`: one of `true`, `false`, `unset` — Only when the coach has explicitly accepted that switching the shape clears the board. Never set it on your own initiative. "unset" if not needed.

### `manage_boards` — Add, copy or remove boards

Add, duplicate, move or remove whole boards on the canvas. A session is usually
several boards — warm-up, main practice, game.

Use it for "give me three boards: warm-up, main and game", "add a half-pitch board",
"copy this board so I can show the next step", "put the game board to the right",
"delete the empty board".

New boards use the app's templates (full, half facing a direction, plain shapes) and
land where the app's own + board would put them. Each board has its own AI chat: this
conversation only builds on its own board, so tell the coach to open the new board
to fill it. A play holds at most 12 boards and always keeps one. Removing a
board that has content needs the coach's explicit agreement. To change a board's
shape or colours use set_board_config.

- `action`: one of `add`, `duplicate`, `remove`, `move`
- `names` — add: one new board per name, e.g. ["Warm-up", "Main", "Game"]. Omit to add one "Board N". Must be at most 12 items. [] if not needed.
- `shape`: one of `pitch-h`, `pitch-v`, `half-right`, `half-left`, `half-up`, `half-down`, `plain-rect`, `plain-rect-v`, `plain-square`, `unset` — add: the app's board templates — pitch-h / pitch-v (full, horizontal / vertical), half-right / half-left / half-up / half-down (half, facing that way), plain-rect / plain-rect-v / plain-square. Default pitch-h. "unset" if not needed.
- `boardId` — duplicate/remove/move: which board. duplicate and move default to the active one; remove must name it. "" if not needed.
- `nextTo` — move: the board to put it beside. "" if not needed.
- `side`: one of `left`, `right`, `above`, `below`, `unset` — move: which side of `nextTo`. Default right. "unset" if not needed.
- `name` — duplicate: the copy's name. Default "<name> copy". Must be at least 1 characters, at most 60 characters. "" if not needed.
- `confirmRemove`: one of `true`, `false`, `unset` — remove: only when the coach explicitly agreed to lose a board that has things on it. "unset" if not needed.

### `search_drills` — Find a drill

Search the coaching library for drills that fit what the coach has and what
they want to work on. Returns short summaries — call get_drill for the full
record once you have chosen one.

Use it when the coach asks WHAT to run rather than telling you: "what should I
do for finishing?", "I've got 10 players and want to work on pressing",
"something like a rondo but easier".

Player count and missing equipment are hard filters, not preferences: a drill
needing twelve players is not a worse answer for a coach with six, it is not an
answer at all.

Do NOT call this when the coach has already told you what to build — "set up a
4v2 rondo in a 20 by 20" is an instruction, and searching first just costs a
round trip. Do not call it for edits to a board that already exists.

- `text` — What the coach asked for, in their words — e.g. "something like piggy in the middle". Must be at most 200 characters. "" if not needed.
- `themes` — What the drill should train. Must be at most 4 items. [] if not needed.
- `ageBand`: one of `u6-u8`, `u9-u10`, `u11-u12`, `u13-u14`, `u15-u16`, `adult`, `unset` — "unset" if not needed.
- `players` (optional) — How many players the coach actually has. Drills that cannot take that number are excluded outright. Must be at least 1, at most 40.
- `without` — Equipment the coach does NOT have, e.g. ["cones","bibs"]. Drills needing it are excluded. Must be at most 6 items. [] if not needed.
- `limit` (optional) — Must be at least 1, at most 10.

### `get_drill` — Read a drill in full

Fetch the complete record for one drill: setup, coaching points, progressions,
regressions, area and player range.

Call it after search_drills, with the id from the summary, once you have chosen
which drill to run. Use the record's own area and player numbers when you build
it, rather than inventing your own.

Then BUILD it with setup_drill. Reading a record out to the coach leaves them
with an empty board, which is not what they asked for.

The coaching points are the part worth passing on to the coach — they are what
makes it a drill rather than a diagram.

- `id` — The drill id from a search result, e.g. "rondo-4v2".

### `get_methodology` — Look up coaching guidance

Look up how to coach, as opposed to what to run: session structure, what suits
an age group, how to progress or regress a drill, how big an area should be,
work and rest, and coaching without equipment.

Use it whenever the coach asks a "how should I..." or "is this right for..."
question about method rather than about the board. Answer from what comes back,
not from your own opinion — the guidance is reviewed by a coach and your opinion
is not.

It changes nothing on the board, so it is always safe to call.

- `topic`: one of `session-design`, `age-appropriate`, `progression`, `coaching-style`, `load`, `unset` — "unset" if not needed.
- `ageBand`: one of `u6-u8`, `u9-u10`, `u11-u12`, `u13-u14`, `u15-u16`, `adult`, `unset` — "unset" if not needed.
- `text` — What the coach asked, in their words. Must be at most 200 characters. "" if not needed.
- `limit` (optional) — Must be at least 1, at most 6.
