Skip to main content
Glama

Score a goal

score_goal
Destructive

Drive a VEX AIM robot to autonomously score a soccer goal: locate ball and goal, dribble into position, kick with measured strength, then retreat.

Instructions

Score by itself from anywhere: fetch the ball if the camera sees it elsewhere, find the goal (two barrels of the team's colour, from the map or by looking around), dribble closer if no measured kick would score from here, line up between the posts, kick with the gentlest measured strength that scores, and back away. Only uses kick strengths measured with test_kick; with none, it dribbles to 30 cm and kicks soft. shoot_at_goal instead kicks from where the robot stands. Make sure nobody is near the goal.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
goalNoteam
speed_percentNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and openWorldHint=false, but the description adds substantial behavior: it is a multi-step autonomous routine, it sources the goal from the map or by looking around, its kick strength depends on prior test_kick measurements, and it degrades to dribbling to 30 cm plus a soft kick when none exist. These side effects and fallbacks are not derivable from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The routine is front-loaded as a single sequence of actions and each clause carries operational content, so the length is justified by the tool's complexity. A few phrasings are slightly verbose but nothing is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return-behavior burden and describes the multi-step process and fallback well; annotations cover the safety profile. The main gap is the absence of any coverage of the two input parameters, which is the one thing an agent must still resolve from the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for two parameters, so the description must carry the semantics and largely does not. It never explains the 'goal' enum values (team/blue/orange) or the default, and speed_percent is only obliquely echoed by 'gentlest measured strength' with no reference to the 5-100 range. The agent is left to infer parameter meaning from the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description lays out the full autonomous routine with concrete verbs (fetch, find, dribble, line up, kick, back away) rather than restating the name. It is unmistakably distinct from the sibling shoot_at_goal, which it explicitly contrasts. An agent knows exactly what this tool accomplishes without reading the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It names the alternative (shoot_at_goal) and the condition that separates them ('instead kicks from where the robot stands'), discloses the dependency on test_kick measurements and the fallback when none exist, and states a precondition ('Make sure nobody is near the goal'). When-to-use, when-not, and prerequisites are all covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.