ClusterHack
REMOTE · CLUSTERHACK.DEV · SCANNED SEP 20
Run hackathons end to end: events, teams, submissions, judging and winners.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security83
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one. See how to fix → View diagnostics → Partial
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability90
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 6500 tokens (~106/item across 61 items; 60 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management80
- Stability observed for 24 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 60 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 62 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities60
- Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
How do I install the ClusterHack MCP server?
ClusterHack is a hosted endpoint at https://clusterhack.dev/mcp/, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · clusterhack.dev
claude mcp add --transport http dev-clusterhack-clusterhack 'https://clusterhack.dev/mcp/'
{
"mcpServers": {
"dev-clusterhack-clusterhack": {
"url": "https://clusterhack.dev/mcp/"
}
}
} {
"servers": {
"dev-clusterhack-clusterhack": {
"type": "http",
"url": "https://clusterhack.dev/mcp/"
}
}
} [mcp_servers.dev-clusterhack-clusterhack] url = "https://clusterhack.dev/mcp/"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"dev-clusterhack-clusterhack": {
"type": "remote",
"url": "https://clusterhack.dev/mcp/",
"enabled": true
}
}
} openclaw mcp add dev-clusterhack-clusterhack --url 'https://clusterhack.dev/mcp/' --transport streamable-http
mcp_servers:
dev-clusterhack-clusterhack:
url: "https://clusterhack.dev/mcp/" {
"McpServers": {
"dev-clusterhack-clusterhack": {
"Transport": "http",
"Url": "https://clusterhack.dev/mcp/"
}
}
} assistant mcp add dev-clusterhack-clusterhack -t streamable-http -u 'https://clusterhack.dev/mcp/'
{
"mcpServers": {
"dev-clusterhack-clusterhack": {
"type": "http",
"url": "https://clusterhack.dev/mcp/"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 19 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 73 to 77. That category is still filling its 30-day observation window: 22 days of observed history at the previous scan, 23 at this one. The score rises as the window fills, whether or not the server changes.
- 17 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 67 to 70. That category is still filling its 30-day observation window: 20 days of observed history at the previous scan, 21 at this one. The score rises as the window fills, whether or not the server changes.
- 15 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 60 to 63. That category is still filling its 30-day observation window: 18 days of observed history at the previous scan, 19 at this one. The score rises as the window fills, whether or not the server changes.
- 13 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.
- 11 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.
- 10 Sept 26 0
- Tool “event_branding” rewrote its description, which is the text the model reads security
- 9 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.
- 7 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Probed https://clusterhack.dev/mcp/
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=clusterhack.dev | CN=YE2,O=Let's Encrypt,C=US | 26 Jul 2026 | 24 Oct 2026 | ECDSA 256 | ECDSA-SHA384 | 52f9bf20322d7387b3d38b653da8022ef6d |
| SANs: clusterhack.dev | ||||||
| CN=YE2,O=Let's Encrypt,C=US (CA) | CN=Root YE,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | ECDSA 384 | ECDSA-SHA384 | 4df3b15dd6c0784c507cd37b58e6f115 |
| CN=Root YE,O=ISRG,C=US (CA) | CN=ISRG Root X2,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | ECDSA-SHA384 | 872165fc34b6e5fba8add5b3705fb53a |
| CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | SHA256-RSA | 6c8f1dc727c7117f7baf853ac980f9cd |
Background: What to check on a remote MCP endpoint →
DNSSEC secure
Validation of clusterhack.dev. — Secure
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| dev. | present | 60074 | 8 | Verified |
| clusterhack.dev. | present | 50182 | 8 | Verified |
| clusterhack.dev. | Verified address RRset verified with the apex keys |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=31536000; includeSubDomains |
| x-content-type-options | nosniff |
| x-frame-options | DENY |
| referrer-policy | strict-origin-when-cross-origin |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://clusterhack.dev/mcp/ | Verified | 200 | |
| http (plaintext) | http://clusterhack.dev/mcp/ | HTTPS enforced | 301 | https://clusterhack.dev/mcp/ |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
account_ai_access Managing AI access to this account ~207
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. The controls over AI access (list connected clients, revoke one, list and end live MCP sessions, read the record of what a client did as them) are gated to the account holder signing in directly: a browser session, a JWT, or an API token they hold themselves. A connected AI client — including this one — is refused, on purpose. If it were not, a client could revoke its rivals, enumerate the user's other connections, or read the trail it leaves behind. So this tool tells the user where to go and what they will find; it makes no API call and cannot fail. Also names where account deletion and data export live: the export has a tool (`account_export_data`), the deletion deliberately does not.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
account_how_to_sign_in How to sign in ~126
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, JWT issuance, password reset) are the website's login form, not MCP tools: an MCP client authenticates by OAuth 2.1 (the same flow a human approves in a browser tab) and must never see or handle a ClusterHack password directly. This tool works with no account at all, and just explains the steps and links.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
article_get Get an article ~48
Retrieve one CMS article by id: its body, publish date, hidden flag, and which title/slug and language it belongs to.
| Name | Type | Req | Description |
|---|---|---|---|
| article_id | integer | yes | The article's id. |
No output schema declared.
No examples provided.
article_languages List article languages ~75
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.
| Name | Type | Req | Description |
|---|---|---|---|
| page | integer | – | Page number. |
| page_size | integer | – | Results per page (max 100). |
No output schema declared.
No examples provided.
article_list List articles ~147
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. Hidden drafts are only included for staff callers; everyone else sees only published articles.
| Name | Type | Req | Description |
|---|---|---|---|
| language | string | – | Language short code to filter by, e.g. 'en' or 'ru'. |
| page | integer | – | Page number. |
| page_size | integer | – | Results per page (max 100). |
| slug | string | – | Title slug to filter by, e.g. 'how-to-organize'. |
No output schema declared.
No examples provided.
article_titles List article titles ~107
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 find the `title_id` `article_create` needs, or to see what pages exist at all.
| Name | Type | Req | Description |
|---|---|---|---|
| page | integer | – | Page number. |
| page_size | integer | – | Results per page (max 100). |
No output schema declared.
No examples provided.
company_about_us Get a company's about-us page ~64
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.
| Name | Type | Req | Description |
|---|---|---|---|
| company_id | integer | yes | Numeric id of the company. |
No output schema declared.
No examples provided.
company_employees List company employees ~109
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 API is already scoped that way. With `company_id`, narrows to that company only.
| Name | Type | Req | Description |
|---|---|---|---|
| company_id | integer | – | Only rows for this company. |
| page | integer | – | Page number, 1-based. |
| page_size | integer | – | Results per page (max 100). |
No output schema declared.
No examples provided.
company_employment_requests List employment requests ~99
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_employment_request` comes from.
| Name | Type | Req | Description |
|---|---|---|---|
| company_id | integer | – | Only show requests for this company. |
| page | integer | – | Page number, 1-based. |
| page_size | integer | – | Results per page (max 100). |
No output schema declared.
No examples provided.
company_ex_employees List a company's former employees ~105
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 see (their own, plus every company they administer).
| Name | Type | Req | Description |
|---|---|---|---|
| company_id | integer | – | Only rows for this company. |
| page | integer | – | Page number, 1-based. |
| page_size | integer | – | Results per page (max 100). |
No output schema declared.
No examples provided.
company_get Get a company ~85
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 before employment or sponsorship actions, which are irreversible for the people involved.
| Name | Type | Req | Description |
|---|---|---|---|
| company_id | integer | yes | Numeric id of the company. |
No output schema declared.
No examples provided.
company_list List companies ~72
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.
| Name | Type | Req | Description |
|---|---|---|---|
| page | integer | – | Page number, 1-based. |
| page_size | integer | – | Results per page (max 100). |
No output schema declared.
No examples provided.
company_roster A company's public roster ~156
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_employees` / `company_admins` — whenever you want to read *someone else's* roster. Those two are scoped to self-or-admin, so an outsider gets an empty list from them and cannot tell "nobody works here" apart from "you may not see who does". This endpoint is the part of the page that is already public, and nothing more: no join requests, no ex-employees, no write verbs.
| Name | Type | Req | Description |
|---|---|---|---|
| company_id | integer | yes | Numeric id of the company. |
No output schema declared.
No examples provided.
company_vacancies List off-platform companies ~75
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.
| Name | Type | Req | Description |
|---|---|---|---|
| page | integer | – | Page number, 1-based. |
| page_size | integer | – | Results per page (max 100). |
No output schema declared.
No examples provided.
event_background_images List certificate backgrounds ~67
The global catalogue of certificate background templates (used for the `background` field of an event's certificate config). Not tied to one event.
| Name | Type | Req | Description |
|---|---|---|---|
| page | integer | – | Page number, 1-based. |
| page_size | integer | – | Results per page (max 100). |
No output schema declared.
No examples provided.
event_branding Get event branding ~105
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 currently wears its costume, i.e. whether those values are applied. Public, because the colours are visible on the event page anyway. Use it before `event_set_branding` to see what is already set.
| Name | Type | Req | Description |
|---|---|---|---|
| event_slug | string | yes | Slug of the event. |
No output schema declared.
No examples provided.
event_cities List cities ~68
The global catalogue of cities (used for the `city` field on `event_create`/`event_update` and to show where events happen).
| Name | Type | Req | Description |
|---|---|---|---|
| page | integer | – | Page number, 1-based. |
| page_size | integer | – | Results per page (max 100). |
No output schema declared.
No examples provided.
event_faq Get event FAQ ~99
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 covered before adding more.
| Name | Type | Req | Description |
|---|---|---|---|
| event_slug | string | yes | Slug of the event. |
| page | integer | – | Page number, 1-based. |
| page_size | integer | – | Results per page (max 100). |
No output schema declared.
No examples provided.
event_free_agents List free agents at an event ~123
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 organiser of the event sees everyone's. Use `team_matchmaking_teams` on a listing's id for AI-ranked team suggestions for that person.
| Name | Type | Req | Description |
|---|---|---|---|
| event_slug | string | yes | Slug of the event. |
| page | integer | – | Page number, starting at 1. |
| page_size | integer | – | Rows per page (max 100). |
No output schema declared.
No examples provided.
event_get Get an event ~107
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 not include the schedule, FAQ or nominations — use `event_schedule`, `event_faq` and `event_nominations` for those.
| Name | Type | Req | Description |
|---|---|---|---|
| event_slug | string | yes | Slug of the event, e.g. 'ai-build-day'. |
No output schema declared.
No examples provided.
event_info_blocks Get event info blocks ~82
An event's additional free-form information blocks (extra sections shown on its public page beyond the main description — rules, prizes, sponsors notes, etc.).
| Name | Type | Req | Description |
|---|---|---|---|
| event_slug | string | yes | Slug of the event. |
| page | integer | – | Page number, 1-based. |
| page_size | integer | – | Results per page (max 100). |
No output schema declared.
No examples provided.
event_leaderboard Get an event's leaderboard ~86
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, only the event's admins and judges can preview it (everyone else gets a clear "not published yet" error).
| Name | Type | Req | Description |
|---|---|---|---|
| event_slug | string | yes | Slug of the event. |
No output schema declared.
No examples provided.
event_list Browse events ~154
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 event you do not have a slug for and `search` is not precise enough, or to show a list of upcoming/past events. Hidden events only appear here for their own organisers.
| Name | Type | Req | Description |
|---|---|---|---|
| page | integer | – | Page number, 1-based. |
| page_size | integer | – | Results per page (max 100). |
| status | string | – | Only events with this status. Filtered over the fetched page, so combine with a larger page_size for an exhaustive scan. |
No output schema declared.
No examples provided.
event_my_membership My status at an event ~100
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 (organizer, judge, team lead, ...). Cheaper than combining several other tools when you just need "is this user in, and how" for one event.
| Name | Type | Req | Description |
|---|---|---|---|
| event_slug | string | yes | Slug of the event. |
No output schema declared.
No examples provided.
event_my_registration_answers Get my registration answers ~92
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.
| Name | Type | Req | Description |
|---|---|---|---|
| event_slug | string | yes | Slug of the event. |
| page | integer | – | Page number, starting at 1. |
| page_size | integer | – | Rows per page (max 100). |
No output schema declared.
No examples provided.
event_nominations Get event nominations ~81
An event's award nominations/tracks (e.g. "Best AI prototype"), used when creating teams, awarding winners and building the leaderboard per track.
| Name | Type | Req | Description |
|---|---|---|---|
| event_slug | string | yes | Slug of the event. |
| page | integer | – | Page number, 1-based. |
| page_size | integer | – | Results per page (max 100). |
No output schema declared.
No examples provided.
event_presets Event creation presets ~61
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 describes a kind of hackathon rather than exact field values.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
event_registration_form Get an event's registration form ~107
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_registration_answers` to know which `form_field_id`s exist and which are required.
| Name | Type | Req | Description |
|---|---|---|---|
| event_slug | string | yes | Slug of the event. |
| page | integer | – | Page number, starting at 1. |
| page_size | integer | – | Rows per page (max 100). |
No output schema declared.
No examples provided.
event_roles My roles at an event ~67
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 take part.
| Name | Type | Req | Description |
|---|---|---|---|
| event_slug | string | yes | Slug of the event. |
No output schema declared.
No examples provided.
event_schedule Get event schedule ~125
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 see as "the schedule". Broadcast link and chat link are only included for the event's admins and registered participants — everyone else sees them blanked.
| Name | Type | Req | Description |
|---|---|---|---|
| event_slug | string | yes | Slug of the event. |
| page | integer | – | Page number, 1-based. |
| page_size | integer | – | Results per page (max 100). |
No output schema declared.
No examples provided.
event_share_links Get an event's share links ~99
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 plain-text digest meant for AI assistants. Handy when drafting an announcement — put the share URL in the post and the .ics next to the date. Public read.
| Name | Type | Req | Description |
|---|---|---|---|
| event_slug | string | yes | Slug of the event. |
No output schema declared.
No examples provided.
event_sponsor_text List an event's off-platform sponsors ~73
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 to `event_sponsors`. Public read.
| Name | Type | Req | Description |
|---|---|---|---|
| event_slug | string | yes | Slug of the event. |
No output schema declared.
No examples provided.
event_sponsor_tiers List an event's sponsor tiers ~63
The sponsorship tiers/groups defined for one event (e.g. "Sponsors", "Partners", "General Partner") — the buckets `event_add_sponsor` slots companies into. Public read.
| Name | Type | Req | Description |
|---|---|---|---|
| event_slug | string | yes | Slug of the event. |
No output schema declared.
No examples provided.
event_sponsors List an event's sponsors ~79
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 this for sponsors that are not themselves on ClusterHack yet.
| Name | Type | Req | Description |
|---|---|---|---|
| event_slug | string | yes | Slug of the event. |
No output schema declared.
No examples provided.
event_team_stages Get team-progress stages ~100
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 through the event.
| Name | Type | Req | Description |
|---|---|---|---|
| event_slug | string | yes | Slug of the event. |
| page | integer | – | Page number, 1-based. |
| page_size | integer | – | Results per page (max 100). |
No output schema declared.
No examples provided.
event_types List event types ~66
The global catalogue of event types (used for the `type` field on `event_create`/`event_update`). Small and rarely changes.
| Name | Type | Req | Description |
|---|---|---|---|
| page | integer | – | Page number, 1-based. |
| page_size | integer | – | Results per page (max 100). |
No output schema declared.
No examples provided.
invite_preview Preview an invite link ~106
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). Use this before `invite_join` to show the user what they are about to join, or to explain why a link stopped working.
| Name | Type | Req | Description |
|---|---|---|---|
| token | string | yes | The invite token, e.g. from a shared /invite/<token>/ URL. |
No output schema declared.
No examples provided.
legal_info Site legal information ~146
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 addresses, the postal address, the terms' effective date and the minimum age to hold an account. Read it instead of hard-coding a copy — a client building its own footer, quoting the contact address, or answering "how old do I have to be" should take the values from here, where the pages themselves take them, so the two cannot drift apart. Public: it needs no account, and it is the same text an anonymous visitor already sees.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_api_endpoints List API endpoints ~90
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 matches what the server actually serves.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum endpoints to return. |
| query | string | – | Filter by path, view name or description, e.g. 'certificate'. |
No output schema declared.
No examples provided.
list_capabilities List capabilities ~119
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 consumes. Use it when you are not sure a capability exists — it is cheaper than guessing tool names, and it shows what the user would gain by granting more permissions.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | Limit to one area of the product. |
| include_unavailable | boolean | – | Also list tools this connection cannot use, and say what they need. |
No output schema declared.
No examples provided.
search Search everything ~120
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"). Returns the matching objects with the slug or id you need for every other tool.
| Name | Type | Req | Description |
|---|---|---|---|
| kinds | array | – | Which kinds to search. Defaults to all of them. |
| limit | integer | – | Maximum results per kind (1-50). |
| query | string | yes | What to look for. Matches names, descriptions and tags. |
No output schema declared.
No examples provided.
server_info Server info ~41
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
showcase_browse Browse the showcase ~114
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 gallery — use `event_leaderboard` instead when you specifically need judged rankings for one event.
| Name | Type | Req | Description |
|---|---|---|---|
| event_slug | string | – | Limit to one event's projects. |
| page | integer | – | Page number. |
| page_size | integer | – | Results per page (max 100). |
No output schema declared.
No examples provided.
submission_get Get a submission ~102
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 (status "submitted"); drafts are visible only to the team, the event's admins and its judges. Use `submission_list` or `submission_get_mine` when you do not already know the numeric id.
| Name | Type | Req | Description |
|---|---|---|---|
| submission_id | integer | yes | Numeric id of the submission. |
No output schema declared.
No examples provided.
submission_list List submissions ~172
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 drafts and every submission at events they administer or judge. ``status`` narrows the returned page client-side (draft / submitted / disqualified) since the underlying list endpoint does not filter by status itself — combine with a larger `page_size` if you need it applied beyond one page.
| Name | Type | Req | Description |
|---|---|---|---|
| event_slug | string | – | Only submissions for this event. |
| page | integer | – | Page number. |
| page_size | integer | – | Results per page (max 100). |
| status | string | – | Filter the returned page by status. |
| team_id | integer | – | Only the submission belonging to this team. |
No output schema declared.
No examples provided.
submission_list_media List submission media ~79
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.
| Name | Type | Req | Description |
|---|---|---|---|
| page | integer | – | Page number. |
| page_size | integer | – | Results per page (max 100). |
| submission_id | integer | yes | Id of the submission. |
No output schema declared.
No examples provided.
submission_page Read a project's page and its judge feedback ~223
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 organiser has published the winners — its placement, rank and judge score. This is the tool for "what did the judges say about our project?". `submission_get` returns the project's own fields and nothing about how it was received; `judging_scores_for_submission` is scoped to judges and event admins, so a team cannot read its own verdict through it. A submitted project's page is public; a draft is visible only to its team and the event's admins. Before the ceremony the placement is shown to the team and the hosts alone, flagged `placement_private` so a client says "not announced yet" instead of leaking it. `private_note` is the organisers' line and is absent — not blanked, absent — from everyone else's payload.
| Name | Type | Req | Description |
|---|---|---|---|
| submission_id | integer | yes | Id of the submission. |
No output schema declared.
No examples provided.
tag_list List tags ~53
List tags used to categorize content across the platform (articles, projects and more share the same tag vocabulary).
| Name | Type | Req | Description |
|---|---|---|---|
| page | integer | – | Page number. |
| page_size | integer | – | Results per page (max 100). |
No output schema declared.
No examples provided.
team_get Get a team ~70
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, created it, or administers its event.
| Name | Type | Req | Description |
|---|---|---|---|
| team_id | integer | yes | Id of the team. |
No output schema declared.
No examples provided.
team_list List teams ~159
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 the platform. Filter by `event_slug` to see just one event's teams, or `search` to match team/project name and description. Use `team_get` for the full detail of one team once you have its id.
| Name | Type | Req | Description |
|---|---|---|---|
| event_slug | string | – | Only teams at this event. |
| page | integer | – | Page number, starting at 1. |
| page_size | integer | – | Rows per page (max 100). |
| search | string | – | Match against team name, description or project name. |
No output schema declared.
No examples provided.
What is the ClusterHack MCP server?
ClusterHack is an MCP server listed in the public MCP registry as dev.clusterhack/clusterhack. Run hackathons end to end: events, teams, submissions, judging and winners. This page covers its hosted endpoint (https://clusterhack.dev/mcp/).
Is the ClusterHack MCP server safe to use?
ClusterHack scores 87 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the ClusterHack MCP server expose?
ClusterHack exposes 60 tools: event_roles, list_api_endpoints, list_capabilities, search, server_info, and 55 more. Their descriptions and schemas cost roughly 6,274 tokens of context every time the server is loaded.
Does the ClusterHack MCP server require authentication?
No. We connected to ClusterHack without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the ClusterHack MCP server still maintained?
ClusterHack is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.