$npx -y skills add machina-sports/sports-skills --skill volleyball-dataDutch volleyball data (Eredivisie, Topdivisie, Superdivisie, and the full Dutch pyramid) via the Nevobo API. Standings, schedules, results, clubs, tournaments, and news. Zero config, no API keys. Use when: user asks about Dutch volleyball, Eredivisie volleyball, Nevobo, volleybal
| 1 | # Volleyball Data (Nevobo — Dutch Volleyball) |
| 2 | |
| 3 | Before writing queries, consult `references/api-reference.md` for endpoints, ID conventions, and data shapes. |
| 4 | |
| 5 | ## Setup |
| 6 | |
| 7 | Before first use, check if the CLI is available: |
| 8 | ```bash |
| 9 | which sports-skills || pip install sports-skills |
| 10 | ``` |
| 11 | If `pip install` fails (package not found or Python version error), install from GitHub: |
| 12 | ```bash |
| 13 | pip install git+https://github.com/machina-sports/sports-skills.git |
| 14 | ``` |
| 15 | The package requires Python 3.10+. If your default Python is older, use a specific version: |
| 16 | ```bash |
| 17 | python3 --version # check version |
| 18 | # If < 3.10, try: python3.12 -m pip install sports-skills |
| 19 | # On macOS with Homebrew: /opt/homebrew/bin/python3.12 -m pip install sports-skills |
| 20 | ``` |
| 21 | No API keys required. All data comes from the Nevobo (Nederlandse Volleybalbond) open API. |
| 22 | |
| 23 | ## Quick Start |
| 24 | |
| 25 | Prefer the CLI — it avoids Python import path issues: |
| 26 | ```bash |
| 27 | sports-skills volleyball get_competitions |
| 28 | sports-skills volleyball get_standings --competition_id=nevobo-eredivisie-heren |
| 29 | sports-skills volleyball get_results --competition_id=nevobo-eredivisie-dames |
| 30 | sports-skills volleyball get_schedule --competition_id=nevobo-topdivisie-heren-a |
| 31 | ``` |
| 32 | |
| 33 | Python SDK (alternative): |
| 34 | ```python |
| 35 | from sports_skills import volleyball |
| 36 | |
| 37 | standings = volleyball.get_standings(competition_id="nevobo-eredivisie-heren") |
| 38 | results = volleyball.get_results(competition_id="nevobo-eredivisie-dames") |
| 39 | ``` |
| 40 | |
| 41 | ## CRITICAL: Before Any Query |
| 42 | |
| 43 | CRITICAL: Before calling any data endpoint, verify: |
| 44 | - The `competition_id` uses a valid value from `references/competition-ids.md` — never guess. |
| 45 | - For club-specific commands, you have a valid Nevobo `club_id` (use `get_clubs` to find one — the `organisatiecode` field). |
| 46 | - Do NOT guess club IDs or competition IDs. Use `get_competitions` or `get_clubs` to discover them. |
| 47 | |
| 48 | ## The `competition_id` Parameter |
| 49 | |
| 50 | 8 leagues across the top 3 tiers of Dutch volleyball are pre-configured. The `competition_id` follows the pattern `nevobo-<league>-<gender>[-<pool>]`: |
| 51 | |
| 52 | - **Eredivisie** (Tier 1, 8 teams): `nevobo-eredivisie-heren`, `nevobo-eredivisie-dames` |
| 53 | - **Topdivisie** (Tier 2, 10 teams/pool): `nevobo-topdivisie-heren-a`, `nevobo-topdivisie-heren-b`, `nevobo-topdivisie-dames-a`, `nevobo-topdivisie-dames-b` |
| 54 | - **Superdivisie** (Tier 3, 10 teams): `nevobo-superdivisie-heren`, `nevobo-superdivisie-dames` |
| 55 | |
| 56 | For lower divisions (1e/2e/3e Divisie, regional, youth, beach — 6,400+ poules), use `get_poules` to discover them. |
| 57 | |
| 58 | See `references/competition-ids.md` for the full reference with team counts and the Dutch volleyball pyramid. |
| 59 | |
| 60 | ## Commands |
| 61 | |
| 62 | | Command | Description | |
| 63 | |---|---| |
| 64 | | `get_competitions` | List all available competitions and leagues | |
| 65 | | `get_standings` | League table (rank, team, matches, points) | |
| 66 | | `get_schedule` | Upcoming matches (teams, venue, date) | |
| 67 | | `get_results` | Match results (score, set-by-set scores) | |
| 68 | | `get_clubs` | List volleyball clubs (name, city, province) | |
| 69 | | `get_club_schedule` | Club's upcoming matches across all teams | |
| 70 | | `get_club_results` | Club's results across all teams | |
| 71 | | `get_poules` | Browse Nevobo poules (for lower divisions discovery) | |
| 72 | | `get_tournaments` | Tournament calendar | |
| 73 | | `get_news` | Federation news | |
| 74 | |
| 75 | See `references/api-reference.md` for full parameter lists and return shapes. |
| 76 | |
| 77 | ## Examples |
| 78 | |
| 79 | Example 1: Eredivisie standings |
| 80 | User says: "What are the current Dutch volleyball standings?" |
| 81 | Actions: |
| 82 | 1. Call `get_standings(competition_id="nevobo-eredivisie-heren")` for men |
| 83 | 2. Call `get_standings(competition_id="nevobo-eredivisie-dames")` for women |
| 84 | Result: League tables with rank, team name, matches played, and points |
| 85 | |
| 86 | Example 2: Recent match results |
| 87 | User says: "Show me recent Eredivisie volleyball results" |
| 88 | Actions: |
| 89 | 1. Call `get_results(competition_id="nevobo-eredivisie-heren")` |
| 90 | Result: Match results with home/away teams, match score (e.g. "3-1"), and set scores (e.g. ["25-21", "25-18", "21-25", "25-20"]) |
| 91 | |
| 92 | Example 3: Club schedule |
| 93 | User says: "What matches does LSV have coming up?" |
| 94 | Actions: |
| 95 | 1. Call `get_clubs(limit=10)` and find LSV's organisatiecode (CKL5C67) |
| 96 | 2. Call `get_club_schedule(club_id="CKL5C67")` |
| 97 | Result: |