Skip to main content
Glama
chrischall

maxpreps-mcp

by chrischall

maxpreps-mcp

MCP server for MaxPreps — read any US high school's team schedules, scores, records, rosters, stat leaders and athlete careers.

Developed and maintained by AI (Claude Code). Use at your own discretion.

No account, no API key, no browser extension. MaxPreps serves its pages with Next.js, and every public page has a companion JSON route carrying the same data the page was rendered from. This server reads those routes directly over plain HTTPS, so it works anywhere Node runs.

Install

npx maxpreps-mcp

Or add it to an MCP host:

{
  "mcpServers": {
    "maxpreps": {
      "command": "npx",
      "args": ["-y", "maxpreps-mcp"]
    }
  }
}

Related MCP server: College Basketball Stats MCP Server

Tools

All fifteen are read-only; this server has no write path.

Tool

What it does

maxpreps_search

Find a school or athlete by name — start here

maxpreps_list_teams

Every team path a school publishes, with sport/gender/level

maxpreps_get_school

School profile, identifiers, association, nearby schools

maxpreps_get_team

Season record, standings, rankings, and available seasons

maxpreps_get_schedule

Games with results and scores, plus a computed record

maxpreps_get_roster

Players with jersey, class, positions, height, weight

maxpreps_get_stat_leaders

Statistical leaders with qualifying minimums

maxpreps_get_rankings

Ranked leaderboard for a sport, national or by state

maxpreps_get_team_rankings

Where one team ranks nationally, by state, division, metro

maxpreps_get_standings

Conference table with every team's record

maxpreps_list_stat_categories

Which stat leaderboards exist, and their paths

maxpreps_get_stat_leaderboard

Ranked athletes for one stat, statewide or national

maxpreps_get_athlete

One athlete's career page

maxpreps_healthcheck

Connectivity plus site build-id resolution

maxpreps_get_page

Raw page data for anything the above doesn't cover

Typical flow

Paths are not guessable, so resolve before you fetch:

  1. maxpreps_search "myers park" → the school's canonicalUrl

  2. maxpreps_list_teams on that path → real team paths

  3. maxpreps_get_schedule / _roster / _stat_leaders / _standings on a team path

To go the other way — discovering teams and athletes rather than looking one up — maxpreps_get_rankings and maxpreps_get_stat_leaderboard return ranked lists whose entries each carry a teamPath you can feed straight back in. Stat leaderboard paths are not guessable either, so list the categories first.

Prior seasons are a season argument ("25-26"); roughly 20 years are available.

Configuration

Everything is optional — the server works with no configuration at all.

Variable

Default

Purpose

MAXPREPS_USER_AGENT

built-in

Override the User-Agent sent to MaxPreps

MAXPREPS_CACHE_TTL

300

Seconds to reuse a fetched page; 0 disables

MAXPREPS_MIN_INTERVAL_MS

250

Minimum spacing between requests

MAXPREPS_TIMEOUT_MS

20000

Per-request timeout

Things worth knowing

These are properties of MaxPreps' data, and each one has bitten a naive reading:

  • Scores are winner-first in the raw data. MaxPreps renders a loss as "L 20-13" even when the team scored 13. The teamScore / opponentScore fields this server returns are always oriented team-vs-opponent.

  • Rosters and schedules carry hidden rows. A meaningful minority are flagged deleted and the site does not render them — the 2025-26 Myers Park football roster has 87 entries behind 63 visible players. They are excluded by default.

  • An out-of-season team is not a broken one. Before opening day the current season legitimately has an empty roster and no results; ask for a prior season.

  • Search is literal. "myers park" finds the school; "myers park high" finds nothing. Drop qualifiers before concluding a school is absent.

  • Statewide scoreboards aren't available. /<st>/<sport>/scores/ renders its game list client-side from a route that has no server-rendered payload. Per-team schedules are the supported way to get scores; maxpreps_get_rankings is the way to see a whole state's teams at once.

Shell-only alternative

The repo also ships a maxpreps skill (skills/maxpreps/) that reaches the same data through curl + a small decoder, with no server to run. If you only ever use Claude Code on one machine, the skill alone may be all you need; the MCP server is what makes this reachable from claude.ai, a phone, or any other client.

Development

npm install
npm run build
npm test

docs/MAXPREPS-API.md pins the captured request/response shapes, the positional key maps, and how to re-derive them if MaxPreps changes its bundle.

Etiquette

