MCP App Store
Productivity
Devpost Hackathons icon

Devpost Hackathons

by Devpost

Overview

From Devpost, the leading hackathon platform. Find hackathons, register, build, and submit, all without leaving ChatGPT. An optional build assistant walks you through ideation, scoping, and planning to help you ship a strong project.

Tools

create_project

ChatGPT
Create a new project (a Devpost project — internally a Software record) owned by the authenticated user. A project is independent of any hackathon and can be submitted to one or more hackathons later via submit_project. Only name is required to create the project, but a submittable project also needs tagline, description, and built_with. Provide them here when you have them, or add them later with update_project (submit_project will tell you exactly what's still missing). Not supported over MCP yet: photo/thumbnail uploads and team-member invites — do those on the web. The creator is automatically the sole team member. Returns the new project's id, slug, and public URL.

get_announcements

ChatGPT
Returns the most recent host announcements/updates for a hackathon (title, body, sent timestamp), ordered newest-first. Call this before answering questions about rule changes, deadline shifts, or anything 'recent' — and to surface what's new.

get_hackathon_overview

ChatGPT
Returns the title, short summary, full description, optional resources block, host, status, in-person/online classification with venue when applicable, and public URL for a hackathon. Call this first to ground any answer about a hackathon — the description carries the host's pitch (theme, what to build, why it matters), resources points participants at starter kits / docs / APIs the host has linked, in_person_type and location tell you whether participants need to show up somewhere, and the status (submissions_open / judging / closed / upcoming) tells you whether participants can still submit, whether judging is in progress, or whether results are out.

get_hackathon_rules

ChatGPT
Returns the formal rules (terms_and_conditions), how-to-enter instructions, additional user instructions, and a 'who can participate' eligibility block (age, geography, occupation, team, company). Call this before answering questions about eligibility, IP, what's allowed, or how to register. Quote rule and eligibility text verbatim — don't paraphrase.

get_judging_criteria

ChatGPT
Returns the judging criteria (name, description, position) and any judging tracks or categories that submissions are sorted into. Call this before answering questions about how submissions are evaluated or which track a project should target.

get_key_dates

ChatGPT
Returns the hackathon's submission, judging, public voting, and winners-announced dates as ISO 8601 UTC timestamps, plus the configured time zone and the current phase. Call this before answering questions about deadlines, when participants can submit, or when results will be announced.

get_prizes

ChatGPT
Returns the prize tiers (name, type, amount, winner count, description) and the total prize pool for a hackathon. Call this before answering questions about what participants can win or prize amounts.

get_project

ChatGPT
Returns the details of one of the authenticated user's projects: the name, tagline, writeup, video URL, current state, public URL, and the hackathons it has been entered into. Reads the live, editable project (not a frozen submission snapshot). Only the author or a team member can fetch it. Does not expose judging scores or feedback.

get_registration_form

ChatGPT
Fetch the registration form spec for a hackathon. Always call this BEFORE register_for_hackathon to discover exactly what to collect from the user. The returned payload tells you: - challenge: basic identity of the hackathon - can_register / already_registered / blocked_reason: whether the user can register at all (stop here if not) - team_preference_options: required — ask the user to pick exactly one - custom_questions: hackathon-specific questions; ask every one with required=true, and offer optional ones - eligibility.description: when requires_agreement=true, show this text verbatim to the user and obtain explicit agreement - agreements.rules_url & terms_url: show both links to the user and obtain explicit agreement before submitting - survey: the optional 'Who told you about this hackathon?' question; you may ask it, but never invent answers — leave it blank if the user doesn't supply one Do NOT pass agree_to_rules / agree_to_eligibility as true to register_for_hackathon without explicit user confirmation.

get_submission_requirements

ChatGPT
Returns the host's prose description of what to submit, the custom questions participants must answer when submitting (id, label, type, required flag, options for dropdowns), and the global deliverable rules (video, website, zip file, kind of submission object). Call this before answering questions about what a participant needs to submit. Each field's id is what you pass as submission_field_id in submit_project's custom_answers.

list_hackathons

ChatGPT
Returns the hackathons the authenticated user is connected to — registered for and/or submitted a project to. Each includes its name, slug, public URL, status (submissions_open / judging / closed / upcoming), and the user's relationship(s): registered, submitted.

list_my_projects

ChatGPT
Returns up to 24 of the authenticated user's projects (authored or team-member), filtered to non-spam and non-moderated. In-progress projects (submitted to a hackathon whose winners aren't announced yet) are listed first, followed by the most recently created remaining projects. Each project includes its membership type and the hackathons it has been submitted to (name, slug, public URL).

list_open_hackathons

ChatGPT
Returns a cached list of open or upcoming hackathons managed by Devpost (up to 15), newest first. Takes no arguments. Each entry includes title, url, start_date and end_date (UTC ISO 8601), prize_pool_usd (integer), a plain-text description, and themes (array of strings). Intended to be fetched once and matched to the user locally. Response carries hackathons, count, and generated_at. The underlying list is refreshed periodically, so it may lag live catalog changes by a few hours.

