Skip to main content
Glama
HPotty36

baseball-stats-mcp

by HPotty36

Player season stats

baseball_player_stats
Read-onlyIdempotent

Retrieve a player's regular-season hitting or pitching line and sabermetric rates, including AVG, OBP, SLG, OPS, ERA, FIP, WHIP, K%, and BABIP.

Instructions

Get one player's regular-season line plus computed sabermetric rates.

Hitting returns AVG/OBP/SLG/OPS, ISO, BABIP, BB%, K%, BB/K. Pitching returns ERA, FIP, ERA-FIP, WHIP, K%, BB%, K-BB%, BABIP, LOB%, HR/9 (FIP uses a league constant computed from that season's league totals). Use baseball_pitcher_luck_check for an ERA-vs-FIP read.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
teamNoOptional team filter to disambiguate same-name players.
groupNo'hitting' or 'pitching'.hitting
formatNo'markdown' (default) or 'json'.markdown
leagueNoWhich league's data to use.MLB
playerYesMLB: English name or numeric MLB id. KBO: Korean name as in the CSV.
seasonNoSeason year. Default: current MLB season / latest KBO file.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), so the bar is lower, and the description adds real context: it details the computed metrics per group and discloses that FIP relies on a league constant derived from that season's league totals. It stops short of noting edge cases such as ambiguous or missing players.

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?

Front-loads the core purpose in one sentence, then lists the returned metrics per group. The metric enumeration is dense but serves the caller; it could be trimmed slightly since an output schema exists, but nothing is padding.

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

Completeness5/5

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

For a 6-parameter lookup tool with full schema coverage, annotations, and an output schema, the description covers purpose, routing, and result shape completely. An agent has everything needed to call it correctly without opening the schema.

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 description coverage is 100%, so the baseline is a 3, but the description adds meaning by tying the 'group' parameter to two distinct output shapes (hitting vs pitching metrics) and by explaining the derivation of FIP. That is genuine value beyond the enum labels in the schema.

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?

States a specific verb and resource ('Get one player's regular-season line plus computed sabermetric rates') and enumerates the exact metrics returned for each group, so an agent knows precisely what the tool produces. It also distinguishes itself from a named sibling (baseball_pitcher_luck_check), so it is not confused with the other baseball tools.

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?

Explicitly routes one case to an alternative: 'Use baseball_pitcher_luck_check for an ERA-vs-FIP read.' That is clear context for a specific scenario, but there is no broader when-to-use statement versus siblings like baseball_leaderboard or mlb_search_players, and no explicit exclusions.

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