This reads an undocumented surface on someone else's site on behalf of one user. Requests are spaced and responses cached by default. Please keep it that way.

License

MIT

Available Tools

15 tools
maxpreps_get_athleteGet a MaxPreps athlete careerA
Read-onlyIdempotent

One athlete’s career page: season history, sports played, and available data. Pass the careerCanonicalUrl from maxpreps_search verbatim — it carries the required careerid parameter, without which the page cannot be addressed. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
athleteYesAthlete career path or URL, including ?careerid=… (use search’s careerCanonicalUrl)
careerIdNocareerid, if not already present in the path

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, and the description confirms 'Read-only' without contradiction. It adds valuable context that the careerCanonicalUrl carries the required careerid parameter and that without it the page cannot be addressed, disclosing an input prerequisite not fully captured by the schema.

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 two sentences with zero fluff. It front-loads the purpose and then provides a crucial usage hint about sourcing the URL from search. Every sentence earns its place.

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?

For a simple tool with two well-documented parameters and no output schema, the description covers the essential usage: what it returns (season history, sports played, available data), how to obtain the required input, and its read-only nature. It could mention error cases if careerid is missing, but that is already implied by the warning. Overall, an agent has enough to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100%: both athlete and careerId parameters have detailed descriptions including the requirement for careerid in the path. The tool description restates this but does not add new semantic meaning beyond the schema, so a baseline of 3 is appropriate.

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 clearly states the tool retrieves a single athlete's career page with season history, sports played, and available data. The verb 'get' and resource 'athlete career' are specific, and the focus on one athlete distinguishes it from sibling tools like maxpreps_get_school or maxpreps_get_team, even without naming them.

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?

The description instructs to pass the careerCanonicalUrl from maxpreps_search verbatim, establishing a clear dependency and workflow. It implies this is the follow-up to a search, though it does not explicitly state when not to use this tool or name alternatives. The context is clear enough for an agent to select it appropriately.

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

maxpreps_get_pageGet raw MaxPreps page dataA
Read-onlyIdempotent

Escape hatch: return the raw server-rendered data for any public MaxPreps page, undecoded. Use when a dedicated tool does not cover what you need (playoff brackets, conference standings, article listings). Note that positional payloads — team rosters and schedules — arrive as bare arrays here with no field names; use maxpreps_get_roster / maxpreps_get_schedule for those. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesSite path or maxpreps.com URL
keysOnlyNoReturn only the top-level prop names and their types — cheap way to explore a page

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already carry readOnlyHint, openWorldHint, and idempotentHint, so the safety profile is covered. The description adds genuinely useful behavioral context beyond those annotations: the data arrives 'undecoded' and, critically, that positional payloads (rosters/schedules) come back 'as bare arrays here with no field names' — a real surprise an agent would otherwise hit at runtime. Minor omissions like failure behavior for invalid/non-public paths keep it 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.

Conciseness5/5

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

Roughly 55 words carry the core purpose, the selection rule, the format gotcha, sibling routing, and the read-only flag. The most identifying information ('Escape hatch... undecoded') is front-loaded first, and every clause earns its place — no repetition of schema text or annotation fields.

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 bears the burden of explaining return behavior, and it covers the two biggest hazards (undecoded raw format and nameless bare arrays) plus the safety profile via annotations. It doesn't mention error handling for invalid or non-public paths or response size/pagination, but for a read-only escape-hatch tool with openWorldHint this is a strong, adequate disclosure.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline of 3 applies: both `path` and `keysOnly` are already documented in the schema. The description adds only the 'public page' scope constraint on `path` and the exploration framing around keysOnly, which is marginal value over the schema. It doesn't compensate further because no compensation is needed.

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 precise verb+resource: 'return the raw server-rendered data for any public MaxPreps page, undecoded.' It frames itself as an 'escape hatch' and differentiates from siblings by naming the gaps it fills (playoff brackets, conference standings, article listings) and by explicitly routing roster/schedule pages to dedicated siblings. An agent can distinguish this from the 14 sibling tools immediately.

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?

'Use when a dedicated tool does not cover what you need' is an explicit selection rule, reinforced with concrete examples and a direct exclusion: 'use maxpreps_get_roster / maxpreps_get_schedule for those.' This tells the agent when to pick the tool and which alternatives to choose instead, leaving nothing to inference.

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

maxpreps_get_rankingsGet MaxPreps team rankingsA
Read-onlyIdempotent

