Skip to main content
Glama

FastballAPI

Spray chart

get_spray_chart
Read-onlyIdempotent

Use for where a batter or team hits the ball: balls in play by trajectory (ground ball, line drive, fly ball, pop-up) and by field (left, center, right), with hit rates; include_balls adds each ball's location for drawing. Counts the regular season and postseason together unless season_type says otherwise (get_player's batting line is the regular season alone). Costs 10 credits.

Input Schema

NameRequiredDescriptionDefault
teamNo
seasonNoSeason (a year; default: the latest; ignored with game_id).
batter_idNo
season_typeNoregular, postseason, or all (default): which games' balls in play to count.
include_ballsNoAdd each ball in play's x/y (up to 3,000).

Output Schema

NameRequiredDescriptionDefault
ballsNo
seasonYes
by_fieldYes
balls_noteNo
balls_in_playYes
by_trajectoryYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / season_type
      Added value: +{
      +  "description": "regular, postseason, or all (default): which games' balls in play to count.",
      +  "enum": [
      +    "regular",
      +    "postseason",
      +    "all"
      +  ],
      +  "type": "string"
      +}
  2. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare safe read-only, idempotent, non-destructive behavior, and the description adds valuable context beyond them: the 10-credit cost, regular-plus-postseason aggregation default, and how season_type changes that. There is no contradiction with annotations.

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

Conciseness5/5

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

The description is front-loaded with the use case and output dimensions, then adds only essential behavioral details about aggregation and cost. There is no filler, and the parenthetical comparison to get_player is useful rather than distracting.

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 an output schema and rich annotations present, the description covers the key invocation context: purpose, output dimensions, include_balls behavior, season aggregation, and credit cost. The main remaining gap is that it does not clarify whether team and batter_id are alternatives, whether either is required, or what happens if both are supplied.

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

Parameters4/5

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

Schema coverage is 60%, so the description must add meaning, and it does: include_balls is explained as adding each ball's location for drawing, and season_type is tied to regular/postseason/all aggregation. It still leaves team and batter_id with little semantic clarification beyond "batter or team."

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 states a specific resource and output: balls in play for a batter or team, broken down by trajectory and field with hit rates. It also distinguishes the tool from get_player's regular-season-only batting line, so an agent can identify its role among siblings.

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

Usage Guidelines4/5

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

It gives a clear use case ("Use for where a batter or team hits the ball") and explains the include_balls drawing option and season aggregation. It names get_player as a contrast for season scope, but does not explicitly rule out adjacent sibling tools such as get_pitches or get_plate_appearances.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.