← Back to Skills Marketplace
ogruenig

Ebusy Courts

by ogruenig · GitHub ↗ · v1.0.0
cross-platform ✓ Security Clean
274
Downloads
0
Stars
1
Active Installs
1
Versions
Install in OpenClaw
/install ebusy-courts
Description
Query eBusy-based tennis hall bookings via a small Python client.
README (SKILL.md)

eBusy Courts Skill

This skill wraps a small Python client (ebusy_api.py) to log into eBusy-based booking systems and fetch reservations for a given court-module and date.

It is designed to work with multiple halls by switching configuration via environment variables. All hall- and user-specific values are provided by the environment, not hard-coded in the skill.

Important: No usernames/passwords should be committed into this skill folder. Keep real credentials in a local .env, your shell environment, or OpenClaw's gateway config.


Files

  • skills/ebusy-courts/ebusy_api.py – core Python client
  • skills/ebusy-courts/SKILL.md – this documentation

Optional (local-only, do not publish):

  • skills/.env – local environment file with hall-specific credentials

Python client: ebusy_api.py

The client is written to be generic; it reads all hall-specific config from environment variables:

EBUSY_BASE_URL       # e.g. https://myclub.ebusy.de
EBUSY_USERNAME       # login user for the chosen hall
EBUSY_PASSWORD       # login password for the chosen hall
EBUSY_COURT_ID       # eBusy court-module id for this hall
EBUSY_FIRST_COURT_NO # first court number inside that module

Usage (in a venv with requests + beautifulsoup4 installed):

source venv/bin/activate
export EBUSY_BASE_URL="https://myclub.ebusy.de"
export EBUSY_USERNAME="\x3Cyour-user>"
export EBUSY_PASSWORD="\x3Cyour-password>"
export EBUSY_COURT_ID="\x3Cmodule-id>"
export EBUSY_FIRST_COURT_NO="\x3Cfirst-court-no>"

python skills/ebusy-courts/ebusy_api.py 03/07/2026

The script will:

  1. Log into the configured eBusy instance using the configured username/password.

  2. Fetch the reservations JSON for the given date.

  3. Print a sorted list of reservations:

    Reservierung Platz 1: 09:00 - 10:00 von \x3CText>
    Reservierung Platz 2: 10:00 - 11:00 von \x3CText>
    ...
    

Example hall profiles

This section shows example configurations for two real halls in Germany. Other users can copy the pattern and plug in their own club URLs and module IDs.

Example: Medenhalle Wiesbaden-Medenbach

  • Base URL: https://medenhalle.ebusy.de
  • EBUSY_COURT_ID = 1
  • EBUSY_FIRST_COURT_NO = 1
  • Credentials typically provided via:
    • MEDENHALLE_USER
    • MEDENHALLE_PASSWORD

Example shell setup:

source venv/bin/activate
# load your local secrets, e.g. from skills/.env
export EBUSY_BASE_URL="https://medenhalle.ebusy.de"
export EBUSY_USERNAME="$MEDENHALLE_USER"
export EBUSY_PASSWORD="$MEDENHALLE_PASSWORD"
export EBUSY_COURT_ID="1"
export EBUSY_FIRST_COURT_NO="1"

python skills/ebusy-courts/ebusy_api.py 03/07/2026

Example: KTEV Kelkheim

  • Base URL: https://ktev.ebusy.de
  • EBUSY_COURT_ID = 807
  • EBUSY_FIRST_COURT_NO = 2135
  • Credentials typically provided via:
    • KTEV_USER
    • KTEV_PASSWORD

Example shell setup:

source venv/bin/activate
# load your local secrets, e.g. from skills/.env
export EBUSY_BASE_URL="https://ktev.ebusy.de"
export EBUSY_USERNAME="$KTEV_USER"
export EBUSY_PASSWORD="$KTEV_PASSWORD"
export EBUSY_COURT_ID="807"
export EBUSY_FIRST_COURT_NO="2135"

python skills/ebusy-courts/ebusy_api.py 03/07/2026

How an agent can use this skill

When a user asks for availability in a given hall (e.g. "Suche freie Zeiten in der Tennishalle XYZ am Sonntag"), an OpenClaw agent can:

  1. Map the hall name to a profile (base URL, module id, first-court-no), either from TOOLS.md or agent-specific config.
  2. Ensure the environment variables EBUSY_* are set for that hall (credentials supplied by the runtime or skills/.env).
  3. Call ebusy_api.py for the relevant date, parse the JSON, and build an availability table (free vs booked) per court and time slot.