Ranked leaderboard of teams for a sport — nationally, or within one state. Each entry carries the rank, rating, overall record, movement, and a teamPath ready to pass to the other team tools, so this is the way to discover teams rather than look one up. Results are paginated 25 at a time. Omitting season uses the current one, which is empty before that sport is under way. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
sportYesSport slug as used in MaxPreps URLs, e.g. football, basketball
stateNoTwo-letter state code, e.g. NC. Omit for national rankings.
seasonNoSeason label, e.g. 25-26. Omit for the current season.
pageNumberNo1-based page; 25 teams per page

TDQS

A4.2/5.0
Behavior4/5

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

The annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds behavioral context beyond these: it mentions pagination (25 per page), the season behavior (current season may be empty for future sports), and that the tool is for discovery (returns teamPath for use in other tools). These are valuable details not captured by the annotations, so a 4 is appropriate.

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 compact, three sentences, and front-loaded with the key purpose. It avoids fluff, and each sentence adds a distinct piece of value: what the tool returns, how it's used for discovery, and behavioral caveats. It's well-structured, making it easy for an agent to parse quickly.

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?

Given the tool's complexity (4 parameters, 1 required, no output schema), the description is quite complete. It covers pagination, season edge case, and the integration with other tools. The only minor gap is not explicitly stating that the output is purely for display purposes or that the teamPath can be used with specific sibling tools, but these are implied. The description provides sufficient context for an agent to call the tool correctly without ambiguity.

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

Parameters3/5

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

Schema description coverage is 100% – every parameter (sport, state, season, pageNumber) has a description in the schema itself. The description reinforces the purpose of state (omit for national), season (omit for current), and pageNumber (25 per page), but doesn't add new semantic detail beyond what's in the schema. Baseline 3 is appropriate since the schema already handles parameter documentation adequately.

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 clearly states that this tool returns a ranked leaderboard of teams for a sport, either nationally or within a state. It specifies the exact resource (team rankings), the verb (get/list), and the scope (national or state). It also differentiates from siblings by noting it's the way to discover teams rather than look one up, and mentions the teamPath field that connects to other team 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?

The description provides clear context on when to use this tool (to discover teams) and mentions that omitting season gives the current season, which may be empty before the sport is underway. It doesn't explicitly name alternatives, but it contrasts with 'look one up' (implying search), and notes this is the discovery path. It could be improved by explicitly naming the sibling alternatives like maxpreps_search or maxpreps_list_teams, but the guidance is generally clear.

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

maxpreps_get_rosterGet a MaxPreps team rosterA
Read-onlyIdempotent

Players on a team for one season: jersey, name, class year, positions, height and weight. Soft-deleted entries (duplicates and departed players the site hides) are excluded by default — a roster payload often carries substantially more rows than the page shows. Height and weight are null when the school did not publish them. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamYesTeam site path or URL, e.g. nc/charlotte/myers-park-mustangs/football
seasonNoSeason label, e.g. 25-26. Omit for the current season.
positionNoCase-insensitive filter on position, e.g. "QB"
includeDeletedNoInclude soft-deleted roster entries the site hides

TDQS

A3.6/5.0
Behavior4/5

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

Annotations cover readOnly, openWorld, and idempotent hints, and the description adds meaningful behavior beyond those: soft-deleted entries are excluded by default, the payload may contain substantially more rows than the page displays, and height/weight are null when not published. This gives the agent useful expectations about data completeness and edge cases.

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 concise and front-loaded, leading with the core purpose before adding necessary caveats. Each sentence provides distinct value: scope, soft-deletion behavior, null-handling, and read-only status, with no redundant 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?

Despite having no output schema, the description discloses the returned fields, null behavior, and the soft-deleted row discrepancy, which is enough for a caller to interpret results. It does not specify the response shape (e.g., array vs object), but for a roster listing that is a minor gap.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents team, season, position, and includeDeleted with examples and defaults. The description's mention of soft-deleted exclusion aligns with includeDeleted's default but adds no new paramter-level meaning beyond the schema.

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 clearly defines the tool as retrieving players on a team for one season and enumerates the returned fields (jersey, name, class year, positions, height, weight). It does not explicitly distinguish itself from sibling tools like get_team or get_athlete, but the roster scope is evident and unambiguous.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool instead of alternatives such as maxpreps_get_team or maxpreps_get_athlete. The read-only note is a property, not usage direction. Implicitly, it is the roster-specific tool, but that is not stated.

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

