We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/YuchengMaUTK/unofficial-wca-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
"""Person and competitor models."""
from typing import Dict, List, Optional
from pydantic import BaseModel, Field
from .base import PaginatedResponse, RankInfo
class EventRank(BaseModel):
"""Ranking information for a specific event."""
event_id: str = Field(..., alias="eventId", description="Event identifier")
best: int = Field(..., description="Best time/score in centiseconds or points")
rank: RankInfo = Field(..., description="Ranking positions")
class MedalCount(BaseModel):
"""Medal count information."""
gold: int = Field(..., description="Number of gold medals")
silver: int = Field(..., description="Number of silver medals")
bronze: int = Field(..., description="Number of bronze medals")
class RecordType(BaseModel):
"""Record count by type."""
wr: int = Field(..., alias="WR", description="World Records")
cr: int = Field(..., alias="CR", description="Continental Records")
nr: int = Field(..., alias="NR", description="National Records")
class Records(BaseModel):
"""Record information for singles and averages."""
single: RecordType = Field(..., description="Single solve records")
average: RecordType = Field(..., description="Average solve records")
class PersonRanks(BaseModel):
"""Person's ranking information."""
singles: List[EventRank] = Field(..., description="Single solve rankings")
averages: List[EventRank] = Field(..., description="Average solve rankings")
class CompetitionResult(BaseModel):
"""Result for a specific round in a competition."""
round: str = Field(..., description="Round name")
position: int = Field(..., description="Final position in round")
best: int = Field(..., description="Best single time in centiseconds")
average: int = Field(..., description="Average time in centiseconds")
format: str = Field(..., description="Competition format")
solves: List[int] = Field(..., description="Individual solve times in centiseconds")
class Person(BaseModel):
"""WCA person/competitor information."""
id: str = Field(..., description="WCA ID")
name: str = Field(..., description="Full name")
slug: str = Field(..., description="URL slug")
country: str = Field(..., description="Country code")
number_of_competitions: int = Field(..., alias="numberOfCompetitions", description="Total competitions attended")
competition_ids: List[str] = Field(..., alias="competitionIds", description="List of competition IDs")
number_of_championships: int = Field(..., alias="numberOfChampionships", description="Total championships attended")
championship_ids: List[str] = Field(..., alias="championshipIds", description="List of championship IDs")
rank: PersonRanks = Field(..., description="Ranking information")
medals: MedalCount = Field(..., description="Medal counts")
records: Records = Field(..., description="Record counts")
results: Dict[str, Dict[str, List[CompetitionResult]]] = Field(
...,
description="Competition results organized by competition ID and event ID"
)
# Paginated response types
class Persons(PaginatedResponse[Person]):
"""Paginated list of persons."""
pass