API y MCP
Dos formas de leer los datos de GetCourt: una API JSON sencilla y un servidor MCP para asistentes de IA. Ambas son de solo lectura.
Devuelven exactamente lo que ya muestra la página de un partido: deporte, nivel, hora, pista y cuántas plazas quedan. Los partidos en pistas pendientes de moderación nunca salen.
API JSON
Sin clave ni sesión — la lista de partidos es pública.
GET https://getcourt.co/api/v1/games GET https://getcourt.co/api/v1/games/:id
Parámetros de consulta
| Parámetro | Qué hace |
|---|---|
| city | Ciudad tal como aparece en la pista, por ejemplo Belgrade. Se puede repetir. |
| sport | Deporte, por ejemplo Tennis, Padel, Squash. |
| skill_level | Nivel de juego, por ejemplo Beginner. |
| with_spots | true — solo partidos con plazas libres. |
| urgent | true — solo partidos con búsqueda urgente de jugadores. |
| from | Fecha mínima, ISO 8601 (AAAA-MM-DD). |
| to | Fecha máxima, ISO 8601 (AAAA-MM-DD). |
| upcoming | false — incluir partidos ya jugados. Por defecto solo los próximos. |
| limit | Cuántos partidos devolver: 1–100, 25 por defecto. |
Los partidos recurrentes siempre pasan los filtros de fecha: su próxima ocurrencia se calcula al vuelo en vez de guardarse, así que la respuesta puede incluir un partido fuera del rango pedido.
Petición
curl "https://getcourt.co/api/v1/games?city=Belgrade&sport=Tennis&with_spots=true&limit=2"
Respuesta
{
"games": [
{
"id": 1042,
"date": "2026-09-12",
"time": "19:00",
"duration_minutes": 90,
"recurring": false,
"sport": "Tennis",
"skill_level": "Intermediate",
"surface": "Hard",
"environment": "outdoor",
"kind": "game",
"with_coach": false,
"urgent_player_search": true,
"comment": "Doubles, bring a spare ball",
"players": { "taken": 3, "total": 4, "spots_left": 1 },
"court": {
"id": 17,
"name": "Tennis Club Ada",
"city": "Belgrade",
"country_code": "RS",
"latitude": 44.79,
"longitude": 20.41,
"indoor": false,
"outdoor": true,
"free": false,
"url": "https://getcourt.co/courts/17"
},
"url": "https://getcourt.co/games/1042"
}
]
}
Los participantes no salen de la app: la respuesta dice cuántas plazas están ocupadas, nunca quién las ocupa.
Servidor MCP
Los mismos datos como servidor Model Context Protocol, para que un asistente busque partidos por su cuenta en vez de leer páginas.
- Endpoint:
POST /mcp, Streamable HTTP sobre JSON-RPC 2.0, con lotes incluidos. - Versiones del protocolo:
2025-06-18,2025-03-26,2024-11-05. - Autorización:
Authorization: Bearer <token>. Si falta o es incorrecto, la respuesta es 401. Mientras no se haya emitido ni un token, el endpoint está apagado y responde 404. - Dónde conseguirlo: emítelo tú mismo en Cuenta → Seguridad cuando tu correo esté verificado o Telegram vinculado. Dura seis meses desde tu última petición, así que un token en uso no caduca; allí mismo puedes revocarlo.
Herramientas
| Herramienta | Qué hace |
|---|---|
| search_games | Busca partidos próximos por ciudad, deporte, nivel, fechas, plazas libres y búsqueda urgente. |
| get_game | Devuelve un partido por su id numérico. |
Configuración del cliente
La mayoría de clientes MCP aceptan una configuración JSON así:
{
"mcpServers": {
"getcourt": {
"type": "http",
"url": "https://getcourt.co/mcp",
"headers": { "Authorization": "Bearer YOUR_TOKEN" }
}
}
}
O llámalo directamente
curl -X POST https://getcourt.co/mcp \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"search_games","arguments":{"city":"Belgrade","with_spots":true}}}'
Límites
- API JSON: 60 peticiones por minuto e IP.
- MCP: 120 peticiones por minuto e IP — una pregunta suele costar varias llamadas.
- Ambas son de solo lectura: no crean partidos ni apuntan a nadie.