maxpreps_get_scheduleGet a MaxPreps team schedule and scoresA
Read-onlyIdempotent

Every game for a team season, with the result and both scores. Scores are oriented team-vs-opponent (teamScore/opponentScore); the raw resultString MaxPreps renders is winner-first, so a loss reads "L 20-13" even when the team scored 13. Soft-deleted contests are hidden by default, matching the site. Before opening day a current season legitimately has no results — check a prior season. Also returns any playoff or championship tournaments the season fed into. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamYesTeam site path or URL, e.g. nc/charlotte/myers-park-mustangs/football
playedNoFilter to games with a result, games without one, or bothall
seasonNoSeason label, e.g. 25-26. Omit for the current season.
includeDeletedNoInclude soft-deleted contests the site hides
includeTournamentsNoInclude playoff/championship tournament entries the schedule references

TDQS

A4.1/5.0
Behavior5/5

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

The description adds substantial behavioral detail beyond the annotations: score orientation (team-vs-opponent), the winner-first rendering of `resultString`, the default hiding of soft-deleted contests, the season-caveat for opening day, and the inclusion of playoff tournaments. These details directly affect interpretation of the return data and are not provided by the annotations, which only declare read-only/idempotent/open-world hints.

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 a compact paragraph that front-loads the core purpose in the first sentence, then packs important caveats and behavioral notes efficiently. While it is slightly dense, every sentence adds value and there is no fluff or repetition, earning a strong score without being minimalist.

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?

Given the tool's complexity (5 parameters, no output schema), the description covers the key gotchas an agent needs: score orientation, result-string ambiguity, deleted-contest defaults, season timing, and tournament inclusion. It does not explicitly describe the `played` filter behavior beyond the schema, and error cases are not mentioned, but overall the description is sufficiently complete for a correct invocation.

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

Parameters3/5

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

Schema coverage is 100%, so all five parameters are already documented with types, defaults, and descriptions. The description mentions 'soft-deleted contests are hidden by default' and 'also returns any playoff or championship tournaments,' but these merely restate the existing defaults of `includeDeleted` and `includeTournaments`. It does not add new meaning or syntax for parameters beyond what the schema already provides, so the baseline of 3 is appropriate.

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 'Every game for a team season, with the result and both scores,' which names a specific verb and resource and clearly differentiates it from sibling tools like maxpreps_get_team or maxpreps_get_standings. It further specifies the scope (team season) and the inclusion of tournament entries, leaving no ambiguity about what the tool returns.

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

Usage Guidelines3/5

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

The description gives a useful context cue ('Before opening day a current season legitimately has no results — check a prior season') but does not explicitly state when to use this tool versus alternatives or name any sibling tool. The usage context is implied by the tool name and description rather than stated as a decision rule, so it stays at a mid-range score.

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

maxpreps_get_schoolGet a MaxPreps school profileA
Read-onlyIdempotent

School profile: identifiers, location, state athletic association, partner flags, plus nearby schools and recent articles/videos. Take the path from maxpreps_search. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
schoolYesSchool site path or maxpreps.com URL, e.g. nc/charlotte/myers-park-mustangs
includeNearbyNoInclude the nearby-schools list

TDQS

A3.9/5.0
Behavior3/5

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

The annotations already provide readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds the content inventory and path provenance, but no additional behavioral details such as error handling, rate limits, or the conditional nature of includeNearby.

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?

Two short sentences, front-loaded with the profile summary and followed by the essential usage instruction. Every word earns its place with no redundancy beyond the harmless 'Read-only' echo of the annotation.

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 compensates by listing the expected profile contents and identifying the required input source. The only small gap is that 'nearby schools' is described as part of the profile while the includeNearby parameter governs whether it appears, but the schema resolves this ambiguity.

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 parameters are already documented; the description adds value by telling the agent where to obtain the school path ('Take the path from maxpreps_search'). It does not connect includeNearby to the 'nearby schools' mention, but the schema handles that.

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 clearly identifies the resource as a school profile and enumerates its contents (identifiers, location, state athletic association, partner flags, nearby schools, articles/videos). This distinguishes it from team-level siblings, though it does not explicitly contrast with maxpreps_get_team or similar 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?

'Take the path from maxpreps_search' provides a direct usage instruction: obtain the required school path from a prior search. This establishes a clear workflow without explicitly naming alternative tools or exclusions, so it is strong but not maximal.

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

