Skip to main content
Glama
DanielTomaro13

sportsdata-mcp

ufc_athlete_stats

Read-onlyIdempotent

Retrieve all-time UFC leaderboards for FightMetric stats like significant strikes, takedowns, and wins. Sort by any stat to rank fighters across the league.

Instructions

League-wide FightMetric statistics, sortable — the all-time leaderboards. For ONE fighter's stats use ufc_athlete instead; this collection cannot be filtered.

Returns: {data:[{attributes:{drupal_internal__fightmetric_id, career_fights, career_wins, career_losses, career_draws, career_no_contest, win_ko, win_sub, win_dec, first_rd_fin, title_def, win_streak, former_champion, avg_fight_time (SECONDS), total_bonuses, total_performance_night, total_fight_night, sig_strikes_landed, sig_strikes_attempted, sig_strikes_accuracy, stand_str_land, stand_str_att, clinch_str_land, clinch_str_att, ground_str_land, ground_str_att, head_str_land, head_str_att, body_str_land, body_str_att, leg_str_land, leg_str_att, takedowns_landed, takedowns_attempted, takedown_acuracy, takedown_defense, takedown_average, submission_average, knockdown_average, sig_str_land_min, sig_str_abs_min, sig_str_def}}]} — NOTE takedown_acuracy is spelled that way UPSTREAM (one 'c'); percentages and per-minute rates are STRINGS; avg_fight_time is seconds; the *_average fields are per-15-minutes, which is the standard MMA convention.

WARNING: this collection CANNOT be filtered — filter[fightmetric_id] returns 0 rows rather than an error, even for an id present on page 1 (verified). To get one fighter, call ufc_athlete, which resolves the same record through include and DOES work. Sorting works fine, which is what makes this the leaderboard tool.

Example: All-time significant-strike leaders {"sort": "-sig_strikes_landed", "limit": 10}

Auth: none needed.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
sortNoSort field, '-' descends. This is how you build a leaderboard: '-sig_strikes_landed', '-takedowns_landed', '-career_wins', '-win_ko', '-title_def'. VERIFIED to sort correctly.-sig_strikes_landed
limitNoRows per page (max 50).
offsetNoRows to skip.
Behavior5/5

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

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, covering the safety profile. The description adds crucial behavioral facts: the filter parameter returns 0 rows instead of an error (verified), sorting is confirmed to work, and data quirks are documented (e.g., the `takedown_acuracy` misspelling, percentages/rates as strings, `avg_fight_time` in seconds, and per-15-minute averaging convention). This goes far beyond the annotations and prevents misuse.

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 lengthy but well-structured into distinct segments: purpose/alternative, return payload, caveats, example, and auth. The inline return schema is dense but necessary since there is no output schema. Each sentence serves a purpose, and key warnings are front-loaded. It is not as short as the ideal TDQS 4.3 example, but the density is justified by the tool's complexity.

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?

Given the tool's complexity and the absence of an output schema, the description is remarkably complete. It specifies the full return structure with all attribute names, explains non-obvious unit conversions and string formatting, documents the filter failure mode, names the working alternative, and provides an example call. The auth requirement is also stated. This is more than sufficient for an agent to invoke the tool correctly.

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% and each parameter has a description, so the baseline is 3. The description adds value beyond the schema by providing a concrete example (`{"sort": "-sig_strikes_landed", "limit": 10}`), listing verified sort fields, and explaining that `sort` is how you build a leaderboard. This practical invocation guidance helps the agent select and construct parameters correctly.

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

Purpose4/5

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

The description opens with "League-wide FightMetric statistics, sortable — the all-time leaderboards," which clearly identifies the resource as league-wide all-time stats. It lacks an explicit retrieval verb like "list" or "get," but the Returns block and the guidance to use ufc_athlete for a single fighter make the tool's purpose unambiguous. It also distinguishes from the sibling ufc_athlete by scope.

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?

The description explicitly states when not to use this tool: "this collection cannot be filtered" and directs users to ufc_athlete for single-fighter stats, even noting that ufc_athlete resolves the same record through `include` and "DOES work." It also clarifies that sorting works, which is the intended leaderboard use case, and provides a concrete example.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/DanielTomaro13/sportsdata-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server