Server providing Argo CD integration for MCP clients.
Hatch is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Hosting for AI agents: publish a live website in one tool call, ephemeral or forever.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http hatch-mcp https://mcp.theroost.dev/mcp
# 2 — ask your agent for something these tools do
# hatch, upload, lookup and 19 more
Hatch costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine and nothing runs on ours: this server answers at its publisher’s own address, and what you install is the connection straight to it.
This is a public server: it answers at its publisher’s own address and this marketplace is not in the path. Claude Code registers it in one command; --scope user makes it available in every project. The transport below is http, as the publisher's own manifest declares it.
claude mcp add --scope user --transport http hatch-mcp https://mcp.theroost.dev/mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry pointing straight at the publisher’s own address — this marketplace is not in the path, and nothing from this listing executes on your machine.
22 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
Create a NEW site (a 'roost') and return its public URL in one call. Returns { hatchId, slug, url, apex, promo, uploads? } — show url to the user and remember hatchId. NEVER call hatch twice for the same site — use convert to rename, change tier, or set Promo, and upload/deploy for content updates. Pick apex from the user's intent (homes / estate / land / wedding / events / agency /
| Parameter | Type | Required | Notes |
|---|---|---|---|
| tier | string | yes | free auto-expires (default 48h; override with ttlSeconds). In a paid Roost workspace, hatch stores workspace (still expires; not carousel-listed) even if you pass free. forever is a Pin (sub |
| kind | string | no | Artifact kind. Use run-report for agent observability / compliance run reports; default site for consumer sites. |
| html | string | no | Self-contained HTML document (inline CSS) published at /. Preferred for n8n and other AI tools that cannot pass nested site.files maps. Mutually exclusive with site, manifest, and script. |
| ttlSeconds | integer | no | Free-tier TTL in seconds (1h–7d). Default 172800 (48h). Ignored for forever. |
| apex | string | no | Specialty hostname apex for the live URL (https://{slug}.{apex}). Choose from user intent: theroost.homes (residential listing), theroost.estate (commercial/luxury), theroost.land (land/parcels), th |
| manifest | object | no | PREFERRED for sites with assets. List every file you want served, with its byte size and optional MIME type. The response includes one presigned PUT URL per file; upload bytes directly via HTTP (e.g. |
| site | object | no | Inline file map. Suitable ONLY for small text-only sites (a handful of HTML/CSS files). For anything with images or binaries, use manifest instead. |
| script | string | no | Advanced: full server-side code as one ES module. Text only, 1.5 MiB hard limit. NEVER embed images/fonts/binaries here — use manifest instead. |
| hatchId | string | no | Optional id to reuse. Omit entirely to auto-generate. Do not send an empty string (n8n: leave this field unmapped). Lowercase letters, numbers, and hyphens only; 1–50 chars; must start and end alphanu |
| tenantId | string | no | Legacy alias for hatchId. |
| preferredSlug | string | no | Hostname label. Omit for a friendly auto-name (e.g. swift-falcon-7a). |
| scriptMetadata | object | no | — |
| tosAcceptedAt | string | no | ISO-8601 timestamp |
| workspaceId | string | no | Workspace to hatch into (B2B). Omit when this connector is already paired to a workspace — the session supplies it. Do not hatch twice for a site that already exists in the workspace; call list firs |
| policy | string | no | HITL policy override for workspace-paired hatches. optional (default for a new Roost) does not open a review — call await_decision when you want one. required forks sibling {slug}-vN roosts wh |
| webhookUrl | string | no | Webhook for auto-opened HITL under workspace policy (see PARTNER-WEBHOOKS.md). |
| hitlTitle | string | no | Modal title for auto-opened HITL. |
| promo | boolean | no | Optional Promo flag. true lists this hatch on the public carousel even when its tier would hide it, if the hatch is active, has a public slug, and is not expired, and forces the Powered By chip on. |
Add or replace files on an EXISTING roost. Pass hatchId plus a manifest listing each file's path, size, and optional content type. Returns one presigned PUT URL per file — upload bytes directly via HTTP (e.g. curl -T file.png -H 'Content-Type: image/png' "$url"). Files go live immediately as each PUT completes; no separate publish call is needed. Use after regenerating a dashboard locally; H
| Parameter | Type | Required | Notes |
|---|---|---|---|
| hatchId | string | no | Hatch id from the original hatch response. |
| tenantId | string | no | Legacy alias for hatchId from the original hatch response. |
| manifest | object | yes | — |
| expiresSeconds | integer | no | URL TTL in seconds (default 3600). |
| sessionToken | string | no | Optional paired session token from poll_pairing (when Authorization headers are unavailable). |
| policy | string | no | HITL policy override. optional does not open a review (call await_decision). Under required, may fork a sibling {slug}-vN instead of overwriting. good_effort still auto-opens and supersedes. |
| webhookUrl | string | no | Webhook for auto-opened HITL. |
| hitlTitle | string | no | Modal title for auto-opened HITL. |
Resolve a roost by slug or hatchId. Returns a compact view { hatchId, slug, url, apex, tier, state, expiresAt, customDomain, galleryListed, promo, pageviews24h, visitors24h, topPaths, topCountries, topReferrers }. promo is true when the hatch is marked Promo (listed on the public carousel even when its tier would hide it, if active, with a public slug, and not expired; Powered By chip forc
| Parameter | Type | Required | Notes |
|---|---|---|---|
| hatchId | string | no | Hatch id from the original hatch response. |
| tenantId | string | no | Legacy alias for hatchId. |
| slug | string | no | Hostname label (without the apex domain) |
List every hatch in a workspace. Returns { workspaceId, name, count, hatches: [{ hatchId, slug, url, apex, kind, tier, state, expiresAt, createdAt, promo, pageviews24h, visitors24h }] }. promo is true when that hatch is marked Promo. Use this when you lost hatchIds, before hatching (so you do not create a duplicate), or when the user asks what is live in the workspace. workspaceId is optiona
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspaceId | string | no | Workspace to list. Omit when the session is already scoped to a workspace. |
| sessionToken | string | no | Optional paired session token from poll_pairing (when Authorization headers are unavailable). |
Rename the organization and/or workspace after Roost or Roost Audit has been paid. Pass orgName, workspaceName, or both. Requires a workspace-paired session. Fails on free Hatch workspaces — call checkout with grant workspace_subscription (Roost) or agentic_pro (Roost Audit) first, then poll_checkout. Does not rename a hatch URL; use convert for that. Returns `{ workspaceId, workspac
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspaceId | string | no | Workspace to rename. Omit when the session is already scoped to a workspace. |
| orgName | string | no | New organization display name (1–80 characters). Omit to leave the org name unchanged. |
| workspaceName | string | no | New workspace display name (1–80 characters). Omit to leave the workspace name unchanged. |
| sessionToken | string | no | Optional paired session token from poll_pairing (when Authorization headers are unavailable). |
Atomically rename a roost's URL, change gallery listing, mark or unmark Promo, or bind a custom domain (Roost / Roost Audit after checkout grant custom_domain). Pass hatchId plus at least one of newPreferredSlug, galleryListed, promo, or customDomain. Do NOT call hatch again to rename or to change Promo — that creates a second site. Optional promo (boolean). true lists this hatch
| Parameter | Type | Required | Notes |
|---|---|---|---|
| hatchId | string | no | Hatch id from the original hatch response. |
| tenantId | string | no | Legacy alias for hatchId. |
| newPreferredSlug | string | no | New hostname label. The old slug is released atomically. |
| newTier | string | no | Roost / Roost Audit may pass forever while subscription Pins remain (10). After the allotment, use checkout (grant: publish) for a paid Pin. |
| galleryListed | boolean | no | Opt in (true) or out (false) of the public Barnyard carousel. Pins require true to appear; free is listed unless false. Paid Roost hatches (tier: workspace) are never listed by this flag. Us |
| promo | boolean | no | Optional Promo flag. true lists this hatch on the public carousel even when its tier would hide it, if the hatch is active, has a public slug, and is not expired, and forces the Powered By chip on. |
| customDomain | string | no | Customer-owned hostname. Roost / Roost Audit only, after checkout grant custom_domain (+$29/mo). Pass an empty string to clear. |
| sessionToken | string | no | Optional paired session token from poll_pairing (when Authorization headers are unavailable). |
List VibeRooster features the user can pay for (Pin $4.99/yr, Pack $4.99/yr/GB, Roost $259/mo, Roost Audit $459/mo, custom domain +$29/mo) with Stripe Price ids, amounts, and feature lists. Call this before checkout if you don't already know the grant. Returns { items: [{ grant, title, description, features, priceId, amountCents, scope }] }.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| grant | string | no | Optional filter. publish = Pin. workspace_coin_pack = Pack. workspace_subscription = Roost. agentic_pro = Roost Audit. custom_domain = custom domain add-on. |
List HTML templates and explorable archetypes from the public template catalog (https://github.com/VibeRooster/hatch-mcp/tree/main/templates). Returns { repo, browse, templates: [{ name, title, description, url }] }. Descriptions come from each file's frontmatter. Open url for the HTML and hatch notes — this tool does not return the file body. Add a template by opening a pull request that adds
No parameter schema on file.
Create a Stripe Checkout Session so the user can pay for a VibeRooster feature in this chat. Returns { checkoutUrl, sessionId, grant, amountCents } — ALWAYS show checkoutUrl to the user (open it / paste it). After they pay, call poll_checkout with sessionId until status is complete. The webhook applies the grant (Pin, Pack, Roost, Roost Audit, custom domain). Required ids by grant: `publish
| Parameter | Type | Required | Notes |
|---|---|---|---|
| grant | string | yes | publish = Pin ($4.99/yr, 1-year keep; also overage after 10 subscription Pins). workspace_subscription = Roost ($259/mo). agentic_pro = Roost Audit ($459/mo). workspace_coin_pack = Pack ($4.99 |
| hatchId | string | no | Hatch id from hatch/lookup. Required for publish (Pin), record, credit_topup, and Pack. |
| tenantId | string | no | Legacy alias for hatchId. |
| workspaceId | string | no | Workspace id. Required for Roost (workspace_subscription) and custom_domain. |
| orgId | string | no | Organization id. Required for Roost Audit (agentic_pro) unless derivable from workspace/hatch. |
| priceId | string | no | Optional Stripe Price id from catalog. Omit to use the mapped default for this grant. |
| quantity | integer | no | Line-item quantity (Pack GB, custom domain slots). Default 1. |
Long-poll a Checkout Session from checkout (~18s). Returns { status: open|complete|expired, grantApplied, roostUrl, tier }. If still open, tell the user to finish paying at checkoutUrl and call poll_checkout again. When grantApplied is true, the webhook has (or is about to) apply the grant — call lookup to confirm forever/tier.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| sessionId | string | yes | Checkout Session id (cs_…) from checkout. |
Put a sign-in screen in front of any roost so visitors must authenticate. Works on free, workspace, and forever hatches. Pass hatchId plus an action: • enable with mode: "password" and a password → ONE shared site password (everyone uses the same one). Best for a private demo or staging link. • setPassword with a new password → rotate the shared password. • disable → remove the log
| Parameter | Type | Required | Notes |
|---|---|---|---|
| hatchId | string | no | Hatch id from the original hatch response. |
| tenantId | string | no | Legacy alias for hatchId from the original hatch response. |
| action | string | no | What to do. Defaults to status. |
| mode | string | no | password = one shared site password (recommended). useraccounts is unavailable. Required when action is enable. |
| password | string | no | The shared site password (password mode only). Required for enable (password mode) and setPassword. |
| sessionToken | string | no | Optional paired session token from poll_pairing (when Authorization headers are unavailable). |
Issue a signed, expiring guest view URL for any tier (?vt=…). Use for private run reports without the shared site password. Returns { url, viewToken, expiresAt }.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| hatchId | string | no | Hatch id from the original hatch response. |
| tenantId | string | no | Legacy alias for hatchId. |
| expiresSeconds | integer | no | — |
| sessionToken | string | no | — |
Create a human-in-the-loop review on the live artifact. Default options: Approve / Request changes / Reject. Reviewers see a Review required chip → modal. Request changes is non-terminal: webhook or poll returns changes_requested, then call continue_decision after regenerating. Optional timeoutSeconds and maxIterations (default 5). If the page has interactive controls (sliders/forms), the hatch HT
| Parameter | Type | Required | Notes |
|---|---|---|---|
| hatchId | string | no | Hatch id from the original hatch response. |
| tenantId | string | no | Legacy alias for hatchId. |
| options | array | no | Radio choices (default Approve, Request changes, Reject). Labels are classified into approve / reject / changes_requested. |
| title | string | no | Modal heading (default: Finish your review). |
| agentOutput | string | no | Optional seed of the agent’s current output into the conversation transcript. |
| maxIterations | integer | no | Max review rounds (default 5). Requesting changes at the last iteration fails with max_iterations_exceeded. |
| timeoutSeconds | integer | no | Wall-clock timeout for this review round; omit for no timeout. |
| contextUrl | string | no | — |
| webhookUrl | string | no | HTTPS URL that receives a POST on every HITL transition (decision.resolved, decision.changes_requested, timeout, superseded, etc.). Prefer this over poll_decision when wiring n8n, Temporal, or other a |
| policy | string | no | Policy stored on the decision when the hatch has none set. Does not by itself skip creating the review — await_decision always opens or reuses one. |
| sessionToken | string | no | — |
After poll_decision returns status changes_requested, regenerate, then call this to reopen the same decision as pending_review for the next human round. Only decisionId is required (hatchId is read from the decision).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| decisionId | string | yes | — |
| hatchId | string | no | Hatch id from the original hatch response. |
| tenantId | string | no | Legacy alias for hatchId. |
| agentOutput | string | no | Summary of the revised output for the conversation transcript. |
| title | string | no | — |
| timeoutSeconds | integer | no | Optional new timeout for this review round. |
| sessionToken | string | no | — |
Long-poll (~20s) until the decision leaves pending_review. Only decisionId is required (hatchId is read from the decision). Returns changes_requested (regenerate + continue_decision), approved, rejected, timeout_exceeded, max_iterations_exceeded, not_found, or still pending_review (call again). Includes comment, settings, conversation, iteration. Polling never writes: timeout_exceeded only ever me
| Parameter | Type | Required | Notes |
|---|---|---|---|
| decisionId | string | yes | — |
| hatchId | string | no | Hatch id from the original hatch response. |
| tenantId | string | no | Legacy alias for hatchId. |
Return the caller's current identity and hatch state. Never errors when unidentified — returns a pairing path instead. After poll_pairing completes, whoami with the same hatchId should show identified:true via server-side session binding. Returns sessionExpiresAt (~1h) and grantExpiresAt (~7d). If sessionExpired:true, call refresh_session with your stored refreshToken.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| hatchId | string | no | Optional hatch to check or re-pair against. |
| tenantId | string | no | Legacy alias for hatchId. |
| sessionToken | string | no | Optional token from poll_pairing. Pass when whoami stays unidentified after a successful pair (connectors that cannot set Authorization headers). |
Issue a pairing code + URL (TTL 10 minutes) for claiming a hatch (hatchId) or authorizing an agent session in a workspace (workspaceId). Reuses the active pending code for this connector session unless forceNew: true. For workspace pairing, show pairingUrl (https://mcp.theroost.dev/open/workspace-pair) as the link the user taps — it opens the Vibe Rooster app on the phone, and on a computer
| Parameter | Type | Required | Notes |
|---|---|---|---|
| hatchId | string | no | Hatch id from hatch response (consumer path). |
| tenantId | string | no | Legacy alias for hatchId. |
| workspaceId | string | no | Workspace id for B2B agent pairing (partner path). |
| forceNew | boolean | no | When true, invalidate any outstanding QR and mint a new code. Default false — reuse the live pending code from whoami or a prior get_pairing_code. |
Poll for pairing completion (Device-Grant style). Waits up to ~20s for phone approval before returning. Statuses: pending / completed / expired / not_found. On completed, store sessionToken, refreshToken, and grantId — refreshToken renews access for up to 7 days without re-pairing. When sessionToken expires (~1h), call refresh_session. The server also binds tokens to this connector session. Pass h
| Parameter | Type | Required | Notes |
|---|---|---|---|
| code | string | yes | Pairing code from get_pairing_code / whoami. |
| hatchId | string | no | Optional hatch id — improves lookup after the phone has approved. |
| tenantId | string | no | Legacy alias for hatchId. |
| workspaceId | string | no | Optional workspace id — for B2B pairing flows. |
Renew a short-lived access token (~1h) using the refreshToken from poll_pairing. The grant (and refresh capability) lasts up to 7 days — after that, re-pair via get_pairing_code. Each refresh rotates the refreshToken; store the new one. Requires the same connector session (MCP-Session-Id) as when you paired — if fingerprint mismatches, re-pair.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| refreshToken | string | yes | Opaque refresh token from poll_pairing (vr1.{grantId}.{secret}). |
| hatchId | string | no | Hatch id (consumer path). |
| tenantId | string | no | Legacy alias for hatchId. |
| workspaceId | string | no | Workspace id (B2B path). |
Poll a pending Tier-2 phone approval. Returns the result once the owner approves or denies on their phone.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| approvalId | string | yes | — |
| hatchId | string | no | Hatch id from the original hatch response. |
| tenantId | string | no | Legacy alias for hatchId. |
Sound a loud alarm on the phones paired to this roost. Pass hatchId and a short message — the phone shows that message and repeats the alarm until the person acknowledges it. Recipients are only phones paired to this roost or its workspace. There is no phone-number argument. Do not pass one, and do not try to reach any other device. Android plays alarm audio. The alarm channel bypasses Do Not
| Parameter | Type | Required | Notes |
|---|---|---|---|
| hatchId | string | no | Hatch id from the original hatch response. |
| tenantId | string | no | Legacy alias for hatchId. |
| message | string | yes | Short text shown on the alarm. The phone repeats until the person acknowledges it. |
| sessionToken | string | no | Optional paired session token from poll_pairing (when Authorization headers are unavailable). |
Replace the server-side code of an existing roost. Advanced — most agents should use upload (for static files) or convert (for renames) instead. Pass hatchId, workerName, and a full ES module script (text only, 1.5 MiB max).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| hatchId | string | no | Hatch id from the original hatch response. |
| tenantId | string | no | Legacy alias for hatchId. |
| workerName | string | yes | — |
| script | string | yes | Full ES module source. |
| metadata | object | no | — |
| sessionToken | string | no | Optional paired session token from poll_pairing (when Authorization headers are unavailable). |
| approvalId | string | no | Tier-2 phone approval id from a prior deploy attempt. |
| policy | string | no | HITL policy override. optional does not open a review (call await_decision). Under required, may fork a sibling {slug}-vN. good_effort still auto-opens and supersedes. |
| webhookUrl | string | no | Webhook for auto-opened HITL. |
| hitlTitle | string | no | Modal title for auto-opened HITL. |
- Every tool — any call limit is its publisher’s, not ours
- No card, and mcprush charges nothing for it
- Runs at its publisher’s own address — this marketplace is not in the path
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install Hatch or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
This listing is an address its publisher runs, and you connect to it directly — this marketplace is not in the path. The scanner reads packages and public source, and an address is neither: the repository linked on this page is where this record was collected from, not a copy of what the address serves, so it is not graded in its place. So there is no grade — not a withheld one, an unmeasured one.
Release history
This is an address its publisher runs: which release it serves is theirs to choose, so there is nothing here to pin. The history below is for reading; the current release on file is 1.0.0-1.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish Hatch can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.