maxpreps_get_standingsGet conference standingsA
Read-onlyIdempotent

The standings table a team sits in — every team in the conference with its conference and overall records and placement, not just this team's own line (maxpreps_get_team gives that). Also returns the ranked statistical leaders MaxPreps highlights for the season. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamYesTeam site path or URL, e.g. nc/charlotte/myers-park-mustangs/football
seasonNoSeason label, e.g. 25-26. Omit for the current season.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already mark the tool read-only and idempotent, and the description adds useful context about the scope and content of the response: every conference team, records, placement, and highlighted statistical leaders. It does not discuss failure modes or authentication, but these are not significant concerns for a read-only lookup.

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 compact and front-loaded: it leads with the core output, clarifies scope with a sibling contrast, and adds the secondary stat-leaders behavior. No sentence is wasted.

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?

With no output schema, the description does the necessary work of explaining return content: full standings, records, placement, and stat leaders. The schema covers parameter details, and annotations cover safety, so the description is complete enough for an agent to call this tool correctly.

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

Parameters3/5

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

Schema coverage is 100%, and both parameters (team, season) are fully documented with formats and examples. The description adds no new parameter-level detail beyond referring to 'a team,' so the baseline score of 3 applies.

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 exactly what the tool returns: the full conference standings table for a team's conference, including records and placement, plus the statistical leaders MaxPreps highlights. It also distinguishes itself from maxpreps_get_team, making its purpose unmistakable.

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 explicitly tells the agent when to use this tool versus maxpreps_get_team: use it for the whole standings table, not just the team's own line. This is a clear routing instruction to the most relevant sibling.

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

maxpreps_get_stat_leaderboardGet a MaxPreps stat leaderboardA
Read-onlyIdempotent

The ranked athletes for one statistical category across a state or nationally — up to 200 per board, each with their full stat line, school, and a teamPath for the other team tools. Take path from maxpreps_list_stat_categories rather than constructing it. If MaxPreps changes the row shape the rows are returned undecoded with a warning rather than mislabelled. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesLeaderboard path from maxpreps_list_stat_categories, e.g. nc/football/25-26/stat-leaders/offense/passing/yds
limitNoMax athletes to return

TDQS

A4.1/5.0
Behavior5/5

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

Beyond the readOnlyHint/idempotentHint annotations, the description adds valuable behavioral context: rows are returned undecoded with a warning if MaxPreps changes their shape, and it explicitly states the tool is read-only. This helps the agent anticipate external schema drift without contradicting the 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?

Three concise sentences front-load the definition and output contents, then give sourcing guidance and a failure-mode warning. Every sentence earns its place; the only slight redundancy is the final 'Read-only', which is brief and harmless.

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 simple read-only, two-parameter tool with no output schema, the description is complete: it explains what is returned, how to obtain the required path, the limit behavior, and the fallback behavior if the upstream format changes. No critical calling information is missing.

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

Parameters3/5

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

The input schema already documents both parameters well, including the path format/example and the limit bounds/default, so schema description coverage is 100%. The description mostly restates the sourcing guidance for `path` and the 200-athlete cap, adding no meaningfully new parameter semantics.

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 clearly identifies the resource: ranked athletes for one statistical category, scoped to a state or nationally, and specifies output contents (stat line, school, teamPath). It does not explicitly contrast itself with similar sibling tools like maxpreps_get_stat_leaders or maxpreps_get_rankings, so it misses the strongest sibling differentiation.

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

Usage Guidelines3/5

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

The description gives actionable guidance — take `path` from maxpreps_list_stat_categories rather than constructing it — and implies the tool is used after listing categories. It does not state when to prefer this tool over alternatives or when not to use it, leaving selection partly to inference.

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

maxpreps_get_stat_leadersGet MaxPreps team stat leadersA
Read-onlyIdempotent

Statistical leaders for a team season — each entry names the athlete, the stat, its value and the athlete's career URL. Also returns the qualifying minimums and the stat refresh time. Coverage varies by sport and by how diligently the school reports; an empty result is normal, not an error. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamYesTeam site path or URL, e.g. nc/charlotte/myers-park-mustangs/football
seasonNoSeason label, e.g. 25-26. Omit for the current season.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so the safety profile is covered. The description adds valuable behavioral context beyond annotations: coverage varies by sport and school effort, and an empty result is expected rather than an error.

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?

Three sentences convey the result contents, the extra returns, the natural variability, and the empty-result semantics. There is no filler or redundant elaboration.

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?

