MYOPL MCP Server - Official Pickleball Rules & Ratings
Official 2026 USA Pickleball rules, free 4-decimal OPL ratings, and court/club/open play discovery.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"pickleball-public-knowledge": {
"url": "https://pickleball.myopl.net/api/v1/public/mcp"
}
}
}Remote endpoints
https://pickleball.myopl.net/api/v1/public/mcpstreamable-httphttps://api.myopl.net/mcpstreamable-httpWhat it can do
Tool inventory
Tools (5)
🟢prepare_pickleball_browse(location, language, category)
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.
Input Schema
{
"type": "object",
"properties": {
"location": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "City, state or country to search, such as Jupiter, FL. Clarify ambiguous locations with the user."
},
"language": {
"type": "string",
"enum": [
"en",
"es"
],
"default": "en",
"description": "Language for MYOPL content and labels: en for English or es for Spanish."
},
"category": {
"type": "string",
"enum": [
"courts",
"clubs",
"sessions",
"leaderboards"
],
"description": "Directory category to search. Omit to offer category choices; sessions and leaderboards return public league listings."
}
},
"required": [
"location"
],
"additionalProperties": false,
"description": "Arguments for prepare_pickleball_browse."
}Output Schema
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "MYOPL structured response for prepare_pickleball_browse.",
"oneOf": [
{
"type": "object",
"properties": {
"version": {
"type": "integer",
"const": 1,
"description": "Browse response format version."
},
"location": {
"type": "string",
"description": "Normalized city, state or country supplied by the caller."
},
"language": {
"type": "string",
"description": "Language of the response.",
"enum": [
"en",
"es"
]
},
"sport": {
"type": "string",
"description": "Sport being searched.",
"const": "pickleball"
},
"spoken_reply": {
"type": "string",
"description": "Browse choices or result summary with MYOPL links."
},
"choices": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Category accepted by the browse tool.",
"enum": [
"courts",
"clubs",
"sessions"
]
},
"label": {
"type": "string",
"description": "Localized category label."
},
"browse_section": {
"type": "string",
"description": "Corresponding MYOPL Browse section.",
"enum": [
"courts",
"clubs",
"opls"
]
}
},
"required": [
"id",
"label",
"browse_section"
],
"additionalProperties": false
},
"description": "Available MYOPL Browse categories."
},
"status": {
"type": "string",
"description": "Whether a category choice is needed or a search returned listings.",
"enum": [
"choice_required",
"results",
"no_results"
]
},
"guidance": {
"type": "string",
"description": "Instructions for citing and interpreting directory listings."
},
"source": {
"type": "string",
"description": "Source platform.",
"const": "MYOPL"
},
"source_url": {
"type": "string",
"description": "MYOPL court and club directory.",
"format": "uri"
},
"selection": {
"type": "object",
"properties": {
"category": {
"type": "string",
"description": "Selected category.",
"enum": [
"courts",
"clubs",
"sessions",
"leaderboards"
]
},
"browse_section": {
"type": "string",
"description": "MYOPL Browse section.",
"enum": [
"courts",
"clubs",
"opls"
]
},
"query": {
"type": "string",
"description": "Normalized location used for this search."
},
"sport": {
"type": "string",
"description": "Selected sport.",
"const": "pickleball"
}
},
"required": [
"category",
"browse_section",
"query",
"sport"
],
"additionalProperties": false,
"description": "Present when a category was selected."
},
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"entity_type": {
"type": "string",
"description": "Type of public directory listing.",
"enum": [
"location",
"club",
"league"
]
},
"sport_type": {
"type": "string",
"description": "Listing sport.",
"const": "pickleball"
},
"slug": {
"type": "string",
"description": "Public listing identifier."
},
"name": {
"type": "string",
"description": "Listing display name."
},
"public_url": {
"type": "string",
"description": "MYOPL listing page to cite.",
"format": "uri"
},
"source": {
"type": "string",
"description": "Source platform.",
"const": "MYOPL"
},
"description": {
"type": [
"string",
"null"
],
"description": "Published listing description; null means unspecified."
},
"city": {
"type": [
"string",
"null"
],
"description": "Published listing city; null means unspecified."
},
"region": {
"type": [
"string",
"null"
],
"description": "Published listing region; null means unspecified."
},
"country": {
"type": [
"string",
"null"
],
"description": "Published listing country; null means unspecified."
},
"access": {
"type": [
"string",
"null"
],
"description": "Published listing access; null means unspecified."
},
"surface": {
"type": [
"string",
"null"
],
"description": "Published listing surface; null means unspecified."
},
"nets": {
"type": [
"string",
"null"
],
"description": "Published listing nets; null means unspecified."
},
"court_count": {
"type": "integer",
"minimum": 0,
"description": "Published court count. Zero is a known zero count."
},
"indoor_courts": {
"type": "integer",
"minimum": 0,
"description": "Published indoor courts. Zero is a known zero count."
},
"outdoor_courts": {
"type": "integer",
"minimum": 0,
"description": "Published outdoor courts. Zero is a known zero count."
},
"amenities": {
"type": "array",
"items": {
"type": "string",
"description": "Published amenity identifier."
},
"description": "Amenities recorded for the location."
},
"location": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Public court or location name."
},
"city": {
"type": [
"string",
"null"
],
"description": "City."
},
"region": {
"type": [
"string",
"null"
],
"description": "State or region."
},
"country": {
"type": [
"string",
"null"
],
"description": "Country."
},
"public_url": {
"type": "string",
"description": "MYOPL location page.",
"format": "uri"
}
},
"required": [
"name",
"city",
"region",
"country",
"public_url"
],
"additionalProperties": false,
"description": "Public location linked to this league."
},
"locations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Public court or location name."
},
"city": {
"type": [
"string",
"null"
],
"description": "City."
},
"region": {
"type": [
"string",
"null"
],
"description": "State or region."
},
"country": {
"type": [
"string",
"null"
],
"description": "Country."
},
"public_url": {
"type": "string",
"description": "MYOPL location page.",
"format": "uri"
}
},
"required": [
"name",
"city",
"region",
"country",
"public_url"
],
"additionalProperties": false
},
"description": "Public locations linked to this club."
},
"leaderboard_url": {
"type": "null",
"description": "Public standings URL when provided; null means none was returned."
},
"leaderboard_status": {
"type": "string",
"description": "Whether public standings are supplied.",
"const": "not_published"
},
"session_availability_checked": {
"type": "boolean",
"const": false,
"description": "Whether live session availability was checked for this listing."
}
},
"required": [
"entity_type",
"sport_type",
"slug",
"name",
"public_url",
"source"
],
"additionalProperties": false
},
"description": "Public listings for the selected category.",
"maxItems": 5
},
"has_more": {
"type": "boolean",
"description": "More listings matched than were returned; narrow the location to refine results."
}
},
"required": [
"version",
"location",
"language",
"sport",
"spoken_reply",
"choices",
"status",
"guidance",
"source",
"source_url"
],
"additionalProperties": false,
"allOf": [
{
"if": {
"properties": {
"status": {
"enum": [
"results",
"no_results"
]
}
}
},
"then": {
"required": [
"selection",
"results",
"has_more"
]
}
}
]
},
{
"type": "object",
"properties": {
"error": {
"type": "string",
"description": "Tool execution or argument error; the enclosing result has isError set to true."
},
"source": {
"type": "string",
"description": "Source platform.",
"const": "MYOPL"
},
"myopl_url": {
"type": "string",
"description": "MYOPL website.",
"format": "uri"
}
},
"required": [
"error",
"source",
"myopl_url"
],
"additionalProperties": false
}
]
}🟢search_pickleball_rules(query, language)
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.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 1,
"maxLength": 1000,
"description": "Pickleball play scenario, rule topic or official rule number to look up."
},
"language": {
"type": "string",
"enum": [
"en",
"es"
],
"default": "en",
"description": "Use en for official rulebook evidence; preserve original citations when translating the reply."
}
},
"required": [
"query"
],
"additionalProperties": false,
"description": "Arguments for search_pickleball_rules."
}Output Schema
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "MYOPL structured response for search_pickleball_rules.",
"oneOf": [
{
"type": "object",
"properties": {
"source": {
"type": "string",
"description": "MYOPL rule evidence source."
},
"governing_body": {
"type": "string",
"description": "Organization responsible for the rulebook."
},
"edition": {
"type": "string",
"description": "Rulebook edition year as a string."
},
"language": {
"type": "string",
"description": "Language of the rulebook evidence."
},
"source_url": {
"type": "string",
"description": "Governing body's official rulebook page.",
"format": "uri"
},
"myopl_url": {
"type": "string",
"description": "MYOPL rulebook guide to cite.",
"format": "uri"
},
"evidence": {
"type": "array",
"items": {
"type": "object",
"properties": {
"rule": {
"type": "string",
"description": "Rule identifier."
},
"rule_number": {
"type": "string",
"description": "Official rule identifier for citation."
},
"official_text": {
"type": [
"string",
"null"
],
"description": "Verbatim rule excerpt, or null if contact redaction was required.",
"maxLength": 4000
},
"canonical_url": {
"type": "string",
"description": "MYOPL rulebook guide citation URL.",
"format": "uri"
},
"canonical_url_type": {
"type": "string",
"description": "Identifies the linked source as a rulebook guide.",
"const": "rulebook_guide"
},
"title": {
"type": "string",
"description": "Rule title."
},
"text": {
"type": "string",
"description": "Rule excerpt with contact details redacted where necessary.",
"maxLength": 4000
},
"truncated": {
"type": "boolean",
"description": "True when the excerpt is shorter than the source rule."
},
"authority": {
"type": "string",
"description": "Authority classification of the source record."
}
},
"required": [
"rule",
"rule_number",
"official_text",
"canonical_url",
"canonical_url_type",
"title",
"text",
"truncated",
"authority"
],
"additionalProperties": false
},
"description": "Up to five cited rule excerpts.",
"maxItems": 5
},
"clarification": {
"type": [
"string",
"null"
],
"description": "Required clarification of the play, or null."
},
"guidance": {
"type": "string",
"description": "Instructions for preserving citations, exceptions and clarification questions."
},
"spoken_reply": {
"type": "string",
"description": "Rule response with MYOPL attribution and citation link."
},
"answer": {
"type": "string",
"description": "Grounded answer with rule citations when supplied."
}
},
"required": [
"source",
"governing_body",
"edition",
"language",
"source_url",
"myopl_url",
"evidence",
"clarification",
"guidance",
"spoken_reply"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"error": {
"type": "string",
"description": "Tool execution or argument error; the enclosing result has isError set to true."
},
"source": {
"type": "string",
"description": "Source platform.",
"const": "MYOPL"
},
"myopl_url": {
"type": "string",
"description": "MYOPL website.",
"format": "uri"
}
},
"required": [
"error",
"source",
"myopl_url"
],
"additionalProperties": false
}
]
}🟢search_myopl_help(query, language)
Find published MYOPL Help Center instructions with source URLs. No account or conversation access.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 1,
"maxLength": 1000,
"description": "MYOPL feature or task for which the user needs instructions."
},
"language": {
"type": "string",
"enum": [
"en",
"es"
],
"default": "en",
"description": "Language for MYOPL content and labels: en for English or es for Spanish."
}
},
"required": [
"query"
],
"additionalProperties": false,
"description": "Arguments for search_myopl_help."
}Output Schema
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "MYOPL structured response for search_myopl_help.",
"oneOf": [
{
"type": "object",
"properties": {
"source": {
"type": "string",
"description": "Published source collection."
},
"myopl_url": {
"type": "string",
"description": "MYOPL website.",
"format": "uri"
},
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Published MYOPL page to cite.",
"format": "uri"
},
"title": {
"type": "string",
"description": "Page title."
},
"language": {
"type": "string",
"description": "Language of the response.",
"enum": [
"en",
"es"
]
},
"excerpt": {
"type": "string",
"description": "Matching passage from the page.",
"maxLength": 1800
},
"truncated": {
"type": "boolean",
"description": "True when the excerpt is only part of the source page."
}
},
"required": [
"url",
"title",
"language",
"excerpt",
"truncated"
],
"additionalProperties": false
},
"description": "Matching MYOPL pages; empty when no page matches.",
"maxItems": 5
},
"clarification": {
"type": [
"string",
"null"
],
"description": "Follow-up question when more detail is needed, otherwise null."
},
"guidance": {
"type": "string",
"description": "Citation and source interpretation instructions."
}
},
"required": [
"source",
"myopl_url",
"results",
"clarification",
"guidance"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"error": {
"type": "string",
"description": "Tool execution or argument error; the enclosing result has isError set to true."
},
"source": {
"type": "string",
"description": "Source platform.",
"const": "MYOPL"
},
"myopl_url": {
"type": "string",
"description": "MYOPL website.",
"format": "uri"
}
},
"required": [
"error",
"source",
"myopl_url"
],
"additionalProperties": false
}
]
}🟢search_myopl_website(query, language)
Find published MYOPL product and website information with source URLs. No account or conversation access.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 1,
"maxLength": 1000,
"description": "MYOPL product or website topic to find in published pages."
},
"language": {
"type": "string",
"enum": [
"en",
"es"
],
"default": "en",
"description": "Language for MYOPL content and labels: en for English or es for Spanish."
}
},
"required": [
"query"
],
"additionalProperties": false,
"description": "Arguments for search_myopl_website."
}Output Schema
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "MYOPL structured response for search_myopl_website.",
"oneOf": [
{
"type": "object",
"properties": {
"source": {
"type": "string",
"description": "Published source collection."
},
"myopl_url": {
"type": "string",
"description": "MYOPL website.",
"format": "uri"
},
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Published MYOPL page to cite.",
"format": "uri"
},
"title": {
"type": "string",
"description": "Page title."
},
"language": {
"type": "string",
"description": "Language of the response.",
"enum": [
"en",
"es"
]
},
"excerpt": {
"type": "string",
"description": "Matching passage from the page.",
"maxLength": 1800
},
"truncated": {
"type": "boolean",
"description": "True when the excerpt is only part of the source page."
}
},
"required": [
"url",
"title",
"language",
"excerpt",
"truncated"
],
"additionalProperties": false
},
"description": "Matching MYOPL pages; empty when no page matches.",
"maxItems": 5
},
"clarification": {
"type": [
"string",
"null"
],
"description": "Follow-up question when more detail is needed, otherwise null."
},
"guidance": {
"type": "string",
"description": "Citation and source interpretation instructions."
}
},
"required": [
"source",
"myopl_url",
"results",
"clarification",
"guidance"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"error": {
"type": "string",
"description": "Tool execution or argument error; the enclosing result has isError set to true."
},
"source": {
"type": "string",
"description": "Source platform.",
"const": "MYOPL"
},
"myopl_url": {
"type": "string",
"description": "MYOPL website.",
"format": "uri"
}
},
"required": [
"error",
"source",
"myopl_url"
],
"additionalProperties": false
}
]
}🟢get_public_player_rating(username)
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.
Input Schema
{
"type": "object",
"properties": {
"username": {
"type": "string",
"pattern": "^[A-Za-z0-9_.-]{1,64}$",
"maxLength": 64,
"description": "Exact public MYOPL username without the @ prefix; for example g."
}
},
"required": [
"username"
],
"additionalProperties": false,
"description": "Arguments for get_public_player_rating."
}Output Schema
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "MYOPL structured response for get_public_player_rating.",
"oneOf": [
{
"type": "object",
"oneOf": [
{
"type": "object",
"properties": {
"found": {
"type": "boolean",
"description": "Whether an accessible player with this exact username was found.",
"const": true
},
"source": {
"type": "string",
"description": "Source platform.",
"const": "MYOPL"
},
"source_url": {
"type": "string",
"description": "MYOPL rating reference to cite in the answer.",
"format": "uri"
},
"spoken_reply": {
"type": "string",
"description": "Rating and public card totals with MYOPL attribution and links."
},
"retrieved_at": {
"type": "string",
"description": "Time this response was retrieved, including UTC offset.",
"format": "date-time"
},
"username": {
"type": "string",
"description": "Exact MYOPL player username."
},
"sport": {
"type": "string",
"description": "Sport for these ratings.",
"const": "pickleball"
},
"singles_opl": {
"type": [
"string",
"null"
],
"description": "Published OPL rating as an exact decimal string, preserving precision; null means unrated."
},
"doubles_opl": {
"type": [
"string",
"null"
],
"description": "Published OPL rating as an exact decimal string, preserving precision; null means unrated."
},
"singles": {
"type": "object",
"properties": {
"rating": {
"type": [
"string",
"null"
],
"description": "Published OPL rating as an exact decimal string, preserving precision; null means unrated."
},
"status": {
"type": "string",
"description": "Whether a published rating exists.",
"enum": [
"rated",
"unrated"
]
},
"reliability_score": {
"type": [
"number",
"null"
],
"minimum": 0,
"maximum": 100,
"description": "Reliability Score from 0 to 100; null means unavailable."
},
"games_played": {
"type": [
"integer",
"null"
],
"minimum": 0,
"description": "Games played in this format; null means unknown and zero means a known zero total."
},
"games_won": {
"type": [
"integer",
"null"
],
"minimum": 0,
"description": "Games won in this format; null means unknown and zero means a known zero total."
},
"games_lost": {
"type": [
"integer",
"null"
],
"minimum": 0,
"description": "Games lost in this format; null means unknown and zero means a known zero total."
},
"points_won": {
"type": [
"integer",
"null"
],
"minimum": 0,
"description": "Points won in this format; null means unknown and zero means a known zero total."
},
"points_lost": {
"type": [
"integer",
"null"
],
"minimum": 0,
"description": "Points lost in this format; null means unknown and zero means a known zero total."
}
},
"required": [
"rating",
"status",
"reliability_score",
"games_played",
"games_won",
"games_lost",
"points_won",
"points_lost"
],
"additionalProperties": false,
"description": "Singles rating and public card totals. Games are distinct from matches."
},
"doubles": {
"type": "object",
"properties": {
"rating": {
"type": [
"string",
"null"
],
"description": "Published OPL rating as an exact decimal string, preserving precision; null means unrated."
},
"status": {
"type": "string",
"description": "Whether a published rating exists.",
"enum": [
"rated",
"unrated"
]
},
"reliability_score": {
"type": [
"number",
"null"
],
"minimum": 0,
"maximum": 100,
"description": "Reliability Score from 0 to 100; null means unavailable."
},
"games_played": {
"type": [
"integer",
"null"
],
"minimum": 0,
"description": "Games played in this format; null means unknown and zero means a known zero total."
},
"games_won": {
"type": [
"integer",
"null"
],
"minimum": 0,
"description": "Games won in this format; null means unknown and zero means a known zero total."
},
"games_lost": {
"type": [
"integer",
"null"
],
"minimum": 0,
"description": "Games lost in this format; null means unknown and zero means a known zero total."
},
"points_won": {
"type": [
"integer",
"null"
],
"minimum": 0,
"description": "Points won in this format; null means unknown and zero means a known zero total."
},
"points_lost": {
"type": [
"integer",
"null"
],
"minimum": 0,
"description": "Points lost in this format; null means unknown and zero means a known zero total."
}
},
"required": [
"rating",
"status",
"reliability_score",
"games_played",
"games_won",
"games_lost",
"points_won",
"points_lost"
],
"additionalProperties": false,
"description": "Doubles rating and public card totals. Games are distinct from matches."
},
"messenger_url": {
"type": "string",
"description": "Player's unique MYOPL Messenger invitation link.",
"format": "uri"
},
"guidance": {
"type": "string",
"description": "Instructions for citing and interpreting the public rating totals."
}
},
"required": [
"found",
"source",
"source_url",
"spoken_reply",
"retrieved_at",
"username",
"sport",
"singles_opl",
"doubles_opl",
"singles",
"doubles",
"messenger_url",
"guidance"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"found": {
"type": "boolean",
"description": "Whether an accessible player with this exact username was found.",
"const": false
},
"source": {
"type": "string",
"description": "Source platform.",
"const": "MYOPL"
},
"source_url": {
"type": "string",
"description": "MYOPL rating reference to cite in the answer.",
"format": "uri"
},
"spoken_reply": {
"type": "string",
"description": "Rating and public card totals with MYOPL attribution and links."
},
"retrieved_at": {
"type": "string",
"description": "Time this response was retrieved, including UTC offset.",
"format": "date-time"
}
},
"required": [
"found",
"source",
"source_url",
"spoken_reply",
"retrieved_at"
],
"additionalProperties": false
}
]
},
{
"type": "object",
"properties": {
"error": {
"type": "string",
"description": "Tool execution or argument error; the enclosing result has isError set to true."
},
"source": {
"type": "string",
"description": "Source platform.",
"const": "MYOPL"
},
"myopl_url": {
"type": "string",
"description": "MYOPL website.",
"format": "uri"
}
},
"required": [
"error",
"source",
"myopl_url"
],
"additionalProperties": false
}
]
}Community
Evidence