Skip to main content
Glama

MYOPL Personal MCP - Pickleball Ratings & Statistics

Server Details

MYOPL pickleball ratings, sessions, RSVP preparation and own statistics via OAuth sign-in and consent.

Ownership verified
Status
Healthy
Uptime
99.3% over 21 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.9/5.0

Scored across 5 tools

Disambiguation3/5

get_my_rating and get_my_statistics_card overlap significantly: get_my_rating already includes the statistics card, and descriptions warn against calling both for the same question. This creates unclear boundaries for agents. The other tools (get_my_action_status, get_my_next_session, prepare_my_rsvp) are distinct.

Naming Consistency5/5

All tool names follow a consistent get_my_* or prepare_my_* pattern in snake_case. No deviations in verb style or casing, making the naming highly predictable.

Tool Count5/5

Five tools is well-scoped for a personal pickleball assistant covering ratings, statistics, sessions, and RSVP preparation/status. Each tool maps to a distinct user need, and the count is neither thin nor bloated.

Completeness4/5

The surface covers ratings, statistics, next session lookup, RSVP preparation, and RSVP completion status. Missing an explicit RSVP confirmation tool (by design external) and no way to list leagues or past sessions, but core personal workflows are present.

Available Tools

5 tools
get_my_action_statusA
Read-onlyIdempotent
Inspect

Check whether MYOPL confirmed completion of your prepared RSVP.

NameRequiredDescriptionDefault
action_idYesAction identifier returned by prepare_my_rsvp on this same account connection.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare the full safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description adds useful context that the check concerns a third party's (MYOPL's) confirmation of an action, but says nothing about latency, polling behavior, or what a pending/failed confirmation looks like.

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?

A single front-loaded sentence with no filler; the object of the check is stated immediately after the verb. Nothing here is wasted.

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 an output schema present, return values need no explanation, and the 100%-covered single parameter needs no elaboration. What remains thin is the operational context (that this is a follow-up poll to prepare_my_rsvp), but for a one-parameter status check the definition is close to sufficient.

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 single action_id parameter is documented in the schema as 'returned by prepare_my_rsvp on this same account connection', so the schema already carries the semantics. The description adds no further parameter detail, which is the expected baseline when the schema does the heavy lifting.

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 pairs a specific verb ('Check') with a specific resource ('confirmation of your prepared RSVP'), and the possessive 'your prepared RSVP' ties it implicitly to the prepare_my_rsvp sibling, distinguishing it from the other get_my_* read tools. It is clear, though it never names the sibling tool outright and relies on domain jargon ('MYOPL') the agent may not know.

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?

Usage is only implied: the phrase 'your prepared RSVP' suggests this is called after prepare_my_rsvp to poll for confirmation, but the description never states when to call it, that it follows a prepare step, or whether it should be re-polled until a terminal state. No explicit exclusions or alternatives are given.

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

get_my_next_sessionB
Read-onlyIdempotent
Inspect

Find the next session for a league you belong to.

NameRequiredDescriptionDefault
leagueYesExact MYOPL league slug from its link, for a league the signed-in account belongs to.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered without the description. The description adds the meaningful access constraint that the league must be one the signed-in account belongs to, which is genuine context beyond the annotations, but says nothing about latency, missing sessions, or behavior when none exists.

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?

A single front-loaded sentence with no filler, no restated name, and no redundancy. Every word contributes to scope.

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 one fully documented parameter, an output schema covering return values, and annotations covering safety, the description is appropriately lean. The only gap is that 'next session' is not defined in terms of ordering or time zone, a minor ambiguity for a query tool of this simplicity.

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 single 'league' parameter is already documented in detail (exact MYOPL slug, membership requirement, pattern). The description's only added nuance is the ownership constraint, which largely duplicates the schema text, so the baseline of 3 applies.

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?

