MCP server
Hob’s MCP server (Model Context Protocol) lets an AI assistant perform the same club admin work you do in the dashboard. The assistant signs in as you and only sees the clubs and actions your account already allows.
MCP is not a separate module and is not enabled in the club’s module picker. There is one endpoint for all of Hob; the club is chosen after you sign in.
This page describes day-to-day use, not the technical API.
Who is it for?
- Admins who want an assistant to create seasons (weekly classes or team sports), classes, teams, general events, conventions, competitions, or profiles
- Clubs that do some admin work by talking to an assistant, not only by filling forms
- Cases where the assistant needs to read club data (profiles, memberships, programme, feedback) before making a change
MCP does not replace Hob’s user interface. Profile enrolment, payments, and other profile-facing actions still happen in Hob.
Connecting
The server uses streamable HTTP. Production URL:
https://hob.fi/mcp/
Use the URL with a trailing slash. The path is not under a club (not /ex_club/mcp/).
- In your MCP client (for example Claude Desktop, Cursor, or MCP Inspector), add a streamable HTTP server whose URL is
https://hob.fi/mcp/. - Leave the client id and secret empty if the client can register itself (dynamic client registration). Hob advertises registration on its OAuth server.
- On the first tool call the client opens a browser. Sign in with your Hob account.
- After that the assistant calls tools with a Bearer token. An unsigned-in user cannot reach the server.
Choosing a club
One connection covers every club your account belongs to. The assistant should list your clubs first, then run club-specific actions.
Each club entry includes the name, technical id, timezone, and enabled modules. A date or time without a zone is treated as that club’s local time (or the convention’s own zone when one is set). Responses return datetimes as ISO 8601 with an offset.
Once a club is selected, the assistant can ask which admin tools and query collections are available there and with which permissions. A tool you cannot call stays on the list as inaccessible — the assistant can say which permission is missing instead of hiding the capability.
Querying and creating profiles is available in every club. Membership season and class tools are listed only when the member registry module is enabled. Do not ask the assistant to call tools for a module the club does not use: the call may be blocked.
Changes, permissions, and audit
Read tools fetch data. Write tools change club data (create, update, publish, delete).
Every write call needs a short reason (why the change is made) and a mark for which assistant made it. The change is stored in Hob’s version history under your user account.
Permissions match the dashboard. If you cannot create profiles or conventions in the UI, you cannot do it through MCP. Ask a club admin to grant the matching role if needed.
Privacy
In tool responses, person fields (email, phone, last name) are shortened by default. Create and search may still use a full email or name as a filter.
Full person fields in responses require a club server setting. That setting cannot be turned on with an MCP call.
What you can do per module
MCP does not publish every Hob feature. Below is what the assistant can do today. If a module is not listed, it has no MCP tools.
Shared tools
For every signed-in user:
- check that the connection works
- list clubs the account can access
- list tools and query collections for the club’s modules
- query the club’s collections (profiles, membership enrollments, classes, general events, conventions, competitions, competition entries, reservation booking rules, schedules, and bookings, and so on) when permissions allow
- queue creating many items at once for actions that support it (for example many profiles, bookings, or events) and check when that job is finished. At most 200 at a time. Not every write action supports this.
General events
General events are available in every club. The technical identifier is generic. They are not weekly-class occurrences and not conventions.
The assistant can:
- query the club’s general events
- create an event (name, start and end, optional location, price, participant limit, and who may register)
- update those event details
- replace the registration form entirely (the new form does not merge with the previous one)
- query event registrations (including the waitlist)
- register a profile for an event (admin enrollment)
- update an existing registration (merges extra form answers; the saldo is recalculated unless it was edited by hand)
- confirm a queued registration (admits the participant even when the event is full)
- cancel a registration (opens a queue slot when the event is full)
Required extra form fields still apply when registering, including a field that is required only when another answer matches a condition. The same profile cannot be registered twice. A child profile can form a group with the parent. Profile self-registration is not an MCP tool. Weekly-class enrolment is still not MCP.
Who may register is one setting: anonymous, signed-in profiles, actual members, paid members, or a custom extra limit (for example matching membership status). The assistant can set that setting. Admin enrollment through MCP still works even when that extra limit would block self-service.
A registration form can include a birth year field (calendar year) or a birth date field (calendar date). Event prices can include discounts based on the derived age. This is not a ready-made child-discount rule.
Anonymous registration does not create a club profile. Edit and cancel remain for signed-in profiles.
The event price can include discounts that match the applicant’s membership status (pending or approved). A cancelled membership or no membership does not get that discount. This is not a ready-made member-discount rule.
You can omit both registration open and close times to keep registration closed until they are set. The event start must be on or before the end.
Member registry
See also member registry.
Querying and creating profiles does not require the member registry module. Season and class tools do.
The assistant can:
- query profiles (people and organizations) and create a new profile — a person or an organization, not a membership enrolment — available in every club
- query membership enrollments (profile, season, class, and state) when the member registry module is enabled — this is not the same as querying profiles. Sensitive form answers on an enrollment are shortened by default
- query membership seasons and membership classes when the member registry module is enabled
- create, update, and copy a membership season (a copy brings the form and classes)
- create and update a membership class (price, description, rules). Price and joining fee can include discounts based on the applicant or the application-form answers.
Approving or rejecting a membership is not in MCP yet. A profile is a person or an organization; a membership is a season- and class-specific enrolment. An organization profile uses a display name, optional email and phone, and no login. CSV import still creates person profiles only.
Payments
See also payment methods. The technical identifier is payments.
The assistant can:
- add a manual transaction on a profile (a negative amount is a charge, a positive amount is a credit, same as the dashboard)
The assistant cannot query transactions or correct an amount. Recording a cash payment and correcting an amount stay in the dashboard.
Weekly classes
See also weekly class module. The technical identifier is danceclub.
The assistant can:
- query seasons, classes (activities), events, season tickets, and event enrolments (including the waitlist)
- create and update a season
- create and update a class (drop-in, course, or both)
- delete an empty class and its events (delete fails if the class has enrolments)
- deactivate a class that has enrolments (the class is marked inactive; future events and future enrolments are removed)
- create and update a season ticket and attach it to classes
- create individual events or generate recurring events on a weekly interval (for example every Tuesday through the end of the season, with selected dates skipped)
- update or delete an event (delete fails if the event has enrolments)
- cancel a profile’s whole-course enrollment (removes future participations and a course-only pass, same as the dashboard)
Typical order: season → classes → events (or generate) → tickets → update the class if needed so the preferred ticket is linked. Enrolments can be queried (confirmed, waiting, or on the waitlist). The assistant cannot enrol a profile on a class or promote someone from the waitlist.
When creating a class without choosing a season, the earliest season covering today is used, or the earliest upcoming season if none cover today. Pass a season when several are current.
Team sports
There is no separate team sports docs page yet. The technical identifier is teamsports.
The assistant can:
- create a season (name, start, and end)
- create a team (name, season)
- assign a profile as team staff with a role (same as the dashboard)
- add a profile to a team roster (same as the dashboard)
The assistant cannot query seasons, teams, or events yet. Editing player extra fields or removing a player is not in MCP.
Conventions
See also convention module.
The assistant can:
- query conventions, programme items and suggestions, programme participants, and convention registrations
- create a convention (creating it does not publish it); a location (city or venue) and who may register (anonymous, signed-in, actual members, paid members, or a custom extra limit) can be set on create
- update convention settings, times, location, rooms, forms, and who may register
- release the convention (a separate action)
- create and update a programme item, including marking it cancelled
- approve a programme suggestion into a programme item, or reject a suggestion with a message
- update a convention registration: confirm a pending or queued registration, change the nickname, or set the lodging room
- cancel a convention registration (deletes the participation; opens a queue slot when the convention is full)
Whether registrations need staff approval is set in the dashboard, not through MCP. Profile self-registration, joining a programme item, and claiming lodging as a profile are not MCP tools. The assistant does not add a new convention participant; it updates or cancels existing registrations. A programme row does not include participants — query participants separately.
Competitions
See also competition module. The technical identifier is competition.
The assistant can:
- query the club’s competitions and team entries (approved, pending, or queued)
- create a competition (name; optional slug, dates, enrollment window, enrollment mode, team entry fee, extra enrollment fields, roster form, and free-form competition metadata such as type, style, or level — not entry or roster form data)
- update those details
- replace the competition’s roster form entirely (the new form does not merge with the previous one)
- replace extra enrollment fields entirely (the new form does not merge with the previous one)
- approve a pending entry (charges the team entry fee when one is set)
- reject a pending entry (the enrollment is removed)
- delete a competition that has no entries
A competition created with only a name stays open for enrollment until a window is set. If a start is given, an end is required, and the start must be on or before the end. The same applies to the enrollment window. The assistant does not create a competition team or enroll a team.
Feedback queries
See also feedback module.
The assistant can:
- query feedback forms and submitted answers
- create and update a query (slug, intro, form, end moment)
- publish the query so it accepts answers
Submitting an answer as a profile is not an MCP tool. An unpublished query is not open to respondents.
Reservations
See also reservations module. The technical identifier is lending.
The assistant can:
- query lendable resources, bookings (by resource technical name and/or profile), booking rules, schedules, which schedules are linked to which rules, and blocked external calendar links
- create a lendable resource (space or item)
- update a resource (name, intro, reservation type, quantity, active)
- add a booking rule to a resource
- update a booking rule (name, booking mode, who it applies to, order on the resource, and limit options; invalid values are rejected). A rule option can delay the charge until the booking ends; the default is to charge on confirm. The same option is on the dashboard booking rule.
- delete a booking rule from a resource
- create and update a named schedule (repeating times, capacity, an iCalendar URL, or weekly class events at a matching venue)
- attach an iCalendar URL to a schedule (optional filter for calendar events)
- attach a named schedule to a booking rule, or unlink it
- attach a named schedule as blocked times on a slot resource (an external calendar or weekly class events). This is not a booking-rule link.
- create, update, and delete a booking as admin (resource by its technical name, borrower as a profile)
An admin booking through MCP does not follow capacity or schedule limits. If the rule has a required extra form, those fields must still be filled. Use this with care. Borrower and resource cannot be changed on update — create a new booking instead. Blocked times on a slot resource stop overlapping reservations; they do not set the booking-rule price.
Messaging
In the dashboard this section is Messaging. The technical identifier is messaging.
The assistant can:
- query newsletters (drafts and published)
- create a draft newsletter tied to a source (for example a convention or a season)
- update or delete an unpublished draft
- create and update a message template (a reusable letter you send one-off to chosen profiles from the dashboard; saving the template does not send mail)
- delete a message template that is not in use. Delete is blocked while a pending scheduled send, a membership-class automation, or a convention receipt template still references it. Delivered sends alone do not block delete.
Sending or publishing a newsletter is not in MCP. Sending a message template is not in MCP. A published newsletter cannot be edited or deleted this way.
Practical tips
- Tell the assistant the club first (name or technical id) and what you want done, for example “set up autumn weekly classes”.
- Ask the assistant to list the club’s tools if an action fails — it may be a missing permission or a module that is not enabled.
- Give write actions a clear reason (“opening the 2026 season”).
- Do not assume the assistant can approve memberships, enrol profiles in weekly classes, enroll a competition team, or send newsletters or message templates — those are not in MCP. Admin can register a profile on a general event; that is not self-service sign-up. A competition can be created through MCP, and a pending entry can be approved or rejected; enrolling a team is not in MCP.
- Check the dashboard when a change is public (releasing a convention, publishing a feedback query).