Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

ClusterHack

REMOTE · CLUSTERHACK.DEV · SCANNED SEP 20

Run hackathons end to end: events, teams, submissions, judging and winners.

Available components

+3 this week 87 Trust /100
Trust breakdown (7 categories)

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
Transport & Reachability100
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
Install

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

# add to Claude Code
claude mcp add --transport http dev-clusterhack-clusterhack 'https://clusterhack.dev/mcp/'
// .cursor/mcp.json
{
  "mcpServers": {
    "dev-clusterhack-clusterhack": {
      "url": "https://clusterhack.dev/mcp/"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "dev-clusterhack-clusterhack": {
      "type": "http",
      "url": "https://clusterhack.dev/mcp/"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.dev-clusterhack-clusterhack]
url = "https://clusterhack.dev/mcp/"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "dev-clusterhack-clusterhack": {
      "type": "remote",
      "url": "https://clusterhack.dev/mcp/",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add dev-clusterhack-clusterhack --url 'https://clusterhack.dev/mcp/' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  dev-clusterhack-clusterhack:
    url: "https://clusterhack.dev/mcp/"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "dev-clusterhack-clusterhack": {
      "Transport": "http",
      "Url": "https://clusterhack.dev/mcp/"
    }
  }
}
# add to Vellum
assistant mcp add dev-clusterhack-clusterhack -t streamable-http -u 'https://clusterhack.dev/mcp/'
// mcp.json
{
  "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.

Changelog

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.

Diagnostics

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/
MCP tools · 60 exposed · ~6,274 tokens

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 →

Tool Tokens
account_ai_access ~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 ~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 ~48

Retrieve one CMS article by id: its body, publish date, hidden flag, and which title/slug and language it belongs to.

NameTypeReqDescription
article_idintegeryesThe article's id.

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
pageintegerPage number.
page_sizeintegerResults per page (max 100).

No output schema declared.

No examples provided.

article_list ~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.

NameTypeReqDescription
languagestringLanguage short code to filter by, e.g. 'en' or 'ru'.
pageintegerPage number.
page_sizeintegerResults per page (max 100).
slugstringTitle slug to filter by, e.g. 'how-to-organize'.

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
pageintegerPage number.
page_sizeintegerResults per page (max 100).

No output schema declared.

No examples provided.

company_about_us ~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.

NameTypeReqDescription
company_idintegeryesNumeric id of the company.

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
company_idintegerOnly rows for this company.
pageintegerPage number, 1-based.
page_sizeintegerResults per page (max 100).

No output schema declared.

No examples provided.

company_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.

NameTypeReqDescription
company_idintegerOnly show requests for this company.
pageintegerPage number, 1-based.
page_sizeintegerResults per page (max 100).

No output schema declared.

No examples provided.

company_ex_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).

NameTypeReqDescription
company_idintegerOnly rows for this company.
pageintegerPage number, 1-based.
page_sizeintegerResults per page (max 100).

No output schema declared.

No examples provided.

company_get ~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.

NameTypeReqDescription
company_idintegeryesNumeric id of the company.

No output schema declared.

No examples provided.

company_list ~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.

NameTypeReqDescription
pageintegerPage number, 1-based.
page_sizeintegerResults per page (max 100).

No output schema declared.

No examples provided.

company_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.

NameTypeReqDescription
company_idintegeryesNumeric id of the company.

No output schema declared.

No examples provided.

company_vacancies ~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.

NameTypeReqDescription
pageintegerPage number, 1-based.
page_sizeintegerResults per page (max 100).

No output schema declared.

No examples provided.

event_background_images ~67

The global catalogue of certificate background templates (used for the `background` field of an event's certificate config). Not tied to one event.

NameTypeReqDescription
pageintegerPage number, 1-based.
page_sizeintegerResults per page (max 100).

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
event_slugstringyesSlug of the event.

No output schema declared.

No examples provided.

event_cities ~68

The global catalogue of cities (used for the `city` field on `event_create`/`event_update` and to show where events happen).

NameTypeReqDescription
pageintegerPage number, 1-based.
page_sizeintegerResults per page (max 100).

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
event_slugstringyesSlug of the event.
pageintegerPage number, 1-based.
page_sizeintegerResults per page (max 100).

No output schema declared.

No examples provided.

event_free_agents ~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.

NameTypeReqDescription
event_slugstringyesSlug of the event.
pageintegerPage number, starting at 1.
page_sizeintegerRows per page (max 100).

No output schema declared.

No examples provided.

event_get ~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.

NameTypeReqDescription
event_slugstringyesSlug of the event, e.g. 'ai-build-day'.

No output schema declared.

No examples provided.

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.).

NameTypeReqDescription
event_slugstringyesSlug of the event.
pageintegerPage number, 1-based.
page_sizeintegerResults per page (max 100).

No output schema declared.

No examples provided.

event_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).

NameTypeReqDescription
event_slugstringyesSlug of the event.

No output schema declared.

No examples provided.

event_list ~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.

NameTypeReqDescription
pageintegerPage number, 1-based.
page_sizeintegerResults per page (max 100).
statusstringOnly 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 ~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.

NameTypeReqDescription
event_slugstringyesSlug of the event.

No output schema declared.

No examples provided.

event_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.

NameTypeReqDescription
event_slugstringyesSlug of the event.
pageintegerPage number, starting at 1.
page_sizeintegerRows per page (max 100).

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
event_slugstringyesSlug of the event.
pageintegerPage number, 1-based.
page_sizeintegerResults per page (max 100).

No output schema declared.

No examples provided.

event_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 ~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.

NameTypeReqDescription
event_slugstringyesSlug of the event.
pageintegerPage number, starting at 1.
page_sizeintegerRows per page (max 100).

No output schema declared.

No examples provided.

event_roles ~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.

NameTypeReqDescription
event_slugstringyesSlug of the event.

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
event_slugstringyesSlug of the event.
pageintegerPage number, 1-based.
page_sizeintegerResults per page (max 100).

No output schema declared.

No examples provided.

event_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.

NameTypeReqDescription
event_slugstringyesSlug of the event.

No output schema declared.

No examples provided.

event_sponsor_text ~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.

NameTypeReqDescription
event_slugstringyesSlug of the event.

No output schema declared.

No examples provided.

event_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.

NameTypeReqDescription
event_slugstringyesSlug of the event.

No output schema declared.

No examples provided.

event_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.

NameTypeReqDescription
event_slugstringyesSlug of the event.

No output schema declared.

No examples provided.

event_team_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.

NameTypeReqDescription
event_slugstringyesSlug of the event.
pageintegerPage number, 1-based.
page_sizeintegerResults per page (max 100).

No output schema declared.

No examples provided.

event_types ~66

The global catalogue of event types (used for the `type` field on `event_create`/`event_update`). Small and rarely changes.

NameTypeReqDescription
pageintegerPage number, 1-based.
page_sizeintegerResults per page (max 100).

No output schema declared.

No examples provided.

invite_preview ~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.

NameTypeReqDescription
tokenstringyesThe invite token, e.g. from a shared /invite/<token>/ URL.

No output schema declared.

No examples provided.

legal_info ~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 ~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.

NameTypeReqDescription
limitintegerMaximum endpoints to return.
querystringFilter by path, view name or description, e.g. 'certificate'.

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
categorystringLimit to one area of the product.
include_unavailablebooleanAlso list tools this connection cannot use, and say what they need.

No output schema declared.

No examples provided.

search ~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.

NameTypeReqDescription
kindsarrayWhich kinds to search. Defaults to all of them.
limitintegerMaximum results per kind (1-50).
querystringyesWhat to look for. Matches names, descriptions and tags.

No output schema declared.

No examples provided.

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 ~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.

NameTypeReqDescription
event_slugstringLimit to one event's projects.
pageintegerPage number.
page_sizeintegerResults per page (max 100).

No output schema declared.

No examples provided.

submission_get ~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.

NameTypeReqDescription
submission_idintegeryesNumeric id of the submission.

No output schema declared.

No examples provided.

submission_list ~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.

NameTypeReqDescription
event_slugstringOnly submissions for this event.
pageintegerPage number.
page_sizeintegerResults per page (max 100).
statusstringFilter the returned page by status.
team_idintegerOnly the submission belonging to this team.

No output schema declared.

No examples provided.

submission_list_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.

NameTypeReqDescription
pageintegerPage number.
page_sizeintegerResults per page (max 100).
submission_idintegeryesId of the submission.

No output schema declared.

No examples provided.

submission_page ~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.

NameTypeReqDescription
submission_idintegeryesId of the submission.

No output schema declared.

No examples provided.

tag_list ~53

List tags used to categorize content across the platform (articles, projects and more share the same tag vocabulary).

NameTypeReqDescription
pageintegerPage number.
page_sizeintegerResults per page (max 100).

No output schema declared.

No examples provided.

team_get ~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.

NameTypeReqDescription
team_idintegeryesId of the team.

No output schema declared.

No examples provided.

team_list ~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.

NameTypeReqDescription
event_slugstringOnly teams at this event.
pageintegerPage number, starting at 1.
page_sizeintegerRows per page (max 100).
searchstringMatch against team name, description or project name.

No output schema declared.

No examples provided.

Common questions

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.