ClusterHack
dev.clusterhack/clusterhackRun hackathons end to end: events, teams, submissions, judging and winners.
Score: 100/100
Handshake verified by our own probe.
Tools · 60
Which roles the signed-in user holds at one specific event. Cheaper and more precise than `whoami` when you already know the event and just need to know whether the user can organise, judge or only t…
List the raw REST endpoints behind this server. Use it together with `api_request` when you need something no curated tool covers. The list is read from the live URL configuration, so it always match…
The catalogue of everything this server can do, grouped by area. Returns each tool available to the current connection with its one-line purpose, the role it is meant for and the permission it consum…
Search across the platform: events, teams, projects, people and articles. One call when you do not yet know the identifier of the thing the user means ("the AI hackathon in Berlin", "Sasha's team"). …
What this MCP server is, which version it speaks, and how to connect. Useful for diagnostics and for telling the user where to manage or revoke the connection.
Who is signed in, what roles they hold, and where. Call this first in any new conversation. It returns the account, the OAuth permissions this connection was granted, and — crucially — the list of ev…
The global catalogue of certificate background templates (used for the `background` field of an event's certificate config). Not tied to one event.
The global catalogue of cities (used for the `city` field on `event_create`/`event_update` and to show where events happen).
An event's FAQ: the question/answer pairs shown on its public page. Public read — use it to answer a participant's question from the event's own words before guessing, and to check what is already cov…
Get one event's full public profile by slug: name, dates, address, topic, description, status and city. Call this once you have a slug (from `event_list` or `search`) and need the details. It does no…
An event's additional free-form information blocks (extra sections shown on its public page beyond the main description — rules, prizes, sponsors notes, etc.).
Browse hackathons on the platform — filter by status, city or date. Returns each event's slug, which every other event tool needs, plus name, status, dates and city. Use this when the user names an e…
An event's award nominations/tracks (e.g. "Best AI prototype"), used when creating teams, awarding winners and building the leaderboard per track.
Public catalogue of event-creation presets (AI build day, student hackathon, corporate innovation day, ...) with sensible defaults and starter nominations. Call before `event_create` when the user des…
The event's timeline: an ordered list of stages/activities (opening, workshops, deadlines, closing ceremony) with title, location, time window and status (past/now/future). This is what participants s…
The public links for promoting an event: its shareable page, the calendar file participants can add to their own calendar, the Open Graph preview image used when the link is pasted into chat, and a pl…
An event's team-facing reporting checkpoints (e.g. "Idea locked", "Demo ready") with their time windows — distinct from `event_schedule`, which is the event's own agenda. Used to track team progress t…
The global catalogue of event types (used for the `type` field on `event_create`/`event_update`). Small and rarely changes.
Read an event's white-label branding: brand colours, public-page theme and dedicated subdomain, plus the resolved values actually used for rendering and `branding_enabled` — whether the evening curren…
List participants at an event who are looking for a team. Visibility follows the platform's own rule, not a full public roster: a normal caller only sees their own free-agent listing here, while an o…
Summarise the signed-in user's relationship to one event: whether they have joined, their registration answers on file, whether they are listed as a free agent, and which roles they hold there (organi…
List the signed-in user's own answers to one event's registration questions. Only ever returns their own data — use `event_registration_responses` (organiser only) to read other people's.
List the custom questions an event asks at registration time (its registration form), in display order. Public data — the question text is visible to anyone. Use this before `event_submit_registratio…
Look up what a shareable invite link opens, without redeeming it. Public and PII-free: returns the event's name and slug and whether the token is still valid (active, not expired, uses remaining). Us…
Get one team's full detail: name, description, project info, readiness, accessibility flags, and which event and nomination it belongs to. Only visible if the signed-in user belongs to the team, crea…
List teams — scoped to what the signed-in account can see: teams they belong to, created, or administer via being an admin of the team's event. This is never a full public directory of every team on t…
Read the physical location details linked to a team's additional-info profile (street, city, state, zip), if one has been set. There is currently no self-service way to create a new location through t…
AI-ranked list of teams one free (teamless) participant could join, within the same event. Callable by the free-agent listing's own owner, or an admin of the event. Use `event_free_agents` or `event_j…
List a team's current members with their role and caption. Use the row `id` (a membership id, not a user id) with `team_assign_role` or `team_remove_member`.
List the positions teams are looking to fill ("we need a designer"). Visibility is limited to what the signed-in account can already see: their own team's open roles, or — if they organise the event …
List a team's public updates ("twits") — the short build-log posts a team publishes as it works, in the order the server returns them. Use it to catch up on what a team has been doing, or to check wha…
Check whether a team has marked itself ready to present, plus whether it is banned or currently accessible for judging.
List the roles a team has defined (e.g. "Frontend", "Designer"), which members can be assigned via `team_assign_role`.
Browse the teams of one event that are advertising open positions — the public "who is recruiting" list behind the find-a-team page, readable by anyone, including someone who has not joined the event …
Retrieve one project submission by id: title, links, description, status, approval status, vote count and attached media. Anonymous and unrelated callers only see it once the team has submitted (stat…
Browse project submissions, filterable by event, team or status. Anonymous and unrelated callers only ever see submitted (public) projects; a signed-in caller additionally sees their own team's draft…
List the screenshots/gallery images attached to a submission. Visibility mirrors the parent submission: public once submitted, otherwise limited to the team, event admins and judges.
Read a project's public page: the submission itself, every judge's written feedback (signed with the judge's name only where that judge consented to being named, empty otherwise), and — once the organ…
The ranked leaderboard for one event: submissions ordered by weighted judge score then vote count, with each entry's rank, team and score. Public once the organiser publishes winners; before that, onl…
Browse the public, cross-event showcase: shipped/submitted projects ranked for display, with title, tagline, team name, vote count and a cover image. Optionally narrow to one event. This is the public…
A company's longer "about us" blurb (up to 10,000 characters), separate from its short `description`. Returns `found: false` if the company has not written one yet.
A company's employee roster (position, start date). Without `company_id`, returns every roster row the caller can see (their own employment rows plus every company they administer) — the underlying AP…
Pending requests to join a company. A company admin sees everyone waiting on their door; anyone else sees only their own outstanding applications. This is where the `request_id` for `company_decide_em…
A company's former employees (position, start and end date) — the record created when someone is fired via `company_fire_employee`. Without `company_id`, returns every ex-employment row the caller can…
One company page by id: name, description, organisation type, website and logo. Public read. Use it after `company_list` or `search` to get the full record, and to confirm you have the right company b…
Browse ClusterHack company pages: name, description, org type, website and logo. Public data — use this to find a company's id before calling any other company tool.
The company page's public roster in one call: the people listed as employees and the people listed as moderators, exactly as the company page renders them to any visitor. Use this — not `company_empl…
The public board of companies not yet on ClusterHack (a lightweight off-platform listing — name, description, website — not a job-posting system). Public, no filters.
Sponsors of one event that are NOT themselves on ClusterHack (a name, description, website and logo entered as free text, with the sponsorship tier each one belongs to) — the off-platform counterpart …
The sponsorship tiers/groups defined for one event (e.g. "Sponsors", "Partners", "General Partner") — the buckets `event_add_sponsor` slots companies into. Public read.
The on-platform companies sponsoring one event, with the sponsorship tier each one is slotted into (e.g. "Sponsors", "Partners", "General Partner"). Public read. Use `event_sponsor_text` alongside thi…
Retrieve one CMS article by id: its body, publish date, hidden flag, and which title/slug and language it belongs to.
List the languages articles can be written in, e.g. {"language_name": "English", "short_name": "en"}. Use this to find the `language_id` `article_create` needs.
Browse CMS articles (the pages under /articles/<language>/<slug>). Filter by `language` (a language's short code, e.g. 'en') and/or `slug` (a title's slug) to find one specific page's translations. Hi…
List the CMS "title" records — each one a page's title text and slug, e.g. {"title": "How to organize a hackathon", "slug": "how-to-organize"}. An article always points at one of these; use this to fi…
The service's legal identity, as the terms-of-service, privacy and support pages render it: the service and operating entity, whether that entity is registered and where, the contact and privacy email…
List tags used to categorize content across the platform (articles, projects and more share the same tag vocabulary).
List technologies (tech-stack tags) that projects and teams can be labelled with, e.g. "React", "PostgreSQL".
How the signed-in user sees and revokes AI access to their own account — read this instead of looking for a tool that lists or cuts off connected clients, because there is deliberately no such tool. …
Explains how to connect an account to this MCP server — read this instead of guessing at a login/registration tool, because there isn't one. ClusterHack's own credential endpoints (register, login, J…
Resources · 1
Every tool this server exposes, grouped by area, with the roles and permissions each one needs.
clusterhack://tools
Prompts · 3
Create and configure a hackathon end to end, from preset to registration form, schedule, judging rubric and FAQ.
Match yourself to teams at an event, or list yourself as a free agent.
Interview the builder, draft the submission, save it and submit before the deadline.
How to use
Claude Desktop or claude.ai: add a custom connector (Customize → Connectors; on Team and Enterprise plans an owner adds it under Organization settings → Connectors) with this server URL: https://clusterhack.dev/mcp/
Cursor or Cline: add to your MCP config:
{
"mcpServers": {
"clusterhack": {
"url": "https://clusterhack.dev/mcp/",
"transport": "streamable-http"
}
}
}