With no output schema, the description adequately explains what the tool returns: athlete, stat, value, career URL, qualifying minimums, and refresh time. Combined with schema-covered parameters and read-only annotations, nothing critical is missing for an agent to call this correctly.

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

Parameters3/5

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

Schema description coverage is 100%, with both 'team' and 'season' documented including examples and format rules. The description does not add parameter-level detail beyond the schema, which is acceptable at this coverage level.

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 states a specific resource: statistical leaders for a team season, and details what each entry contains. It does not explicitly name or distinguish itself from the similarly named sibling maxpreps_get_stat_leaderboard, but 'team season' clarifies the scope enough to separate it.

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

Usage Guidelines3/5

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

The description implies when to use it ('for a team season') and gives useful context that empty results are normal. It does not explicitly say when to prefer this tool over maxpreps_get_stat_leaderboard or maxpreps_list_stat_categories, so guidance is implied rather than direct.

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

maxpreps_get_teamGet a MaxPreps team seasonA
Read-onlyIdempotent

Team overview for one season: sport/level/season identifiers, the win-loss record and points for/against, conference standing, rankings, and the full list of seasons this team has on MaxPreps (roughly 20 years). Use it to confirm a record without summing a schedule. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamYesTeam site path or URL, e.g. nc/charlotte/myers-park-mustangs/football
seasonNoSeason label, e.g. 25-26. Omit for the current season.
includeSeasonsNoInclude the list of available seasons

TDQS

A4.1/5.0
Behavior3/5

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

The readOnlyHint, openWorldHint, and idempotentHint annotations already cover the safety profile, and the description repeats 'Read-only' without adding new behavioral details. It does add useful scope context—one season and roughly 20 years of seasons—but no auth, rate-limit, or failure-mode disclosure.

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?

Two sentences, front-loaded with the core output content and a clear use case. Every sentence earns its place without redundancy.

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?

With no output schema, the description compensates by listing the key returned fields: identifiers, record, points, standing, rankings, and season list. Combined with the complete input schema and clear read-only annotations, an agent has enough to select and call this tool correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already explains team, season, and includeSeasons. The description adds no parameter-level meaning beyond the schema, so the baseline of 3 is appropriate.

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 names the exact verb and resource: a team season overview, including identifiers, record, points for/against, standing, rankings, and the full season list. This clearly differentiates it from siblings like maxpreps_get_schedule, maxpreps_get_standings, and maxpreps_get_rankings.

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 concrete intended use: confirm a record without summing a schedule, which routes agents away from maxpreps_get_schedule. It does not explicitly enumerate when to prefer it over roster, rankings, or other sibling tools, but the use case is clear.

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

maxpreps_get_team_rankingsGet one team’s rankingsA
Read-onlyIdempotent

Where a single team sits in each ranking MaxPreps publishes for it — typically national, state, state division/class, and metro area — along with the teams ranked immediately around it. Use this for "how good is this team"; use maxpreps_get_rankings to browse a whole leaderboard. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamYesTeam site path or URL, e.g. nc/charlotte/myers-park-mustangs/football
seasonNoSeason label, e.g. 25-26. Omit for the current season.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate readOnly, openWorld, and idempotent, and the description's 'Read-only' aligns with them. It adds useful behavioral detail beyond annotations by specifying that the result includes surrounding ranked teams and typically covers national, state, division/class, and metro rankings.

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?

Two tightly written sentences with no filler. The core behavior is front-loaded, and the routing guidance and read-only note are compact.

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 explains what to expect: individual team rankings across relevant polls and nearby teams in each. It also covers typical ranking categories and gives usage routing. Minor gaps like response formatting or empty-ranking behavior are not critical for invoking this read-only query.

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

Parameters3/5

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

The input schema already describes both parameters fully (team path/URL and season pattern/omission), so the description does not need to add much. It adds no extra parameter-level detail, but the high schema coverage keeps this at baseline.

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 clearly states the tool returns a single team's position in each MaxPreps ranking plus neighboring teams. It names the specific resource and distinguishes itself from maxpreps_get_rankings, so an agent can immediately tell the two apart.

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?

Explicitly directs use for 'how good is this team' and identifies maxpreps_get_rankings as the alternative for browsing a whole leaderboard. This provides concrete when-to-use and when-not-to-use guidance.

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

maxpreps_healthcheckCheck MaxPreps connectivityA
Read-only

