Tool tree
gradeNot graded
get_playbookAnswer
List Fieldcraft plays, selected play, revisions, and active coach-review status. Use before reading or changing a play.
View tool JSON
{
"name": "get_playbook",
"kind": "answer",
"impl": "imperative",
"description": "List Fieldcraft plays, selected play, revisions, and active coach-review status. Use before reading or changing a play.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}get_playAnswer
Read one bounded section of a current play or staged proposal. Use filters and cursor to inspect exact players or assignments.
View tool JSON
{
"name": "get_play",
"kind": "answer",
"impl": "imperative",
"description": "Read one bounded section of a current play or staged proposal. Use filters and cursor to inspect exact players or assignments.",
"inputSchema": {
"type": "object",
"properties": {
"playId": {
"type": "string",
"description": "Play ID from get_playbook."
},
"section": {
"enum": [
"summary",
"players",
"assignments"
]
},
"source": {
"enum": [
"current",
"proposal"
],
"default": "current"
},
"team": {
"enum": [
"offense",
"defense"
]
},
"playerIds": {
"type": "array",
"maxItems": 22,
"items": {
"type": "string"
}
},
"cursor": {
"type": "integer",
"minimum": 0,
"default": 0
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 4,
"default": 3
}
},
"required": [
"playId",
"section"
],
"additionalProperties": false
}
}analyze_playAction
Run deterministic spatial and timing checks for run, pass, protection, or all concepts. Results are risks, not outcome predictions.
View tool JSON
{
"name": "analyze_play",
"kind": "act",
"impl": "imperative",
"description": "Run deterministic spatial and timing checks for run, pass, protection, or all concepts. Results are risks, not outcome predictions.",
"inputSchema": {
"type": "object",
"properties": {
"playId": {
"type": "string",
"description": "Play ID from get_playbook."
},
"focus": {
"enum": [
"all",
"run",
"pass",
"protection"
],
"default": "all"
},
"source": {
"enum": [
"current",
"proposal"
],
"default": "current"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 8,
"default": 8
}
},
"required": [
"playId"
],
"additionalProperties": false
}
}focus_findingAction
Recompute one finding, scrub to its worst moment, select the involved players, and show a temporary field overlay. Does not edit the play.
View tool JSON
{
"name": "focus_finding",
"kind": "act",
"impl": "imperative",
"description": "Recompute one finding, scrub to its worst moment, select the involved players, and show a temporary field overlay. Does not edit the play.",
"inputSchema": {
"type": "object",
"properties": {
"playId": {
"type": "string"
},
"findingId": {
"type": "string"
}
},
"required": [
"playId",
"findingId"
],
"additionalProperties": false
}
}stage_play_changesAction
Validate up to 12 edits and open a reversible Before/After coach review. This never changes the saved playbook; variations preview a renamed duplicate.
View tool JSON
{
"name": "stage_play_changes",
"kind": "act",
"impl": "imperative",
"description": "Validate up to 12 edits and open a reversible Before/After coach review. This never changes the saved playbook; variations preview a renamed duplicate.",
"inputSchema": {
"type": "object",
"properties": {
"basePlayId": {
"type": "string",
"description": "Exact base play ID."
},
"baseUpdatedAt": {
"type": "string",
"description": "Exact revision from get_playbook or get_play."
},
"mode": {
"enum": [
"edit",
"variation"
]
},
"name": {
"type": "string",
"maxLength": 60,
"description": "Required new name for variation mode."
},
"rationale": {
"type": "string",
"minLength": 1,
"maxLength": 500
},
"targetFindingId": {
"type": "string",
"description": "Optional finding this proposal repairs."
},
"changes": {
"type": "array",
"minItems": 1,
"maxItems": 12,
"items": {
"oneOf": [
{
"type": "object",
"properties": {
"type": {
"const": "move_player"
},
"playerId": {
"type": "string",
"description": "Exact player ID from get_play players."
},
"to": {
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": 0,
"maximum": 40,
"description": "Yards downfield in the 40-yard window."
},
"y": {
"type": "number",
"minimum": 0,
"maximum": 53.3,
"description": "Yards across the 53.3-yard field."
}
},
"required": [
"x",
"y"
],
"additionalProperties": false
}
},
"required": [
"type",
"playerId",
"to"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"const": "apply_preset"
},
"playerId": {
"type": "string",
"description": "Exact player ID from get_play players."
},
"kind": {
"enum": [
"route",
"run",
"block",
"motion",
"rush",
"drop",
"blitz",
"man"
]
},
"preset": {
"enum": [
"go",
"slant",
"post",
"corner",
"out",
"curl",
"flat",
"drag",
"wheel",
"block",
"rush",
"drop"
],
"description": "Fieldcraft route or movement preset."
},
"startTime": {
"type": "number",
"minimum": 0
},
"duration": {
"type": "number",
"minimum": 0.05
},
"depth": {
"type": "number",
"minimum": -20,
"maximum": 25
},
"targetPlayerId": {
"type": "string"
},
"technique": {
"type": "string",
"maxLength": 40
},
"color": {
"enum": [
"orange",
"blue",
"yellow",
"coral",
"bone",
"olive"
]
}
},
"required": [
"type",
"playerId",
"preset",
"kind"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"const": "set_assignment"
},
"playerId": {
"type": "string",
"description": "Exact player ID from get_play players."
},
"kind": {
"enum": [
"route",
"run",
"block",
"motion",
"rush",
"drop",
"blitz",
"man"
]
},
"segments": {
"type": "array",
"minItems": 1,
"maxItems": 6,
"items": {
"oneOf": [
{
"type": "object",
"properties": {
"type": {
"const": "line"
},
"to": {
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": 0,
"maximum": 40,
"description": "Yards downfield in the 40-yard window."
},
"y": {
"type": "number",
"minimum": 0,
"maximum": 53.3,
"description": "Yards across the 53.3-yard field."
}
},
"required": [
"x",
"y"
],
"additionalProperties": false
}
},
"required": [
"type",
"to"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"const": "curve"
},
"control": {
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": 0,
"maximum": 40,
"description": "Yards downfield in the 40-yard window."
},
"y": {
"type": "number",
"minimum": 0,
"maximum": 53.3,
"description": "Yards across the 53.3-yard field."
}
},
"required": [
"x",
"y"
],
"additionalProperties": false
},
"to": {
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": 0,
"maximum": 40,
"description": "Yards downfield in the 40-yard window."
},
"y": {
"type": "number",
"minimum": 0,
"maximum": 53.3,
"description": "Yards across the 53.3-yard field."
}
},
"required": [
"x",
"y"
],
"additionalProperties": false
}
},
"required": [
"type",
"control",
"to"
],
"additionalProperties": false
}
]
}
},
"color": {
"enum": [
"orange",
"blue",
"yellow",
"coral",
"bone",
"olive"
]
},
"startTime": {
"type": "number",
"minimum": 0
},
"duration": {
"type": "number",
"minimum": 0.05
},
"targetPlayerId": {
"type": "string"
},
"preset": {
"type": "string",
"maxLength": 30
},
"technique": {
"type": "string",
"maxLength": 40
}
},
"required": [
"type",
"playerId",
"kind",
"segments",
"color",
"startTime",
"duration"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"const": "retime_assignment"
},
"playerId": {
"type": "string",
"description": "Exact player ID from get_play players."
},
"startTime": {
"type": "number",
"minimum": 0
},
"duration": {
"type": "number",
"minimum": 0.05
}
},
"required": [
"type",
"playerId"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"const": "remove_assignment"
},
"playerId": {
"type": "string",
"description": "Exact player ID from get_play players."
}
},
"required": [
"type",
"playerId"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"const": "rename_play"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 60
}
},
"required": [
"type",
"name"
],
"additionalProperties": false
}
]
}
}
},
"required": [
"basePlayId",
"baseUpdatedAt",
"mode",
"rationale",
"changes"
],
"additionalProperties": false
}
}commit_play_changesAction
Apply the active reviewed proposal atomically. Invoke only after the coach explicitly confirms the visible Before/After proposal; never infer confirmation.
View tool JSON
{
"name": "commit_play_changes",
"kind": "act",
"impl": "imperative",
"description": "Apply the active reviewed proposal atomically. Invoke only after the coach explicitly confirms the visible Before/After proposal; never infer confirmation.",
"inputSchema": {
"type": "object",
"properties": {
"proposalId": {
"type": "string",
"description": "Active proposal ID returned by stage_play_changes."
}
},
"required": [
"proposalId"
],
"additionalProperties": false
}
}discard_play_changesAction
Discard the active staged coach review without changing the saved playbook.
View tool JSON
{
"name": "discard_play_changes",
"kind": "act",
"impl": "imperative",
"description": "Discard the active staged coach review without changing the saved playbook.",
"inputSchema": {
"type": "object",
"properties": {
"proposalId": {
"type": "string",
"description": "Active proposal ID returned by stage_play_changes."
}
},
"required": [
"proposalId"
],
"additionalProperties": false
}
}