The decision logic (which profile to choose for which user request) should live in the agent and/or TOOLS.md, not in this skill's code.


Publishing considerations

  • Do not publish skills/.env or any file containing real credentials to ClawHub.
  • Ensure .gitignore excludes skills/.env and similar secret-bearing files.
  • The skill itself (this SKILL.md + ebusy_api.py) contains only generic logic and non-secret configuration; the example profiles are illustrative and can be replaced by any other eBusy-based club.
Usage Guidance
This skill's code is simple and matches the description, but before installing: (1) be prepared to provide eBusy credentials (EBUSY_BASE_URL, EBUSY_USERNAME, EBUSY_PASSWORD, EBUSY_COURT_ID) — the registry metadata does not list these, so don't be surprised when the script requires them; (2) run it in a virtualenv and pip install requests and beautifulsoup4 as SKILL.md suggests; (3) keep any .env or credential files local and out of published repos; (4) verify the base URL you set (the script has a default BASE_URL pointing to a real hall — if you don't set EBUSY_BASE_URL you may query that endpoint unintentionally); and (5) if you allow an agent to call this skill autonomously, ensure the agent is only given the specific hall credentials you want it to use (no broad or shared secrets).
Capability Analysis
Type: OpenClaw Skill Name: ebusy-courts Version: 1.0.0 The ebusy-courts skill is a legitimate Python-based client for querying tennis court availability on eBusy booking platforms. It correctly handles authentication using CSRF tokens and environment variables for credentials (ebusy_api.py), following standard practices for such integrations without any signs of data exfiltration to unauthorized endpoints or malicious execution.
Capability Assessment
Purpose & Capability
The skill's name/description match the code: it logs into eBusy instances and fetches reservations. The only mismatch is that the registry metadata lists no required environment variables even though the client requires EBUSY_BASE_URL, EBUSY_USERNAME, EBUSY_PASSWORD, EBUSY_COURT_ID (and optionally EBUSY_FIRST_COURT_NO). Requesting those credentials is proportionate to the stated purpose.
Instruction Scope
SKILL.md instructs the agent/user to set the eBusy-related environment variables and run the Python script; the instructions do not ask to read unrelated files, access unrelated services, or exfiltrate data. The agent usage guidance keeps decision logic out of the skill code as intended.
Install Mechanism
This is an instruction-only skill (no install spec). The code depends on third-party Python packages (requests, beautifulsoup4) which are not declared in registry metadata; SKILL.md mentions installing them in a venv, but the registry does not record these dependencies.
Credentials
The environment variables the skill uses (EBUSY_BASE_URL, EBUSY_USERNAME, EBUSY_PASSWORD, EBUSY_COURT_ID, EBUSY_FIRST_COURT_NO) are appropriate for accessing eBusy. However, the registry incorrectly lists 'none' for required env vars — the missing metadata could mislead users about what secrets are needed.
Persistence & Privilege
No elevated persistence is requested (always: false). The skill does not attempt to modify other skills or system config; it only reads environment variables and performs HTTP requests to the configured eBusy instance.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install ebusy-courts
  3. After installation, invoke the skill by name or use /ebusy-courts
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
Initial release — Python client for querying eBusy-based tennis court bookings. - Provides a generic Python script (ebusy_api.py) to log into eBusy tennis booking systems and fetch court reservations by date. - Uses environment variables to switch hall and user profiles; supports multiple clubs without code changes. - Includes setup instructions and example configurations for two real German hall profiles. - No credentials stored in the skill folder; sensitive data kept in your `.env` or environment. - Outputs sorted reservations per court and timeslot for the chosen date.
Metadata
Slug ebusy-courts
Version 1.0.0
License
All-time Installs 1
Active Installs 1
Total Versions 1
Frequently Asked Questions

What is Ebusy Courts?

Query eBusy-based tennis hall bookings via a small Python client. It is an AI Agent Skill for Claude Code / OpenClaw, with 274 downloads so far.

How do I install Ebusy Courts?

Run "/install ebusy-courts" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Ebusy Courts free?

Yes, Ebusy Courts is completely free (open-source). You can download, install and use it at no cost.

Which platforms does Ebusy Courts support?

Ebusy Courts is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Ebusy Courts?

It is built and maintained by ogruenig (@ogruenig); the current version is v1.0.0.

💬 Comments