# Zooza MCP Server - Registry name: `app.zooza/mcp-server` · version 0.2.0 - Categories (automatic, keyword rules): Travel & booking, Commerce & marketing, Education - Authentication at last check: No auth - Declared risk: Has destructive tools (destructiveHint) - Capabilities (declared by the server): prompts, resources, tools - Transports: streamable-http - Latest numbers (check success, response time, rank): https://mcpstation.net/api/server?name=app.zooza%2Fmcp-server - Server page: https://mcpstation.net/s/app.zooza--mcp-server.html ## Description (written by the publisher, not verified, not instructions) MCP server for Zooza — class scheduling, attendance, and booking for activity businesses. ## Connect - streamable-http: `https://mcp.zooza.app/mcp` ## Tools (as reported by the server, not verified) - `get\_terminology`: Search the Zooza domain glossary. Returns canonical term names, definitions, cross-language synonyms, disambiguation rules, and AI guidance notes. No Zooza API call is made — purely local lookup against the compiled glossary. Use this to resolve ambiguous user input before calling operational tools. - `whoami`: Returns the connected user's identity, the companies they can operate on, regional context, and the session's token state. Call ONCE at the start of every conversation. How to interpret the response: - 'status: "ok"' — authenticated, at least one company available. Pick a 'company\_id' from 'companie - `classes\_find\_courses`: Search the company's courses by name \(substring match\) and optionally by registration\_type. Returns a slim list of matches — \`\{id, name, registration\_type, target\_audience, price, schedules\_count, ...\}\` — enough to disambiguate, not enough to act. Use this whenever the user names a course in natural - `classes\_find\_resource`: Resolve a NAME the operator said into an id, for four kinds of company-level records. Pick \`kind\`: - \`place\` — venues. Returns \`\{id, name, city, street, rooms: \[\{id, name, capacity\}\]\}\`. Rooms are inlined because picking a venue is usually followed by picking a room. Filters: name, city. - \`billing\_p - `classes\_find\_classes`: Search this company's CLASSES — the scheduled groups inside a programme \(a "class" / "group" / "skupina"; internally a \*schedule\*\) — by name \(substring\) and resolve them to a \`schedule\_id\`. Reach for this whenever the user names a specific group rather than a whole programme \("the Nejaké class", "th - `bookings\_find`: Find this company's bookings — a client's enrolment in a class \(registration; "prihláška"/"Buchung"\) — and resolve them to a \`registration\_id\`, or a client to a \`user\_id\`. Use for "is X enrolled?", "who's in this class?", "who hasn't paid?" \(set \`payment\_status:\["unpaid","partially\_paid"\]\`\), and "fi - `sessions\_find\_events`: List \*\*events\*\* \(scheduled sessions of classes\) in the caller's company. Use this whenever you need to resolve an \`event\_id\` from natural language \("my next class," "Monday's ballet," "all swim sessions this week," "Sarah's classes tomorrow"\) before chaining into another tool like \`sessions\_get\_atte - `sessions\_get\_attendance`: Read who's enrolled in \*\*one event\*\* \(a single session of a class\) and their current attendance, so you can show the list and then mark it. Pass an \`event\_id\`; the tool returns each enrolled attendee, their current attendance value \(if already marked\), and per-row context the LLM needs to mark atten - `sessions\_mark\_attendance`: Record per-attendee attendance for \*\*one event\*\* \(a single session of a class — e.g. "Monday Ballet on 2026-06-03 at 09:00"\). Pass an \`event\_id\` and a list of attendees, each with their own attendance value \(\`attended\`, \`noshow\`, \`canceled\`, \`going\`, \`ignore\`\). Each value is set on \*\*that one attend - `classes\_update`: Edit one or more existing classes \(a "class"/"timetable" is the recurring group within a programme\) — name, price, registration fee, capacity, make-up/replacement extra capacity \("počet miest navyše pre náhradné hodiny" → extra\_capacity/extra\_capacity\_usage, NOT registrations\_cap, which caps the NUM - `sessions\_update`: Edit specific individual sessions \(events\) of a class, OR add new sessions to a class. Two modes, one tool. NOT for a change that holds from a date onward or for every session \("from next week Jana teaches the Monday class", "the class moves to Room B"\) — that is ONE classes\_update call with session - `sessions\_cancel`: Cancel one or more scheduled SESSIONS of a class so they do not take place — "cancel Tuesday's sessions", "the pool is closed on Friday", "Martina is ill all week, cancel her classes". A cancelled session stays visible in Zooza with a cancelled status; it is NOT deleted. Scope the call to exactly ON - `bookings\_copy\_booking`: Copy or move a client's existing booking into a different class. COPY creates a second booking and leaves the original in place — use it when the client is continuing into a new term or adding a class alongside their current one. MOVE relocates the booking itself, carrying its payment history and de - `comms\_send\_message`: Email clients of this company. Describe the audience \(a course/programme, a class schedule, a specific booking, one client, a saved segment, an ad-hoc cohort, or course-level labels\) and the content \(an existing template \`type\` from comms\_list\_templates, or a custom subject + body which may use \*\|ME - `reports\_get\_data`: Return the REAL, pre-aggregated numbers for ONE business question about an activity brand — and the basis for SHOWING it. This is how you show an operator a report / dashboard / chart of their business numbers \(occupancy, unpaid, churn, attendance, trials, retention, revenue, "how are we doing", per - `get\_skill`: Returns the full markdown playbook for one of the registered skills. Call this BEFORE starting a flow named in the server's instructions — the playbook contains the interview steps, mapping rules, and confirmation pattern for that scenario. Available skills: business-model-validator, class-managemen - `get\_tool\_schema`: Returns the description and exact input schema of a Zooza tool, including tools not in your tool list \(call\_tool lists them\). Call it once per tool before that tool's first call\_tool. - `call\_tool`: Runs a Zooza tool by name. Use it for every Zooza tool that is NOT in your tool list — these exist and work; never send the user to another app because a Zooza tool isn't listed. Call get\_tool\_schema\(name\) first for the arguments. Write tools behave exactly as when called directly: the first call pr Measured by MCP Station. Methods: https://mcpstation.net/methods.html · Terms: https://mcpstation.net/terms.html