Verify MaxPreps is reachable and that the site build id — which every data route embeds and which changes on each deploy — resolves. Also probes a real data route, so a pass means tools will work. Reports a failure rather than throwing. No credentials are required by this server. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnlyHint and openWorldHint, and the description adds useful behavior beyond that: no credentials required, reports failure rather than throwing, and probes a real data route so a pass indicates tool functionality. 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?

Four sentences with no filler: the core purpose and pass/fail meaning come first, followed by behavioral caveats. The final 'Read-only' is slightly redundant with the annotation but harmless and brief.

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?

For a zero-parameter healthcheck, the description covers purpose, prerequisite context, failure behavior, and what a pass means for the other tools. The main gap is that it does not spell out the exact return payload, but no output schema exists and pass/fail semantics are reasonably clear.

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?

The schema has zero parameters, so there are no parameter semantics to cover. The description still adds useful context by stating that no credentials are required by the server, which is relevant for invocation. This matches the baseline-4 expectation for zero-parameter tools.

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 names a specific verb and resource: it verifies MaxPreps reachability and that the site build id resolves, then probes a real data route. This clearly distinguishes it from the sibling data-fetching tools, which all retrieve content rather than check connectivity.

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?

The description implies when to use it: as a preflight check before relying on data routes, since 'a pass means tools will work.' It does not explicitly state 'use when data tools fail' or name alternatives, but the healthcheck role is obvious against the sibling data tools.

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

maxpreps_list_stat_categoriesList MaxPreps stat leaderboard categoriesA
Read-onlyIdempotent

Which statistical leaderboards exist for a sport, with the path to each one plus the national and in-scope averages and the games-played minimum. Call this before maxpreps_get_stat_leaderboard — the leaf path is not derivable from the stat name (Total TDs lives at touchdowns/tot-tds, Sacks at sacks/tot-sacks), so the path must come from here. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
sportYesSport slug as used in MaxPreps URLs, e.g. football
stateNoTwo-letter state code, e.g. NC. Omit for national leaders.
seasonNoSeason label, e.g. 25-26. Omit for the current season.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, and the description confirms 'Read-only' without contradicting them. It adds useful behavioral context beyond annotations: the tool is a required prerequisite and the source of non-derivable paths, which is meaningful sequencing information for the agent.

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 compact: one sentence enumerates the outputs, and a second bolded sentence gives the call-order instruction with concrete path examples. Every clause contributes information, and the most important usage note is front-loaded.

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 burden of explaining what the tool returns, and it does cover the key elements: available categories, paths, averages, and games-played minimum. Optional state/season semantics are only implied through 'national and in-scope averages,' but the schema already documents those fields, so no critical gap exists.

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

Parameters3/5

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

Schema coverage is 100%, with each parameter already described (sport slug, state code, season label), so the baseline is 3. The description adds marginal clarity by distinguishing 'national' vs 'in-scope' averages, which maps to omitting or providing the state parameter, but it does not materially extend the schema's parameter documentation.

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 uses a specific verb ('list') and a specific resource ('stat leaderboard categories') and states the concrete outputs: paths, national and in-scope averages, and games-played minimum. It also differentiates from the sibling maxpreps_get_stat_leaderboard by framing this as the category/path catalog rather than the leaderboard values themselves.

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 tells the agent to call this before maxpreps_get_stat_leaderboard and explains why: the leaf path is not derivable from the stat name, with concrete examples. This is direct routing guidance to the relevant sibling tool, leaving no ambiguity about when this tool should be used.

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

maxpreps_list_teamsList a school’s teamsA
Read-onlyIdempotent

