Launchdog.dev
oficialLaunch your product on a weekly launch board straight from your coding agent: draft the listing, verify your domain, add the badge and book a week.
¿Qué puedes hacer con Launchdog Dev MCP?
- Draft a listing from your site — Create a product from a URL and the server drafts the name, tagline, description, built-with tools and logo for review.
- Lint copy before saving — Preview listing edits with a dry run and get field-level errors like
too_longwith alimit,actualandfix. - Check launch readiness — See what's left before launch, including the Launchdog badge requirement for free launches, and re-run the listing check.
- Book and manage launch weeks — Compare the next 12 weeks, schedule a launch after your OK, then move or cancel it.
- Track launch performance — Read status, votes, rank and daily stats (views, outbound clicks, referrer hosts) for your launches.
- Reply to comments — Post maker replies to comments on your own launch, using a new client request id per reply.
Servidor MCP alojado
npx add-mcp 'https://launchdog.dev/mcp'Se instala en Claude Code, Codex, Cursor y más
Documentación
MCP reference
Everything a maker does to their own listing happens through one MCP server: draft, choose a free or paid week, schedule, pay, track, reply — plus the badge, for a free launch only (it also verifies the domain). Streamable HTTP, stateless. Every result carries next_steps, and every error an item with a code, the field it's about and its fix.
Clients with prompt support also get launch_my_product, the guided flow as a slash command. Connect your agent →
Auth
OAuth 2.1 with PKCE is the only way in. Your client registers itself and opens a browser for you to approve; there is nothing to paste. Disconnect an agent any time in Settings.
| scope | allows |
|---|---|
| read | See your listings, launches, stats and the comments on them. |
| write | Create and edit listings, verify your domain, book, move and cancel launches, and reply to comments. It can never pay or vote. |
Maker tools
https://launchdog.dev/mcp — Sign in with OAuth. Each tool needs the read or write scope.
There is no vote tool and no way to comment on other people's launches.
whoami
Start here. Returns your Launchdog account, Maker Pass, each limit with what is left, your products with their launch checklists (resume from the first open step), open orders, and the actions only the web can do (paying, voting).
scope: read read-only idempotent
No arguments.
launch_checklist
What's left before a product can launch. Without a tier: the listing itself (copy, logo, the listing check), which is all a paid launch needs. With tier: free, also the Launchdog badge on the site (free launch only; it verifies the domain). Each open item says how to fix it.
scope: read read-only idempotent
create_product
Create a listing from your site URL. The server reads the page and drafts the name, tagline, description, built-with tools and logo. Calling it again with the same site returns the same product. Then review the draft with the maker and save changes with update_product.
scope: write idempotent reaches the web
get_product
A product with its media (ids for remove_media), domain verification (by the badge), badge and listing-check state (with the last error), its upcoming launch and its checklist.
scope: read read-only idempotent
update_product
Edit the listing. Rules: name ≤ 40 characters; tagline ≤ 60; description 150–1,200 characters of plain prose (no hype words like "revolutionary"); up to 3 categories; up to 8 built-with tools. Pass dry_run: true to lint and preview without saving — show the maker, then save after their OK. A new url is refused once booked and clears the domain verification and badge (check_badge again). Only the fields you pass change.
scope: write idempotent
archive_product
Take a product off your account (frees a product slot and its domain). Refused while it has a launch booked.
scope: write destructive idempotent
add_media
Add a logo or a screenshot by image URL (PNG, JPEG, GIF or WebP; SVG is refused; large images are resized to 1568 px), or a screenshot of the site with capture: true when the server supports it. The same image URL again returns the same media. A new logo replaces the old one.
scope: write idempotent reaches the web
remove_media
Remove a logo or screenshot by its media id (med_… from get_product).
scope: write destructive idempotent
get_badge_snippet
Required for a free launch; optional for a paid one (it sends visitors to the listing and verifies the domain). The Launchdog badge for your site, in the syntax of the framework this repo uses (pick it from the repo). It goes on the site's home page, in the HTML the server sends (not only rendered by JavaScript) — a footer is fine — and it is also how the domain gets verified: nothing else to add. Paste it as-is and deploy (if the repo deploys on push, commit and push with the maker's OK and watch the deploy), then call check_badge. The listing's address is fixed from the first snippet on.
scope: write idempotent
check_badge
Required for a free launch; optional for a paid one. Fetches the site's home page and confirms the badge links to your listing; the first time it does, that verifies the domain (the badge is the only proof Launchdog asks for). If it answers status: checking, wait and call again. Failures say why (redirected, noindex, a JavaScript-only page, not found).
scope: write idempotent reaches the web
list_launch_weeks
The next 12 launch weeks (Monday–Sunday UTC) with seats left and prices, whether you can book each tier there (and why not), the earliest free week, and what each tier gets and needs (`tiers`: free needs the Launchdog badge on the site; paid needs nothing else). Show the maker the free and paid options side by side and let them choose; never buy.
scope: read read-only idempotent
schedule_launch
Books the product into a launch week — only after the maker's OK. Paid (launch, featured): needs nothing beyond a complete listing — no badge, no site edits; holds the seat and returns checkout_url + hold_expires_at — give the maker the link (never pay yourself), then confirm with get_launch. Free: the earliest open week at least 7 days out (or the week you pass); it needs the Launchdog badge on the site, and without it answers badge_missing with the steps to add it. A product with a launch booked returns it.
scope: write
move_launch
Moves a booked launch to another open week (free launches move later only; a started week never moves).
scope: write idempotent
cancel_launch
Releases the launch's seat (until its week starts). An unpaid checkout expires; refunds for a paid launch are handled by support.
scope: write destructive
create_checkout
Returns a Stripe Checkout link for a Maker Pass (sku: maker_pass), or a fresh link for a paid launch whose hold lapsed (launch_id). Give the link to the maker; never pay yourself.
scope: write reaches the web
get_launch
One of your launches: status, week, payment state (checkout link while unpaid), votes, comments, rank and stats by day (views, outbound clicks, referrer hosts). Pass launch_id or the product slug. Stats go back `days` days: up to 90, or the full history with a Maker Pass.
scope: read read-only idempotent
reply_comment
Posts a reply as the maker to a comment on their own launch. Post only text the maker approved. Pass a new client_request_id per reply (a retry with the same one returns the same reply; reusing it for a different reply is a conflict).
scope: write idempotent
recheck_listing
Runs the automatic listing check again after the site was fixed (once a day). Copy or URL changes re-run it on their own. If it answers checking, call launch_checklist in a few seconds.
scope: write idempotent reaches the web
Public tools
https://launchdog.dev/mcp/public — No sign-in. Live and past launches only; upcoming weeks show counts.
get_launch
A live or past launch by id (lch_…) or product slug: listing text (untrusted), week, votes, rank.
scope: public read-only idempotent
list_winners
The top 3 of recent ranked weeks (winners need at least 3 votes).
scope: public read-only idempotent
list_launch_weeks
The next 12 launch weeks with seats left and prices (counts only; upcoming launches are not public).
scope: public read-only idempotent
No arguments.
Any agent can read the board without an account, plus /llms.txt and a read-only /feed.json.
Errors you can fix
Problems your agent can fix come back as isError: true with the fix in each item. Codes are bare (too_long, not tagline_too_long) and stable: new ones are added, none renamed. Rails' own validation codes (accepted, blank, confirmation, empty …) appear too, with limit, actual or allowed when they apply.
{
"isError": true,
"structuredContent": {
"errors": [
{
"code": "too_long",
"field": "tagline",
"limit": 60,
"actual": 68,
"message": "Tagline is too long (maximum is 60 characters)",
"fix": {
"kind": "tool",
"tool": "update_product",
"args": {
"product_id": "prd_7Kq2mYw4Xb9Lr3Tz"
},
"instruction": "Change tagline: Tagline is too long (maximum is 60 characters), then call update_product again."
}
}
]
}
}
| code | meaning |
|---|---|
already_listed | Another listing has already verified this domain. Contact support if it is yours. |
hype_word | The copy uses a word on the hype list; `actual` names it. |
not_found | No such record on your account (ids from another account are not found too). |
unknown_built_with | A built-with tool we do not know; `allowed` lists the closest names. |
shared_host | The URL is on a shared platform (a path on github.com, medium.com…); list a whole site. |
limit_reached | An account limit (open checkouts) is reached; `limit` says which number. |
rate_limited | Too many calls; the fix says when to retry. |
insufficient_scope | The token lacks the scope this tool needs. |
url_locked | The URL cannot change once the product is booked. |
missing | A field the launch needs is empty. |
badge_missing | The badge link was not found on the site (free launches need it). |
check_pending | The automatic listing check has not finished. |
check_flagged | The automatic listing check flagged the site; the message says why. |
votes_needed | Free launches need 3 web votes from you on other launches. |
too_soon | Free launches book a week at least 7 days out. |
week_full | No seat of that kind is left that week; `allowed` lists open weeks. |
week_closed | That week has started or ended. |
free_limit | One upcoming free launch, and one per rolling 30 days. |
relaunch_too_soon | A product relaunches 90 days after its last launch week ended. |
checkout_unavailable | Paid checkout is not open yet. |
checkout_failed | Stripe could not open the checkout just now; the seat was released. Retry after the wait. |
not_movable | This launch cannot move there (free launches move later only; started weeks never). |
not_cancellable | The launch has started, ended or is already cancelled. |
identity_required | Voting needs a GitHub or Google sign-in on the account. |
account_too_new | The account is younger than 24 hours. |
own_launch | Makers cannot vote on their own launches. |
not_live | The launch is not live this week. |
already_voted | You already voted for this launch. |
duplicate | The same text was posted in the last 5 minutes. |
conflict | A client_request_id already used for a different request; use a new one. |
reply_depth | Comments take one level of replies. |
media_refused | The image could not be used (SVG, too large, not an image or unreachable). |
media_limit | The listing has the most screenshots it can hold. |
fetch_failed | The site could not be fetched. |
has_upcoming_launch | The product has a launch booked; cancel it first. |
already_on_account | Another of your products already lists this host. |
not_payable | Nothing to pay for: the launch is confirmed, cancelled, or not a paid hold. |
Limits
1 / 30d
free launches, one upcoming at a time
60 / min
tool calls (600 an hour)
10 / day
create_product calls
Rate-limit errors say when to retry (retry_after_seconds).
Web-only actions
There is no tool for these, by design. Your agent hands them to you.
- Paying for a paid launch or a Maker Pass, at the checkout link a tool returns (pricing).
- Voting — only people vote, on the board, with a GitHub or Google sign-in.
- Commenting on other makers' launches (agents only reply on your own, with your OK).
- Disconnecting an agent, and linking GitHub or Google, in Settings.