{
  "name": "Rankly",
  "description": "Italian tournament management SaaS for 1v1 competitive sports and games. Live standings, Swiss/Elim brackets, digital tickets with QR check-in, organization-level ranking aggregation.",
  "url": "https://rankly.it",
  "version": "1.0.0",
  "provider": {
    "organization": "Soloweb S.R.L.",
    "url": "https://soloweb.io"
  },
  "documentationUrl": "https://rankly.it/docs/api",
  "capabilities": {
    "streaming": true,
    "pushNotifications": false,
    "stateTransitionHistory": false
  },
  "defaultInputModes": ["application/json", "text/plain"],
  "defaultOutputModes": ["application/json", "text/event-stream"],
  "skills": [
    {
      "id": "list-tournaments",
      "name": "List open tournaments",
      "description": "Returns the public list of tournaments with status 'registration', ordered by start date ascending.",
      "tags": ["tournament", "discovery", "public"],
      "examples": ["What tournaments are open right now?", "Show me Beyblade tournaments accepting registrations"]
    },
    {
      "id": "list-organizations",
      "name": "List organizations",
      "description": "Returns the public index of organizations using Rankly with their active tournament counts and follower counts.",
      "tags": ["organization", "discovery", "public"],
      "examples": ["What communities use Rankly?", "Find Beyblade clubs in Italy"]
    },
    {
      "id": "get-tournament-live",
      "name": "Get live tournament standings",
      "description": "Returns real-time standings and current matches for a running tournament. Supports SSE stream for real-time updates.",
      "tags": ["tournament", "standings", "live", "sse"],
      "examples": ["Show me the standings for tournament X", "Stream live updates for tournament X"]
    },
    {
      "id": "get-my-ticket",
      "name": "Get my ticket",
      "description": "For authenticated users: returns the digital ticket for a tournament they are registered in, including QR code reference for check-in.",
      "tags": ["ticket", "user", "authenticated"],
      "examples": ["What's my ticket code for tournament X?"]
    }
  ],
  "authentication": {
    "schemes": ["bearer"],
    "documentation": "https://rankly.it/auth.md"
  },
  "supportedInterfaces": [
    {
      "type": "rest",
      "url": "https://api.rankly.it/api/v1",
      "description": "REST API versionata. Schema OpenAPI 3 a https://rankly.it/openapi.json",
      "transport": "https"
    },
    {
      "type": "mcp",
      "url": "https://api.rankly.it/api/v1/mcp",
      "description": "Model Context Protocol endpoint (Streamable HTTP). Tools per discovery, live standings, tournament/org detail. Server card: https://rankly.it/.well-known/mcp.json",
      "transport": "https"
    },
    {
      "type": "sse",
      "url": "https://api.rankly.it/api/v1/public/tournaments/{tournamentId}/live/stream",
      "description": "Server-Sent Events stream per real-time invalidation di standings/match durante torneo running",
      "transport": "https"
    }
  ],
  "endpoints": {
    "api": "https://api.rankly.it/api/v1",
    "openapi": "https://rankly.it/openapi.json",
    "mcp": "https://rankly.it/.well-known/mcp.json"
  }
}