Every team path a school publishes, with sport, gender and level. Call this before any team tool — the sport path segments are not guessable (the default gender varies by sport, so girls golf is "golf/girls" while boys golf is "golf/spring", and field hockey has no gender segment at all). Passing a team path instead of a school path returns that team’s seasons. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
levelNoFilter on level, e.g. "Varsity", "JV", "Freshman"
sportNoCase-insensitive filter on the sport name, e.g. "football"
schoolYesSchool site path or maxpreps.com URL, e.g. nc/charlotte/myers-park-mustangs

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint and idempotentHint, and the description adds substantial behavioral context beyond them: the output content, the non-obvious gender-dependent path encoding, and the overload where a team path returns seasons. The field hockey and golf examples reveal quirks an agent could not infer from the schema or annotations. This is exactly the kind of context that prevents incorrect calls.

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 three sentences, front-loaded with the core result, then rationale, then the overload caveat. There is no filler; every sentence earns its place. 'Read-only' repeats an annotation but is harmless and brief.

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 list tool with no output schema, the description states what is returned (team path, sport, gender, level) and why this call is a prerequisite to other team tools. It accounts for the main hidden complexity, unguessable path segments, and the team-path input variant. Given the rich parameter schema and safety annotations, nothing essential is missing.

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; the description raises this by extending the 'school' parameter to also accept a team path with different return semantics. It also contextualizes path segments with examples like 'golf/girls' versus 'golf/spring'. It does not add much to the 'level' or 'sport' filters, but the added parameter flexibility is important.

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 an explicit verb and resource: 'Every team path a school publishes', and identifies the returning fields (sport, gender, level). This clearly differentiates it from sibling tools like maxpreps_get_team and maxpreps_get_schedule. An agent immediately knows this is a listing/prerequisite tool, not a detail-fetching tool.

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 explicitly instructs 'Call this before any team tool' and explains why: sport path segments are not guessable, with concrete examples. It does not name a specific alternative tool or state when not to use it, but the prerequisite directive gives strong guidance. The sentence about passing a team path also clarifies an alternate call pattern.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 15 tool updatesv1.0.0
    • Changedmaxpreps_get_athlete1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmaxpreps_get_page1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmaxpreps_get_rankings1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmaxpreps_get_roster1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmaxpreps_get_schedule1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmaxpreps_get_school1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmaxpreps_get_standings1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmaxpreps_get_stat_leaderboard1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmaxpreps_get_stat_leaders1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmaxpreps_get_team1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmaxpreps_get_team_rankings1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmaxpreps_healthcheck1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmaxpreps_list_stat_categories1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmaxpreps_list_teams1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmaxpreps_search1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  2. 15 tool updatesv0.2.0
    • First observedmaxpreps_get_athlete
    • First observedmaxpreps_get_page
    • First observedmaxpreps_get_rankings
    • First observedmaxpreps_get_roster
    • First observedmaxpreps_get_schedule
    • First observedmaxpreps_get_school
    • First observedmaxpreps_get_standings
    • First observedmaxpreps_get_stat_leaderboard
    • First observedmaxpreps_get_stat_leaders
    • First observedmaxpreps_get_team
    • First observedmaxpreps_get_team_rankings
    • First observedmaxpreps_healthcheck
    • First observedmaxpreps_list_stat_categories
    • First observedmaxpreps_list_teams
    • First observedmaxpreps_search

TDQS

A4.3/5.0

Scored across 15 tools

Disambiguation5/5

Each tool targets a clearly distinct resource or perspective—school, team, schedule, roster, athlete, rankings, standings, and stat leaderboards are all explicitly differentiated. The descriptions carefully preempt confusion, e.g., get_rankings (browse leaderboard) vs get_team_rankings (single team's positions), and stat_leaders vs stat_leaderboard.

Naming Consistency5/5

All tools follow a predictable maxpreps_<verb>_<noun> pattern in snake_case. get_ dominates for resource retrieval, list_ is used for enumerations, and search/healthcheck are the only clear exceptions, which still fit the verb-first style.

Tool Count5/5

15 tools sits at the top of the well-scoped range but is justified by the breadth of the domain: discovery, school profiles, teams, season data, rosters, stats, rankings, and athletic careers. The auxiliary healthcheck and get_page tools add operational value without feeling like padding.

Completeness5/5

The surface covers the full read-only lifecycle: search, school, teams, team overview, schedule, roster, stat leaders, athlete pages, rankings, standings, and stat leaderboards. The get_page escape hatch covers residual gaps like playoff brackets and articles, leaving no dead ends for agents.

Maintenance

ActivityActive
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP Server that enables interaction with MLB scores and statistics via the SportsData.io MLB V3 Scores API, allowing users to access baseball data through natural language queries.
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server for accessing college basketball statistics through the SportsData.io CBB v3 Stats API, enabling AI agents to retrieve and analyze college basketball data through natural language interactions.
    -
  • A
    license
    A
    quality
    C
    maintenance
    MCP server for NBA live data and stats, providing read-only tools to query live scores, box scores, player info, standings, and more from NBA.com.
    15
    8 npm
    1
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    MCP server providing tools to query live scores, schedules, standings, and game stats from the SportRadar API for multiple sports including NFL, NBA, NHL, NCAAMB, soccer, and tennis.
    -