prepare_thumbnail_upload

ChatGPT
Start an out-of-band thumbnail upload that streams the image from disk to Devpost without putting the bytes through the LLM context. Returns an upload URL, a 10-minute TTL, and the OS-specific command(s) you should run. Use this instead of upload_project_thumbnail whenever the image is larger than ~50 KB encoded (i.e. anything that's not a small LLM-generated thumbnail). After the upload command returns 200, parse the JSON response body for the new thumbnail URL — do NOT read the image file into the conversation. Accepts JPEG, PNG, GIF up to 5 MB.

register_for_hackathon

ChatGPT
Register the authenticated user for a hackathon. Submits the same form the web flow uses, with identical validations and the same Rabbitmq event on success. MANDATORY workflow: 1. Call get_registration_form first. Do NOT call this tool until you have its response. 2. If can_register is false, stop and report blocked_reason — do not call this tool. 3. Ask the user to pick intending_to_team_up from team_preference_options. 4. Only if intending_to_team_up == 'Looking for teammates', offer to collect a short description (max 255 chars). 5. For each entry in custom_questions, ask the user. Every question with required=true MUST have an answer in custom_answers. For multi-select dropdowns, pass an array of strings. 6. Show the user agreements.rules_url AND agreements.terms_url, then ask for explicit confirmation. Only then set agree_to_rules=true. 7. If eligibility.requires_agreement is true, show eligibility.description verbatim, then ask for explicit confirmation. Only then set agree_to_eligibility=true. 8. Optionally offer the survey ('Who told you about this hackathon?'). If the user answers, pass source (and source_medium if the chosen source allows mediums, and source_specifics if source='Other'). If they skip, omit all three. 9. Submit. On success you get registration_id; on validation failure you get an InvalidParams error with the underlying message — relay it. NEVER set agree_to_rules or agree_to_eligibility to true without explicit confirmation from the user in this conversation.

show_hackathon_stepper

ChatGPT
Render the hackathon-journey stepper inline, highlighting the stage the user is on (register -> review -> resources -> prepare -> submit). Call it at the start of each stage with the matching active_step so the user can see where they are. On the 'resources' step, pass build_assistant: true to also show the optional guided build tool, with build_step for its current stage. Orientation only — it changes nothing on the server.

submit_project

ChatGPT
Submit one of the authenticated user's projects to a hackathon (or re-submit to update an existing entry). The same project can be submitted to multiple hackathons. MANDATORY workflow: 1. Call get_submission_requirements for the hackathon to learn the custom questions and the deliverable rules (video/website/zip required). 2. Make sure the project itself is complete — name, tagline, description, built_with, and any required video/website. Use update_project to fill gaps. 3. Collect answers to every required custom question into custom_answers. 4. Submit. If the project doesn't meet the requirements this tool will NOT submit — it returns an error itemizing exactly what's missing. Fix it and retry. The user must already be registered for the hackathon (use register_for_hackathon) and the hackathon must be open for submissions. Returns the submission id, status ("Draft" or "Submitted"), and URL.

update_project

ChatGPT
Edit an existing project the authenticated user owns or is a team member of. Only the fields you pass are changed; everything else is left as-is. Edits automatically propagate to the project's submissions in every hackathon it has been entered into. Note: saving an existing project enforces the full completeness rules (name, tagline, description, and built_with must all be present), so include any that aren't set yet. links and built_with REPLACE the current values. Photos and team changes aren't supported over MCP. To change the thumbnail, use the prepare_thumbnail_upload and upload_project_thumbnail tools. Returns the project's id, slug, URL, and new version.

upload_project_thumbnail

ChatGPT
Set the thumbnail image on an existing project the caller owns or is a team member of. Send the image as a base64-encoded string (no data: URI prefix). Accepts JPEG, PNG, and GIF up to 5 MB; the new image replaces any previous thumbnail. Returns the project id/slug/URL, the final thumbnail_url (404s while processing is true, goes live once the background resize finishes, typically within seconds), and the project's version. A non-error response means the upload succeeded — do NOT retry it. Best for small images only: target ≤ 50 KB encoded (e.g. a 300×300 JPEG at quality 60). Pre-shrink the image in one step before calling — DO NOT iterate. For larger or higher-quality images, use prepare_thumbnail_upload instead, which returns a curl/PowerShell command that streams the file from disk without putting the bytes through the LLM context at all.

whoami

ChatGPT
Returns the authenticated user's id, email, display name, and granted scopes. Requires mcp:read.

Capabilities

InteractiveWrites

Example Prompts

Click any prompt to copy it.

App Stats

21

Tools

3

Prompts

ChatGPT

Platforms

Works with

ChatGPT

Data refreshed daily