Skip to main content
Glama
Volleymetrics MCP Server

Volleymetrics MCP Server

by onnobos

List Team Volleyball Matches

list_volleyball_matches
Read-onlyIdempotent

Discover recent volleyball matches and retrieve match IDs, dates, opponents, set scores, results, and DataVolley availability so you can pass a valid match ID to analytics and export tools.

Instructions

List recent volleyball match schedules, opponent names, set scores, and DataVolley (.dvw) availability for a team, serving as the primary match discovery step before calling get_match_player_stats, get_rotation_breakdown, get_game_actions, or download_match_dvw.

When to Use

  • Discover valid match_id identifiers (e.g. '771842') required by all match-level analytics and export tools.

  • Review season win/loss records, set scores, match dates, opponent names, and whether video breakdown (.dvw) tagging is complete.

When NOT to Use

  • Do NOT use to retrieve athlete box scores or hitting percentages; pass a discovered match_id to get_match_player_stats.

  • Do NOT use to evaluate P1–P6 sideout or point-scoring percentages; pass match_id to get_rotation_breakdown.

  • Do NOT use to inspect individual rally touches; pass match_id to get_game_actions.

Behavioral Guarantees & Caching

  • Execution Contract: Strictly read-only, idempotent HTTPS GET query.

  • Auto-Resolution: When team_id is None, resolves the active team from ~/.volleymetrics_mcp/auth_state.json, .env, or the user profile endpoint.

  • Caching Policy: Cached on local disk for 15 minutes (900s). Set force_refresh=True when checking if a newly uploaded match has finished processing.

  • Rate Limiting: Client token bucket (2 req/s, burst 4) with automatic retry on HTTP 429/5xx.

Parameter & Workflow Semantics

  • Only matches where has_dvw (DVW Ready) is True contain full play-by-play event tags for get_game_actions, get_rotation_breakdown, and download_match_dvw.

  • Increase limit (up to 50) when aggregating full-season trends across all matches.

Returns & Error States

  • 'markdown': Markdown table with columns Match ID, Date, Opponent, Result, Set Scores, Season, and DVW Ready.

  • 'compact': JSON object {"team_id": str, "count": int, "matches": [{"match_id": str, "date": str, "opponent": str, "result": str, "sets": [str], "season": str, "has_dvw": bool}]}.

  • Returns ⚠️ Authentication Error on HTTP 401/403 (recover via login_to_volleymetrics).

Input Schema

NameRequiredDescriptionDefault
limitNoMaximum number of recent matches to return, ordered most-recent first (1 to 50).
team_idNoVolleymetrics team identifier (obtainable via get_user_teams). When omitted or None, automatically resolves to the authenticated user's active team ID.
force_refreshNoWhen True, bypasses the 15-minute local disk cache and fetches live match schedules from Volleymetrics.
output_formatNoResponse representation format: 'markdown' returns a match schedule table; 'compact' returns a token-efficient JSON object for programmatic match_id extraction.markdown

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the 'strictly read-only, idempotent GET' line largely restates structured data. The description does add genuine context beyond annotations: the 15-minute disk cache and when to bypass it, team auto-resolution order, a 2 req/s token bucket with retry on 429/5xx, and the exact 401/403 recovery path via login_to_volleymetrics. The overlap with annotations keeps this from a 5.

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 description is long but strongly front-loaded and uses section headers, so an agent can scan to the needed block. It is slightly padded by restating the read-only/idempotent contract that annotations already carry, which is wasted space rather than harmful.

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?

There is no output schema, yet the description fully enumerates both return representations including column names and the exact compact JSON keys. Combined with caching, rate limits, auth failure handling, and the downstream dependency on has_dvw, an agent has everything needed to call this correctly and interpret the result.

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 100%, so the baseline is 3 and the schema already documents limit, team_id, force_refresh, and output_format. The description still adds cross-parameter meaning the schema lacks: that has_dvw must be True for downstream action-level tools to work, that limit can be raised to 50 for full-season aggregation, and the concrete shape of each output_format value. That is useful semantics layered on top of complete schema descriptions.

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 opens with a specific verb and resource ('List recent volleyball match schedules, opponent names, set scores, and DataVolley availability for a team') and explicitly positions itself as 'the primary match discovery step' before the analytics siblings. An agent can distinguish it from get_match_player_stats, get_rotation_breakdown, get_game_actions, and download_match_dvw without opening any 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?

Dedicated 'When to Use' and 'When NOT to Use' sections name each alternative sibling and the exact condition that routes to it (box scores, rotation sideout percentages, rally touches). It also states the dependency contract: all those tools require a match_id discovered here.

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