States a specific verb ('Find') and resource ('next session') scoped to 'a league you belong to', which clearly separates it from siblings like get_my_rating or get_my_statistics_card. It does not explicitly name or contrast those siblings, so it stops short of a 5.

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?

The description gives no when-to-use, when-not-to-use, or alternative routing. The only hint is the implicit membership condition ('a league you belong to'), with no guidance on what to do for leagues you don't belong to or how this relates to get_my_action_status or prepare_my_rsvp.

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

get_my_ratingA
Read-onlyIdempotent
Inspect

Retrieve current published OPL ratings for the signed-in player. Use for questions such as what is my pickleball rating. Call again for each new current-rating question; previous chat answers may be stale. This connection also grants your statistics: this single call displays the complete MYOPL card. Do not call a second tool to display it again.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive behavior, so the bar is lower. The description still adds real context beyond them: that answers may be stale and must be re-fetched, that no arguments are needed, and that this single call returns the complete MYOPL card rather than a rating fragment.

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?

Four sentences that are front-loaded with the core purpose and the freshness rule. The statistics-serving point and the 'do not call a second tool' instruction overlap somewhat, and the OPL/MYOPL vocabulary shift costs a little clarity.

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-argument read tool with a full output schema, full annotation coverage, and no nested objects, the description supplies the essentials: purpose, trigger questions, freshness discipline, and sibling avoidance. It does not need to describe the card contents, but the rating-vs-card ambiguity leaves a small gap.

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 tool takes zero parameters, so the baseline is 4. The description confirms 'MYOPL uses the account connected through OAuth,' which matches the schema note but adds nothing the schema does not already state.

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 gives a specific verb and resource: 'Retrieve current published OPL ratings for the signed-in player,' and it explicitly steers away from re-calling another display tool ('Do not call a second tool to display it again'). However, the mixed 'OPL ratings' vs 'MYOPL card' terminology blurs whether this is a rating lookup or a full statistics card, which keeps it short of a clean 5.

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 names the triggering question type ('what is my pickleball rating'), states the refresh condition ('Call again for each new current-rating question; previous chat answers may be stale'), and gives an explicit negative rule against calling a sibling display tool. When-to-use and when-not-to-use are both spelled out.

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

get_my_statistics_cardA
Read-onlyIdempotent
Inspect

Retrieve your own private singles and doubles statistics card when asked for games, points, opponents or reliability. The get_my_rating tool already includes this card when statistics access is granted: do not call both tools for the same rating question. Include the public rating-card totals and a MYOPL source link in the reply.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare the safe-read profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description adds meaningful context beyond them: the card is private and gated on statistics access being granted, and it instructs the agent to include the public rating-card totals and a MYOPL source link in the reply.

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?

Three sentences, front-loaded with the purpose and followed by the routing rule and output guidance; no wasted wording. The final presentation directive is somewhat unusual but still earns its place by shaping the reply.

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 parameters, an output schema present, and full annotation coverage, the description supplies everything the agent needs: trigger conditions, the sibling conflict to avoid, auth gating, and reply-format guidance. Nothing material 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?

The tool takes zero arguments, and the schema states that MYOPL uses the OAuth-connected account, which is the baseline 4 for a parameterless tool. There is no additional parameter syntax the description could add.

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?

States a specific verb (Retrieve) and resource (your own private singles and doubles statistics card) and explicitly distinguishes itself from the sibling get_my_rating by noting that tool already includes this card. An agent can route between the two without inspecting either schema.

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?

Gives explicit triggers ('when asked for games, points, opponents or reliability') and an explicit when-not/alternative rule ('do not call both tools for the same rating question'). This is exactly the when/when-not/alternative structure the dimension rewards.

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

prepare_my_rsvpAInspect

Prepare your RSVP for review and explicit confirmation on MYOPL. This call does not change an RSVP.

NameRequiredDescriptionDefault
leagueYesExact MYOPL league slug from its link, for a league the signed-in account belongs to.
responseYesProposed attendance: yes to attend, maybe if undecided, or no to decline. The owner confirms on MYOPL.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

