{
  "name": "Ladderboard",
  "description": "A round-robin ladder and match-score board for small clubs. Players join by scanning one printed QR poster; standings are computed from entered results using a fixed published rule order (deterministic, same results always give the same table). This service is a plain REST API and an MCP server over Streamable HTTP - it is NOT an A2A JSON-RPC agent. Docs at the documentationUrl.",
  "supportedInterfaces": [
    {
      "url": "https://ladder.rowb.app/mcp",
      "protocolBinding": "MCP",
      "protocolVersion": "1.0"
    },
    {
      "url": "https://ladder.rowb.app",
      "protocolBinding": "REST",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "rowb.app",
    "url": "https://rowb.app"
  },
  "version": "1.0.0",
  "documentationUrl": "https://ladder.rowb.app/llms.txt",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "extendedAgentCard": false
  },
  "defaultInputModes": [
    "application/json",
    "text/plain"
  ],
  "defaultOutputModes": [
    "application/json",
    "text/plain"
  ],
  "skills": [
    {
      "id": "get-standings",
      "name": "Get ladder standings",
      "description": "Compute the club ladder table from recorded matches (wins, head-to-head, set percentage, games, name). MCP tool: get_standings (bearer key required).",
      "tags": [
        "ladder",
        "standings",
        "sports-club"
      ]
    },
    {
      "id": "record-match",
      "name": "Record a match",
      "description": "Record a match result into the club ladder. MCP tool: record_match (bearer key required).",
      "tags": [
        "ladder",
        "match-results"
      ]
    }
  ],
  "mcpUrl": "https://ladder.rowb.app/mcp"
}