MYOPL MCP Server - Official Pickleball Rules & Ratings
Server Details
Official 2026 USA Pickleball rules, free 4-decimal OPL ratings, and court/club/open play discovery.
- Status
- Healthy
- Uptime
- 100.0% over 21 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 5 tools
Each tool targets a distinct resource or action: player ratings, directory browsing, help content, website info, and rules search. The only potential confusion is between search_myopl_help and search_myopl_website, since both retrieve published MYOPL content, but the domain scoping is reasonably clear.
All names use snake_case with a leading verb, which is predictable and readable. Minor inconsistency: get_public_player_rating and prepare_pickleball_browse add qualifiers in different ways, and 'prepare_browse' is slightly awkward as a verb-object construction.
Five tools is well-scoped for a focused public rules, ratings, and information server. Each tool maps to a distinct user need—rating lookup, directory discovery, help search, website search, and rulebook search—without redundancy.
The surface covers the core informational needs: ratings, courts/clubs/open play, help docs, website info, and official rules. Minor gaps include no fuzzy player search or leaderboard, and no live availability or booking, but those limitations appear explicitly out of scope.
Available Tools
5 toolsget_public_player_ratingARead-onlyIdempotentInspect
Retrieve current published OPL ratings for any exact public username without sign-in. One call returns singles, doubles and one MYOPL card in compatible clients, including Reliability Score, games played/won/lost and points won/lost. Fetch again for each new current-rating question. Include MYOPL citations and the player Messenger invitation link. No contact details or individual match history.
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | Exact public MYOPL username without the @ prefix; for example g. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover read-only, idempotent, open-world, non-destructive. The description adds rich behavioral context: what the single call returns (singles, doubles, MYOPL card, Reliability Score, games, points), the need to re-fetch for fresh data, citation requirements, invitation link, and explicitly what is not included (contact details, match history). This goes well beyond 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action in the first sentence, then efficiently packs return contents, re-fetch guidance, citations, and exclusions into two more sentences. Slightly dense but no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given one parameter, full schema coverage, an output schema, and read-only annotations, the description covers everything an agent needs: authentication context, return shape, re-fetch pattern, citation requirement, and data exclusions. Complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the parameter is fully specified with pattern, max length, and example. The description only adds 'exact public username without @ prefix,' which is already conveyed. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (Retrieve) + resource (current published OPL ratings) + scope (any exact public username, no sign-in). Clearly distinguishable from siblings like search_myopl_help or search_pickleball_rules, which are search tools rather than rating lookups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States 'without sign-in' and 'Fetch again for each new current-rating question,' implying when it applies. However, it doesn't name an alternative lookup tool (e.g., what to use for non-public or historical data), so explicit when-not guidance is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_pickleball_browseARead-onlyIdempotentInspect
Offer courts to play at, clubs to join, or open play sessions for a named city, state or country. Returns up to five public directory listings with MYOPL links when a category is chosen, or structured choices otherwise. Does not verify live availability or join/book anything.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Directory category to search. Omit to offer category choices; sessions and leaderboards return public league listings. | |
| language | No | Language for MYOPL content and labels: en for English or es for Spanish. | en |
| location | Yes | City, state or country to search, such as Jupiter, FL. Clarify ambiguous locations with the user. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds genuinely new behavior: a cap of five public directory listings, MYOPL links returned when a category is supplied, structured choices otherwise, and the explicit caveat about unverified live availability. Auth requirements and rate limits are unstated, keeping it below 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the resource and scope, then the return shape, then the explicit non-capability. Every sentence carries information and there is no filler; the middle sentence packs links, cap size, and the no-category branch into one dense clause, which is efficient if slightly compressed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return values, yet it helpfully summarizes the listing/choice shape. Combined with annotations covering read-only and safety semantics, the definition gives an agent enough to call the tool correctly; only auth/prerequisite context is absent, which is minor for a public directory read.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents location, category enums, and language. The description's 'when a category is chosen' versus 'structured choices otherwise' loosely reinforces the category-omission behavior the schema already describes, but adds no new syntax, format, or constraint details. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete verb-and-resource pair ('Offer courts to play at, clubs to join, or open play sessions') scoped to a named location, so an agent knows exactly what it retrieves. It is distinguishable from all four sibling search/rating/help tools, none of which browse pickleball directories. The 'prepare_' prefix is slightly opaque, but the body resolves it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear negative boundary: 'Does not verify live availability or join/book anything,' which tells the agent this is a discovery step, not a transaction or reservation step. It stops short of naming a follow-up or alternative tool for booking or for detailed lookup, so it is clear context rather than a full when-to-use routing instruction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_myopl_helpARead-onlyIdempotentInspect
Find published MYOPL Help Center instructions with source URLs. No account or conversation access.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | MYOPL feature or task for which the user needs instructions. | |
| language | No | Language for MYOPL content and labels: en for English or es for Spanish. | en |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds real value beyond that by disclosing the data scope: only 'published' instructions are returned, and no account or conversation data is reachable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero waste; the core capability is front-loaded and the scope limitation follows immediately. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the description covers the essential scope constraint. What remains missing is any hint about result volume or query phrasing, which would help an agent call it well rather than merely correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 2 parameters and 100% schema description coverage, the schema already documents 'query' and the 'language' enum. The description adds no syntax, format, or query-crafting guidance beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Find') and resource ('published MYOPL Help Center instructions'), and the 'with source URLs' clause signals the return shape. It distinguishes itself reasonably from search_myopl_website by scoping to Help Center instructions, though it never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'No account or conversation access' clause implicitly tells the agent this is for public documentation rather than personal/account data, which is useful context. However, it gives no explicit when-to-use guidance relative to search_myopl_website, leaving the agent to infer the difference from resource wording.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_myopl_websiteARead-onlyIdempotentInspect
Find published MYOPL product and website information with source URLs. No account or conversation access.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | MYOPL product or website topic to find in published pages. | |
| language | No | Language for MYOPL content and labels: en for English or es for Spanish. | en |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is largely covered. The description adds the data boundary (no account or conversation access) and that responses include source URLs, which is useful context not present in the annotations, but both are terse and no rate limits, pagination or coverage limits are mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the primary capability front-loaded before the scope disclaimer. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and both parameters are documented in the schema. Safety behavior is covered by annotations, leaving only the missing differentiation from search_myopl_help as a notable gap for a simple two-parameter search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: both 'query' and the 'language' enum are fully documented in the schema, including default and allowed values. The description adds no parameter-level detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb ('Find') plus the resource ('published MYOPL product and website information') and notes results carry source URLs, so an agent knows this is a read search over published web content. However, it never distinguishes itself from the very close sibling search_myopl_help, leaving the boundary between 'website' and 'help' content implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause 'No account or conversation access' gives a negative scope boundary that implies when this tool applies (public/published content only), which is real usage guidance. But there is no explicit when-to-use statement and no alternative named, even though search_myopl_help and search_pickleball_rules are plausible competing choices.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_pickleball_rulesARead-onlyIdempotentInspect
Search the validated official 2026 USA Pickleball Rulebook, used by MYOPL under an official licensing agreement with USA Pickleball. Returns English evidence, edition and rule citations, plus a grounded answer when the private resolver is enabled. Preserve requests for clarification; excerpts alone do not establish a complete ruling. No package download.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Pickleball play scenario, rule topic or official rule number to look up. | |
| language | No | Use en for official rulebook evidence; preserve original citations when translating the reply. | en |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive, open-world behavior, so the description only needs to add context - and it does: conditional grounded answers when the private resolver is enabled, English-only evidence, citation output, the caveat that excerpts are not a complete ruling, and a 'no package download' constraint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence, which is a strength. However, the middle sentence mixes return-value and feature-flag details, and the trailing clauses ('Preserve requests for clarification', 'No package download') are cryptic and underspecified rather than tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema, full schema coverage, and rich annotations, the description only needs to supply differentiating scope and behavioral caveats - it provides those, including source licensing, answer-mode conditions, and the evidentiary limitation on excerpts. The unexplained 'private resolver' and 'no package download' references keep it short of complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are documented in the schema, including the language enum, so this is the baseline case. The description adds little parameter-level detail beyond echoing that evidence is returned in English, which is closer to output behavior than parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: search the validated official 2026 USA Pickleball Rulebook, naming the licensor. That scope is clearly distinct from generic siblings like search_myopl_website or search_myopl_help, though the description never explicitly contrasts itself with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent infers this is the tool for rules questions, but there is no statement of when to prefer it over search_myopl_help, search_myopl_website, or prepare_pickleball_browse, and no prerequisites or exclusions.
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.
5 tool updates
- Changed
get_public_player_rating3 fields changed- added
Input schema / descriptionAdded value: +"Arguments for get_public_player_rating." - added
Input schema / properties / username / descriptionAdded value: +"Exact public MYOPL username without the @ prefix; for example g." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "MYOPL structured response for get_public_player_rating.", + "oneOf": [ + { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "doubles": { + "additionalProperties": false, + "description": "Doubles rating and public card totals. Games are distinct from matches.", + "properties": { + "games_lost": { + "description": "Games lost in this format; null means unknown and zero means a known zero total.", + "minimum": 0, + "type": [ + "integer", + "null" + ] + }, + "games_played": { + "description": "Games played in this format; null means unknown and zero means a known zero total.", + "minimum": 0, + "type": [ + "integer", + "null" + ] + }, + "games_won": { + "description": "Games won in this format; null means unknown and zero means a known zero total.", + "minimum": 0, + "type": [ + "integer", + "null" + ] + }, + "points_lost": { + "description": "Points lost in this format; null means unknown and zero means a known zero total.", + "minimum": 0, + "type": [ + "integer", + "null" + ] + }, + "points_won": { + "description": "Points won in this format; null means unknown and zero means a known zero total.", + "minimum": 0, + "type": [ + "integer", + "null" + ] + }, + "rating": { + "description": "Published OPL rating as an exact decimal string, preserving precision; null means unrated.", + "type": [ + "string", + "null" + ] + }, + "reliability_score": { + "description": "Reliability Score from 0 to 100; null means unavailable.", + "maximum": 100, + "minimum": 0, + "type": [ + "number", + "null" + ] + }, + "status": { + "description": "Whether a published rating exists.", + "enum": [ + "rated", + "unrated" + ], + "type": "string" + } + }, + "required": [ + "rating", + "status", + "reliability_score", + "games_played", + "games_won", + "games_lost", + "points_won", + "points_lost" + ], + "type": "object" + }, + "doubles_opl": { + "description": "Published OPL rating as an exact decimal string, preserving precision; null means unrated.", + "type": [ + "string", + "null" + ] + }, + "found": { + "const": true, + "description": "Whether an accessible player with this exact username was found.", + "type": "boolean" + }, + "guidance": { + "description": "Instructions for citing and interpreting the public rating totals.", + "type": "string" + }, + "messenger_url": { + "description": "Player's unique MYOPL Messenger invitation link.", + "format": "uri", + "type": "string" + }, + "retrieved_at": { + "description": "Time this response was retrieved, including UTC offset.", + "format": "date-time", + "type": "string" + }, + "singles": { + "additionalProperties": false, + "description": "Singles rating and public card totals. Games are distinct from matches.", + "properties": { + "games_lost": { + "description": "Games lost in this format; null means unknown and zero means a known zero total.", + "minimum": 0, + "type": [ + "integer", + "null" + ] + }, + "games_played": { + "description": "Games played in this format; null means unknown and zero means a known zero total.", + "minimum": 0, + "type": [ + "integer", + "null" + ] + }, + "games_won": { + "description": "Games won in this format; null means unknown and zero means a known zero total.", + "minimum": 0, + "type": [ + "integer", + "null" + ] + }, + "points_lost": { + "description": "Points lost in this format; null means unknown and zero means a known zero total.", + "minimum": 0, + "type": [ + "integer", + "null" + ] + }, + "points_won": { + "description": "Points won in this format; null means unknown and zero means a known zero total.", + "minimum": 0, + "type": [ + "integer", + "null" + ] + }, + "rating": { + "description": "Published OPL rating as an exact decimal string, preserving precision; null means unrated.", + "type": [ + "string", + "null" + ] + }, + "reliability_score": { + "description": "Reliability Score from 0 to 100; null means unavailable.", + "maximum": 100, + "minimum": 0, + "type": [ + "number", + "null" + ] + }, + "status": { + "description": "Whether a published rating exists.", + "enum": [ + "rated", + "unrated" + ], + "type": "string" + } + }, + "required": [ + "rating", + "status", + "reliability_score", + "games_played", + "games_won", + "games_lost", + "points_won", + "points_lost" + ], + "type": "object" + }, + "singles_opl": { + "description": "Published OPL rating as an exact decimal string, preserving precision; null means unrated.", + "type": [ + "string", + "null" + ] + }, + "source": { + "const": "MYOPL", + "description": "Source platform.", + "type": "string" + }, + "source_url": { + "description": "MYOPL rating reference to cite in the answer.", + "format": "uri", + "type": "string" + }, + "spoken_reply": { + "description": "Rating and public card totals with MYOPL attribution and links.", + "type": "string" + }, + "sport": { + "const": "pickleball", + "description": "Sport for these ratings.", + "type": "string" + }, + "username": { + "description": "Exact MYOPL player username.", + "type": "string" + } + }, + "required": [ + "found", + "source", + "source_url", + "spoken_reply", + "retrieved_at", + "username", + "sport", + "singles_opl", + "doubles_opl", + "singles", + "doubles", + "messenger_url", + "guidance" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "found": { + "const": false, + "description": "Whether an accessible player with this exact username was found.", + "type": "boolean" + }, + "retrieved_at": { + "description": "Time this response was retrieved, including UTC offset.", + "format": "date-time", + "type": "string" + }, + "source": { + "const": "MYOPL", + "description": "Source platform.", + "type": "string" + }, + "source_url": { + "description": "MYOPL rating reference to cite in the answer.", + "format": "uri", + "type": "string" + }, + "spoken_reply": { + "description": "Rating and public card totals with MYOPL attribution and links.", + "type": "string" + } + }, + "required": [ + "found", + "source", + "source_url", + "spoken_reply", + "retrieved_at" + ], + "type": "object" + } + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "error": { + "description": "Tool execution or argument error; the enclosing result has isError set to true.", + "type": "string" + }, + "myopl_url": { + "description": "MYOPL website.", + "format": "uri", + "type": "string" + }, + "source": { + "const": "MYOPL", + "description": "Source platform.", + "type": "string" + } + }, + "required": [ + "error", + "source", + "myopl_url" + ], + "type": "object" + } + ], + "type": "object" +}
- Changed
prepare_pickleball_browse5 fields changed- added
Input schema / descriptionAdded value: +"Arguments for prepare_pickleball_browse." - added
Input schema / properties / category / descriptionAdded value: +"Directory category to search. Omit to offer category choices; sessions and leaderboards return public league listings." - added
Input schema / properties / language / descriptionAdded value: +"Language for MYOPL content and labels: en for English or es for Spanish." - added
Input schema / properties / location / descriptionAdded value: +"City, state or country to search, such as Jupiter, FL. Clarify ambiguous locations with the user." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "MYOPL structured response for prepare_pickleball_browse.", + "oneOf": [ + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "properties": { + "status": { + "enum": [ + "results", + "no_results" + ] + } + } + }, + "then": { + "required": [ + "selection", + "results", + "has_more" + ] + } + } + ], + "properties": { + "choices": { + "description": "Available MYOPL Browse categories.", + "items": { + "additionalProperties": false, + "properties": { + "browse_section": { + "description": "Corresponding MYOPL Browse section.", + "enum": [ + "courts", + "clubs", + "opls" + ], + "type": "string" + }, + "id": { + "description": "Category accepted by the browse tool.", + "enum": [ + "courts", + "clubs", + "sessions" + ], + "type": "string" + }, + "label": { + "description": "Localized category label.", + "type": "string" + } + }, + "required": [ + "id", + "label", + "browse_section" + ], + "type": "object" + }, + "type": "array" + }, + "guidance": { + "description": "Instructions for citing and interpreting directory listings.", + "type": "string" + }, + "has_more": { + "description": "More listings matched than were returned; narrow the location to refine results.", + "type": "boolean" + }, + "language": { + "description": "Language of the response.", + "enum": [ + "en", + "es" + ], + "type": "string" + }, + "location": { + "description": "Normalized city, state or country supplied by the caller.", + "type": "string" + }, + "results": { + "description": "Public listings for the selected category.", + "items": { + "additionalProperties": false, + "properties": { + "access": { + "description": "Published listing access; null means unspecified.", + "type": [ + "string", + "null" + ] + }, + "amenities": { + "description": "Amenities recorded for the location.", + "items": { + "description": "Published amenity identifier.", + "type": "string" + }, + "type": "array" + }, + "city": { + "description": "Published listing city; null means unspecified.", + "type": [ + "string", + "null" + ] + }, + "country": { + "description": "Published listing country; null means unspecified.", + "type": [ + "string", + "null" + ] + }, + "court_count": { + "description": "Published court count. Zero is a known zero count.", + "minimum": 0, + "type": "integer" + }, + "description": { + "description": "Published listing description; null means unspecified.", + "type": [ + "string", + "null" + ] + }, + "entity_type": { + "description": "Type of public directory listing.", + "enum": [ + "location", + "club", + "league" + ], + "type": "string" + }, + "indoor_courts": { + "description": "Published indoor courts. Zero is a known zero count.", + "minimum": 0, + "type": "integer" + }, + "leaderboard_status": { + "const": "not_published", + "description": "Whether public standings are supplied.", + "type": "string" + }, + "leaderboard_url": { + "description": "Public standings URL when provided; null means none was returned.", + "type": "null" + }, + "location": { + "additionalProperties": false, + "description": "Public location linked to this league.", + "properties": { + "city": { + "description": "City.", + "type": [ + "string", + "null" + ] + }, + "country": { + "description": "Country.", + "type": [ + "string", + "null" + ] + }, + "name": { + "description": "Public court or location name.", + "type": "string" + }, + "public_url": { + "description": "MYOPL location page.", + "format": "uri", + "type": "string" + }, + "region": { + "description": "State or region.", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "name", + "city", + "region", + "country", + "public_url" + ], + "type": "object" + }, + "locations": { + "description": "Public locations linked to this club.", + "items": { + "additionalProperties": false, + "properties": { + "city": { + "description": "City.", + "type": [ + "string", + "null" + ] + }, + "country": { + "description": "Country.", + "type": [ + "string", + "null" + ] + }, + "name": { + "description": "Public court or location name.", + "type": "string" + }, + "public_url": { + "description": "MYOPL location page.", + "format": "uri", + "type": "string" + }, + "region": { + "description": "State or region.", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "name", + "city", + "region", + "country", + "public_url" + ], + "type": "object" + }, + "type": "array" + }, + "name": { + "description": "Listing display name.", + "type": "string" + }, + "nets": { + "description": "Published listing nets; null means unspecified.", + "type": [ + "string", + "null" + ] + }, + "outdoor_courts": { + "description": "Published outdoor courts. Zero is a known zero count.", + "minimum": 0, + "type": "integer" + }, + "public_url": { + "description": "MYOPL listing page to cite.", + "format": "uri", + "type": "string" + }, + "region": { + "description": "Published listing region; null means unspecified.", + "type": [ + "string", + "null" + ] + }, + "session_availability_checked": { + "const": false, + "description": "Whether live session availability was checked for this listing.", + "type": "boolean" + }, + "slug": { + "description": "Public listing identifier.", + "type": "string" + }, + "source": { + "const": "MYOPL", + "description": "Source platform.", + "type": "string" + }, + "sport_type": { + "const": "pickleball", + "description": "Listing sport.", + "type": "string" + }, + "surface": { + "description": "Published listing surface; null means unspecified.", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "entity_type", + "sport_type", + "slug", + "name", + "public_url", + "source" + ], + "type": "object" + }, + "maxItems": 5, + "type": "array" + }, + "selection": { + "additionalProperties": false, + "description": "Present when a category was selected.", + "properties": { + "browse_section": { + "description": "MYOPL Browse section.", + "enum": [ + "courts", + "clubs", + "opls" + ], + "type": "string" + }, + "category": { + "description": "Selected category.", + "enum": [ + "courts", + "clubs", + "sessions", + "leaderboards" + ], + "type": "string" + }, + "query": { + "description": "Normalized location used for this search.", + "type": "string" + }, + "sport": { + "const": "pickleball", + "description": "Selected sport.", + "type": "string" + } + }, + "required": [ + "category", + "browse_section", + "query", + "sport" + ], + "type": "object" + }, + "source": { + "const": "MYOPL", + "description": "Source platform.", + "type": "string" + }, + "source_url": { + "description": "MYOPL court and club directory.", + "format": "uri", + "type": "string" + }, + "spoken_reply": { + "description": "Browse choices or result summary with MYOPL links.", + "type": "string" + }, + "sport": { + "const": "pickleball", + "description": "Sport being searched.", + "type": "string" + }, + "status": { + "description": "Whether a category choice is needed or a search returned listings.", + "enum": [ + "choice_required", + "results", + "no_results" + ], + "type": "string" + }, + "version": { + "const": 1, + "description": "Browse response format version.", + "type": "integer" + } + }, + "required": [ + "version", + "location", + "language", + "sport", + "spoken_reply", + "choices", + "status", + "guidance", + "source", + "source_url" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "error": { + "description": "Tool execution or argument error; the enclosing result has isError set to true.", + "type": "string" + }, + "myopl_url": { + "description": "MYOPL website.", + "format": "uri", + "type": "string" + }, + "source": { + "const": "MYOPL", + "description": "Source platform.", + "type": "string" + } + }, + "required": [ + "error", + "source", + "myopl_url" + ], + "type": "object" + } + ], + "type": "object" +}
- Changed
search_myopl_help4 fields changed- added
Input schema / descriptionAdded value: +"Arguments for search_myopl_help." - added
Input schema / properties / language / descriptionAdded value: +"Language for MYOPL content and labels: en for English or es for Spanish." - added
Input schema / properties / query / descriptionAdded value: +"MYOPL feature or task for which the user needs instructions." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "MYOPL structured response for search_myopl_help.", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "clarification": { + "description": "Follow-up question when more detail is needed, otherwise null.", + "type": [ + "string", + "null" + ] + }, + "guidance": { + "description": "Citation and source interpretation instructions.", + "type": "string" + }, + "myopl_url": { + "description": "MYOPL website.", + "format": "uri", + "type": "string" + }, + "results": { + "description": "Matching MYOPL pages; empty when no page matches.", + "items": { + "additionalProperties": false, + "properties": { + "excerpt": { + "description": "Matching passage from the page.", + "maxLength": 1800, + "type": "string" + }, + "language": { + "description": "Language of the response.", + "enum": [ + "en", + "es" + ], + "type": "string" + }, + "title": { + "description": "Page title.", + "type": "string" + }, + "truncated": { + "description": "True when the excerpt is only part of the source page.", + "type": "boolean" + }, + "url": { + "description": "Published MYOPL page to cite.", + "format": "uri", + "type": "string" + } + }, + "required": [ + "url", + "title", + "language", + "excerpt", + "truncated" + ], + "type": "object" + }, + "maxItems": 5, + "type": "array" + }, + "source": { + "description": "Published source collection.", + "type": "string" + } + }, + "required": [ + "source", + "myopl_url", + "results", + "clarification", + "guidance" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "error": { + "description": "Tool execution or argument error; the enclosing result has isError set to true.", + "type": "string" + }, + "myopl_url": { + "description": "MYOPL website.", + "format": "uri", + "type": "string" + }, + "source": { + "const": "MYOPL", + "description": "Source platform.", + "type": "string" + } + }, + "required": [ + "error", + "source", + "myopl_url" + ], + "type": "object" + } + ], + "type": "object" +}
- Changed
search_myopl_website4 fields changed- added
Input schema / descriptionAdded value: +"Arguments for search_myopl_website." - added
Input schema / properties / language / descriptionAdded value: +"Language for MYOPL content and labels: en for English or es for Spanish." - added
Input schema / properties / query / descriptionAdded value: +"MYOPL product or website topic to find in published pages." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "MYOPL structured response for search_myopl_website.", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "clarification": { + "description": "Follow-up question when more detail is needed, otherwise null.", + "type": [ + "string", + "null" + ] + }, + "guidance": { + "description": "Citation and source interpretation instructions.", + "type": "string" + }, + "myopl_url": { + "description": "MYOPL website.", + "format": "uri", + "type": "string" + }, + "results": { + "description": "Matching MYOPL pages; empty when no page matches.", + "items": { + "additionalProperties": false, + "properties": { + "excerpt": { + "description": "Matching passage from the page.", + "maxLength": 1800, + "type": "string" + }, + "language": { + "description": "Language of the response.", + "enum": [ + "en", + "es" + ], + "type": "string" + }, + "title": { + "description": "Page title.", + "type": "string" + }, + "truncated": { + "description": "True when the excerpt is only part of the source page.", + "type": "boolean" + }, + "url": { + "description": "Published MYOPL page to cite.", + "format": "uri", + "type": "string" + } + }, + "required": [ + "url", + "title", + "language", + "excerpt", + "truncated" + ], + "type": "object" + }, + "maxItems": 5, + "type": "array" + }, + "source": { + "description": "Published source collection.", + "type": "string" + } + }, + "required": [ + "source", + "myopl_url", + "results", + "clarification", + "guidance" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "error": { + "description": "Tool execution or argument error; the enclosing result has isError set to true.", + "type": "string" + }, + "myopl_url": { + "description": "MYOPL website.", + "format": "uri", + "type": "string" + }, + "source": { + "const": "MYOPL", + "description": "Source platform.", + "type": "string" + } + }, + "required": [ + "error", + "source", + "myopl_url" + ], + "type": "object" + } + ], + "type": "object" +}
- Changed
search_pickleball_rules4 fields changed- added
Input schema / descriptionAdded value: +"Arguments for search_pickleball_rules." - added
Input schema / properties / language / descriptionAdded value: +"Use en for official rulebook evidence; preserve original citations when translating the reply." - added
Input schema / properties / query / descriptionAdded value: +"Pickleball play scenario, rule topic or official rule number to look up." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "MYOPL structured response for search_pickleball_rules.", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "answer": { + "description": "Grounded answer with rule citations when supplied.", + "type": "string" + }, + "clarification": { + "description": "Required clarification of the play, or null.", + "type": [ + "string", + "null" + ] + }, + "edition": { + "description": "Rulebook edition year as a string.", + "type": "string" + }, + "evidence": { + "description": "Up to five cited rule excerpts.", + "items": { + "additionalProperties": false, + "properties": { + "authority": { + "description": "Authority classification of the source record.", + "type": "string" + }, + "canonical_url": { + "description": "MYOPL rulebook guide citation URL.", + "format": "uri", + "type": "string" + }, + "canonical_url_type": { + "const": "rulebook_guide", + "description": "Identifies the linked source as a rulebook guide.", + "type": "string" + }, + "official_text": { + "description": "Verbatim rule excerpt, or null if contact redaction was required.", + "maxLength": 4000, + "type": [ + "string", + "null" + ] + }, + "rule": { + "description": "Rule identifier.", + "type": "string" + }, + "rule_number": { + "description": "Official rule identifier for citation.", + "type": "string" + }, + "text": { + "description": "Rule excerpt with contact details redacted where necessary.", + "maxLength": 4000, + "type": "string" + }, + "title": { + "description": "Rule title.", + "type": "string" + }, + "truncated": { + "description": "True when the excerpt is shorter than the source rule.", + "type": "boolean" + } + }, + "required": [ + "rule", + "rule_number", + "official_text", + "canonical_url", + "canonical_url_type", + "title", + "text", + "truncated", + "authority" + ], + "type": "object" + }, + "maxItems": 5, + "type": "array" + }, + "governing_body": { + "description": "Organization responsible for the rulebook.", + "type": "string" + }, + "guidance": { + "description": "Instructions for preserving citations, exceptions and clarification questions.", + "type": "string" + }, + "language": { + "description": "Language of the rulebook evidence.", + "type": "string" + }, + "myopl_url": { + "description": "MYOPL rulebook guide to cite.", + "format": "uri", + "type": "string" + }, + "source": { + "description": "MYOPL rule evidence source.", + "type": "string" + }, + "source_url": { + "description": "Governing body's official rulebook page.", + "format": "uri", + "type": "string" + }, + "spoken_reply": { + "description": "Rule response with MYOPL attribution and citation link.", + "type": "string" + } + }, + "required": [ + "source", + "governing_body", + "edition", + "language", + "source_url", + "myopl_url", + "evidence", + "clarification", + "guidance", + "spoken_reply" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "error": { + "description": "Tool execution or argument error; the enclosing result has isError set to true.", + "type": "string" + }, + "myopl_url": { + "description": "MYOPL website.", + "format": "uri", + "type": "string" + }, + "source": { + "const": "MYOPL", + "description": "Source platform.", + "type": "string" + } + }, + "required": [ + "error", + "source", + "myopl_url" + ], + "type": "object" + } + ], + "type": "object" +}
1 tool update
- Changed
prepare_pickleball_browse1 field changed- changed
Input schema / properties / category / enumPrevious value: -[ - "courts", - "clubs", - "sessions" -]New value: +[ + "courts", + "clubs", + "sessions", + "leaderboards" +]
5 tool updates
- First observed
get_public_player_rating - First observed
prepare_pickleball_browse - First observed
search_myopl_help - First observed
search_myopl_website - First observed
search_pickleball_rules
Publisher details
- Operator
- MYOPL | The Officially Casual Rating System for Open Play · Publisher source
- Operator website
- https://myopl.net/ · Publisher source
- Vendor relationship
- First-party
- Documentation
- https://myopl.net/wiki/oauth/ · Publisher source
- Trust center
- https://myopl.net/security-policy/ · Publisher source
- Restrictions
- Not applicable
Related MCP Connectors
MYOPL pickleball ratings, sessions, RSVP preparation and own statistics via OAuth sign-in and consent.
Run racket-sport tournaments from your AI assistant: fair draws, scores, live standings.
Public league standings, schedules and brackets; start a league or bracket with no account.
Split court costs, settle up and plan fair rotations for pickup games. Free.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceTurns official pickleball scoring rules into callable tools for LLMs to track live matches accurately.MIT
- AlicenseNot gradedqualityCmaintenanceTournament software for tennis, padel, pickleball and more: fair draws, live standings, scores and dropout handling.MIT
- -licenseNot gradedqualityNot gradedmaintenanceEnables checking Matchpoint club balance, listing free padel court availability, and booking private Open Matches through natural language from AI clients like Cursor or Claude Desktop.-
- AlicenseAqualityAmaintenanceReal-time tennis data for ATP, WTA, Challenger and ITF: live scores, player rankings, match-winner odds, and model win-probability. 12 read-only tools; a tier-gated endpoint returns a plain-English explanation of which plan it needs rather than a bare 403. Requires a paid API key.2498 npm152MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.