With readOnlyHint=false the description usefully reassures that no RSVP is actually changed, consistent with destructiveHint=false. But it leaves the real side effect unexplained: if the call is not read-only yet changes no RSVP, what does it write (a pending proposal, a token, a draft)? No auth or rate-limit context either.

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 with zero boilerplate; the non-mutation guarantee is front-loaded immediately after the purpose so the agent sees the key constraint at a glance.

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?

An output schema exists, so return values need no explanation, and both required params are documented. The workflow (stage now, owner confirms later) is covered; the only real gap is the precise state effect of a non-read-only call.

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 both 'league' and 'response' are fully documented in the schema, including the enum meanings and the league slug constraint. The description adds no parameter-level detail, which is the correct baseline when the schema already carries the 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?

States a specific verb ('prepare') and resource ('RSVP') and clarifies the outcome: it stages an RSVP for review and confirmation on MYOPL rather than applying it. It is distinguishable from the get_my_* siblings, though it never names them or explains exactly what artifact the call produces.

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?

Usage is implied by 'Prepare your RSVP for review and explicit confirmation' — you call this before the owner confirms. However, no explicit when-to-use condition or alternative is named, and 'This call does not change an RSVP' only hints that a different step (the MYOPL confirmation) performs the actual change.

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. 5 tool updates
    • Changedget_my_action_status3 fields changed
      • addedInput schema / description
        Added value: +"Arguments for get_my_action_status."
      • addedInput schema / properties / action_id / description
        Added value: +"Action identifier returned by prepare_my_rsvp on this same account connection."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "description": "MYOPL structured response for get_my_action_status.",
        +  "oneOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "guidance": {
        +          "description": "Instructions for interpreting the action state.",
        +          "type": "string"
        +        },
        +        "status": {
        +          "description": "Only completed confirms that MYOPL synchronized the RSVP; unavailable means no accessible unexpired action.",
        +          "enum": [
        +            "pending",
        +            "processing",
        +            "completed",
        +            "failed",
        +            "unavailable"
        +          ],
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "status"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "error": {
        +          "description": "Tool execution or argument error; the enclosing result has isError set to true.",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "error"
        +      ],
        +      "type": "object"
        +    }
        +  ],
        +  "type": "object"
        +}
    • Changedget_my_next_session3 fields changed
      • addedInput schema / description
        Added value: +"Arguments for get_my_next_session."
      • addedInput schema / properties / league / description
        Added value: +"Exact MYOPL league slug from its link, for a league the signed-in account belongs to."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "description": "MYOPL structured response for get_my_next_session.",
        +  "oneOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "date": {
        +          "description": "Next session date as displayed by MYOPL.",
        +          "type": "string"
        +        },
        +        "league": {
        +          "description": "MYOPL league slug.",
        +          "type": "string"
        +        },
        +        "league_name": {
        +          "description": "League display name.",
        +          "type": "string"
        +        },
        +        "time": {
        +          "description": "Next session time as displayed by MYOPL.",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "league",
        +        "league_name",
        +        "date",
        +        "time"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "error": {
        +          "description": "Tool execution or argument error; the enclosing result has isError set to true.",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "error"
        +      ],
        +      "type": "object"
        +    }
        +  ],
        +  "type": "object"
        +}
    • Changedget_my_rating2 fields changed
      • addedInput schema / description
        Added value: +"No arguments. MYOPL uses the account connected through OAuth."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "description": "MYOPL structured response for get_my_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"
        +        }
        +      },
        +      "required": [
        +        "error"
        +      ],
        +      "type": "object"
        +    }
        +  ],
        +  "type": "object"
        +}
    • Changedget_my_statistics_card2 fields changed
      • addedInput schema / description
        Added value: +"No arguments. MYOPL uses the account connected through OAuth."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "description": "MYOPL structured response for get_my_statistics_card.",
        +  "oneOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "card_type": {
        +          "const": "myopl_rating",
        +          "description": "Type of the accompanying MYOPL card.",
        +          "type": "string"
        +        },
        +        "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"
        +        },
        +        "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"
        +        },
        +        "sport": {
        +          "const": "pickleball",
        +          "description": "Sport for these ratings.",
        +          "type": "string"
        +        },
        +        "summary": {
        +          "description": "MYOPL rating and statistics summary for the text reply.",
        +          "type": "string"
        +        },
        +        "username": {
        +          "description": "Exact MYOPL player username.",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "found",
        +        "source",
        +        "source_url",
        +        "summary",
        +        "card_type",
        +        "username",
        +        "sport",
        +        "singles_opl",
        +        "doubles_opl",
        +        "singles",
        +        "doubles",
        +        "messenger_url",
        +        "guidance"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "error": {
        +          "description": "Tool execution or argument error; the enclosing result has isError set to true.",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "error"
        +      ],
        +      "type": "object"
        +    }
        +  ],
        +  "type": "object"
        +}
    • Changedprepare_my_rsvp4 fields changed
      • addedInput schema / description
        Added value: +"Arguments for prepare_my_rsvp."
      • addedInput schema / properties / league / description
        Added value: +"Exact MYOPL league slug from its link, for a league the signed-in account belongs to."
      • addedInput schema / properties / response / description
        Added value: +"Proposed attendance: yes to attend, maybe if undecided, or no to decline. The owner confirms on MYOPL."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "description": "MYOPL structured response for prepare_my_rsvp.",
        +  "oneOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "action_id": {
        +          "description": "Identifier to pass to get_my_action_status for this connection.",
        +          "pattern": "^[A-Za-z0-9]{64}$",
        +          "type": "string"
        +        },
        +        "confirmation_url": {
        +          "description": "MYOPL page where the owner reviews and confirms the RSVP.",
        +          "format": "uri",
        +          "type": "string"
        +        },
        +        "expires_in": {
        +          "description": "Seconds until this preparation expires.",
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "guidance": {
        +          "description": "Instructions for presenting the confirmation step.",
        +          "type": "string"
        +        },
        +        "status": {
        +          "const": "confirmation_required",
        +          "description": "The RSVP awaits the account owner's confirmation.",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "status",
        +        "action_id",
        +        "confirmation_url",
        +        "expires_in",
        +        "guidance"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "error": {
        +          "description": "Tool execution or argument error; the enclosing result has isError set to true.",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "error"
        +      ],
        +      "type": "object"
        +    }
        +  ],
        +  "type": "object"
        +}
  2. 5 tool updates
    • First observedget_my_action_status
    • First observedget_my_next_session
    • First observedget_my_rating
    • First observedget_my_statistics_card
    • First observedprepare_my_rsvp

Publisher details

Operator
MYOPL | The Officially Casual Rating System for Open Play Pickleball · Publisher source
Vendor relationship
First-party
Restrictions
Requires a MYOPL.net account and any paid plan.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables MCP clients to connect to a privacy-first, self-hostable workout planning and training log, allowing coaching agents to preview and apply program changes while accessing training data through OAuth-protected endpoints.
    AGPL 3.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables MCP clients to sign in with OAuth 2.1 and read a user's WHOOP recovery, sleep, strain, and workout data through read-only tools, while also receiving and forwarding signed WHOOP webhooks to your endpoints.
    16 npm
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Exposes WHOOP recovery, sleep, strain, and workout metrics to MCP-compatible AI assistants using OAuth 2.0 authentication, enabling daily wellbeing snapshots, trend analysis, and workload recommendations.
    6
    52 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables ChatGPT and other MCP clients to securely read Health Connect-derived health and training history, retrieve daily readiness and workout briefs, save schema-validated coach reports, and trigger email delivery through OAuth-protected tools.
    1
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources