Skip to main content
Glama

MYOPL MCP Server - Official Pickleball Rules & Ratings

get_public_player_rating

Read-onlyIdempotent

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

TableJSON Schema
NameRequiredDescriptionDefault
usernameYesExact public MYOPL username without the @ prefix; for example g.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / description
      Added value: +"Arguments for get_public_player_rating."
    • addedInput schema / properties / username / description
      Added value: +"Exact public MYOPL username without the @ prefix; for example g."
    • changedOutput 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"
      +}
  2. First observed

TDQS

A4.4/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources