Hatch

com.viberooster由 viberooster.com 發布v1.0.0-1更新於 Oct 24, 2026

Hosting for AI agents: publish a live website in one tool call, ephemeral or forever.

已驗證Streamable HTTP可網頁執行效率與工作流雲端與基礎設施商業與電商

概覽

AI 產生的概覽

Hatch 是遠端託管服務,讓助理用一次工具呼叫就發布上線網站,並能管理、保護與付費升級。

可以做什麼
建立新站台(roost)並取得公開網址,或列出、查詢工作區內的站台,並透過 convert 與 rename_org 重新命名或綁定自訂網域。透過預簽章 PUT 連結上傳或取代檔案,並用 deploy 取代站台的伺服器端程式碼。為站台設定密碼或登入頁保護,簽發有時效的訪客檢視連結,並向已配對的手機發出警報。用 await_decision、poll_decision 與 continue_decision 對線上產物進行人工審核流程。瀏覽付費功能與範本、發起 Stripe 結帳並輪詢付款結果,以及處理配對、工作階段更新與 Squawk 存取申請。
適用情境
適合讓助理快速架設可分享的網頁或小型站台、透過上傳持續調整,並視需要加上密碼保護或人工核准步驟。也適用於付費方案、自訂網域,以及與已發布站台連結的手機提醒。
執行需求
遠端 streamable HTTP 端點,不需安裝套件或本機執行環境。未宣告身分驗證,但多數操作需要配對工作階段:取得配對碼與連結,由擁有者在手機上核准,然後保存回傳的工作階段權杖與更新權杖。付費功能需要 Stripe 結帳。
安裝前請注意
站台與上傳的檔案會公開發布並立即上線。伺服器可建立 Stripe 結帳工作階段以購買付費方案,可能產生付款與週期性扣款。它會簽發並輪換工作階段與更新權杖,需要妥善保存,還能在已配對手機上觸發響亮警報。密碼保護與訪客連結用於控制已發布內容的存取。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Hatch,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/com.viberooster%2Fhatch/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "hatch": {
      "type": "http",
      "url": "https://mcp.theroost.dev/mcp"
    }
  }
}

README

該儲存庫沒有 README。

工具

24

hatch

Hatch a new site

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 / site / omit for theroost.dev). Do NOT invent other apexes. Ways to call it: • `html` (PREFERRED for n8n / a single review page) → one self-contained HTML string published at /. Do not also pass site/manifest/script. • Omit `html`, `manifest`, `site`, and `script` → a placeholder page is published instantly. • Pass `manifest` (file list with sizes) → returns presigned `uploads[]`; you PUT each file's bytes directly to its URL. PREFER this for any project with images, fonts, video, or more than a few KB of HTML. • Pass `site` (inline files map) → small text-only sites only. File keys must be paths like `index.html` (n8n may send `index`; that is accepted as `index.html`). • Pass `script` → advanced: full server-side code as one ES module (1.5 MiB max, text only — NEVER base64-embed binaries here). Optional `promo` (boolean). `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. A password still keeps it off the carousel. `false` unmarks Promo and returns the normal carousel and chip rules. Omit `promo` to leave an existing hatch unchanged, or to create one under the normal rules. To change Promo later, call `convert` with `promo` — do not hatch again. Do not send empty strings for optional fields (hatchId, preferredSlug, apex, html, site). Omit them.

輸入參數apexhtmlkindsitetier必填promopolicyscripthatchIdmanifesttenantIdhitlTitle另有 6 個

upload

Upload files to an existing site

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; Hatch does not schedule regenerations.

輸入參數policyhatchIdmanifest必填tenantIdhitlTitlewebhookUrlsessionTokenexpiresSeconds

lookup

Lookup a site

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 forced on). A password still keeps a Promo hatch off the carousel. Use this to recover state across turns when the user mentions their site without giving you the hatchId. To see every hatch in a workspace, use `list` instead.

輸入參數slughatchIdtenantId

list

List workspace hatches

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 optional when this connector is already paired to a workspace. Requires a workspace-paired session — call `whoami`, then `get_pairing_code` with workspaceId if unidentified.

輸入參數workspaceIdsessionToken

rename_org

Rename organization and workspace

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, workspaceName, orgId, orgName, plan }`.

輸入參數orgNameworkspaceIdsessionTokenworkspaceName

convert

Rename or change tier

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 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. A password still keeps it off the carousel. `false` unmarks Promo and returns the normal carousel and chip rules. Omit `promo` to leave the flag unchanged. `promo` alone is enough. Roost and Roost Audit include 10 subscription Pins. `convert` with `newTier: forever` is allowed while those slots remain. After that, call `checkout` with grant `publish` (Pin, $4.99/yr). Do not use convert to collect payment. Pins are hidden from the carousel by default; pass `galleryListed: true` to feature the site publicly. Paid Roost hatches stay off the carousel unless `promo` is true.

輸入參數promohatchIdnewTiertenantIdcustomDomainsessionTokengalleryListednewPreferredSlug

catalog

List payable features

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 }] }`.

輸入參數grant

list_templates

List HTML templates

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, prompt, referenceUrl? }] }`. `prompt` is the suggested text for the user. `referenceUrl` is the live example when one is published. 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 `templates/<name>.md` on that repo. No arguments.

無需輸入參數。

checkout

Create a payment link

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` / `record` / `credit_topup` / `workspace_coin_pack` (Pack) → hatchId; `workspace_subscription` (Roost) / `custom_domain` → workspaceId (or hatchId in that workspace); `agentic_pro` (Roost Audit) → orgId or workspaceId/hatchId attached to the org. Do not use Stripe MCP (mcp.stripe.com) for VibeRooster features — that would charge a different Stripe account. Hatch `checkout` stamps hatch/workspace/org metadata the webhook expects.

輸入參數grant必填orgIdhatchIdpriceIdquantitytenantIdworkspaceId

poll_checkout

Wait for payment

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.

輸入參數sessionId必填

auth

Protect a site with a login

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 login and serve the site publicly again. • `status` → report whether auth is on and which mode. Returns `{ enabled, mode, loginUrl }`. The sign-in screen lives at `/__roost/login`. Prefer `password` mode; `useraccounts` is unavailable (per-hatch databases are no longer provisioned).

輸入參數modeactionhatchIdpasswordtenantIdsessionToken

share

Guest view link

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 }`.

輸入參數hatchIdtenantIdsessionTokenexpiresSeconds

await_decision

Await human decision

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 HTML MUST expose window.__VR_HITL_GET_SETTINGS__ so the review can attach those assumptions as JSON. When the user integrates n8n, Temporal, CI, or any external workflow, pass webhookUrl (MCP opens the review; the platform POSTs each transition to that URL — prefer webhook over poll_decision for automation). See PARTNER-WEBHOOKS.md for event payloads.

輸入參數titlepolicyhatchIdoptionstenantIdcontextUrlwebhookUrlagentOutputsessionTokenmaxIterationstimeoutSeconds

continue_decision

Continue HITL after changes requested

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

輸入參數titlehatchIdtenantIddecisionId必填agentOutputsessionTokentimeoutSeconds

poll_decision

Poll decision resolution

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 means the await_decision timeoutSeconds deadline passed before the human submitted.

輸入參數hatchIdtenantIddecisionId必填

whoami

Check identity

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.

輸入參數hatchIdtenantIdsessionToken

get_pairing_code

Get pairing code

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 it opens a page that forwards into the app when the same link is opened on the phone. Do not show only `appUrl`; that viberooster:// link does nothing in a desktop chat. `appUrl` is only for an in-app QR. Do not call again until poll_pairing returns expired/completed or you intentionally rotate with forceNew.

輸入參數hatchIdforceNewtenantIdworkspaceId

poll_pairing

Poll pairing completion

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 hatchId when known. Device claim ≠ forever billing upgrade.

輸入參數code必填hatchIdtenantIdworkspaceId

refresh_session

Refresh agent session

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.

輸入參數hatchIdtenantIdworkspaceIdrefreshToken必填

poll_approval

Poll destructive-op approval

Poll a pending Tier-2 phone approval. Returns the result once the owner approves or denies on their phone.

輸入參數hatchIdtenantIdapprovalId必填

alarm

Alarm the paired phone

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 Disturb after the person grants that access. iOS requests Critical Alerts and this push is sent with a critical sound at full volume. Apple has not granted the Critical Alerts entitlement (com.apple.developer.usernotifications.critical-alerts) yet, so iOS does not bypass the Ring/Silent switch until that grant. Do not tell the user the silent switch was bypassed. A claimed roost requires a paired agent session. If no phone is paired, or the phone has not allowed notifications, the call fails and nothing is sent.

輸入參數hatchIdmessage必填tenantIdsessionToken

squawk_request_access

Request Squawk access

Ask the roost owner to admit this agent to Squawk. Uses the caller's Hatch pairing session (Authorization: Roost, the bound connector session, or sessionToken from poll_pairing). Returns `{ requestId, status: "pending", expiresAt }`. The request expires 10 minutes after it is opened. Does not create a Squawk member. This tool is on Hatch, not on the Squawk server. Pass displayName and runtime. Optional roostId must match the paired roost. Optional publicKey makes the later member agent_signed.

輸入參數roostIdruntime必填publicKeydisplayName必填sessionToken

squawk_poll_access

Poll Squawk access

Poll an admit request opened by squawk_request_access. Uses the same Hatch pairing session. While pending, returns `{ status: "pending", expiresAt }`. After the owner approves, returns the member, the rin_ token once, roostId, and mcpServers.squawk. Install the returned mcpServers.squawk block into this MCP client immediately. Use the url and the Authorization header exactly as returned. Do not print, log, or paste the rin_ token into chat. After it is installed, further roost traffic uses the Squawk tools (squawk, squawk_whoami, squawk_read, squawk_ack, squawk_watch, and the rest listed in SQUAWK-AGENT.md). A one-shot HTTP call is not a substitute. If this host cannot hot-add an MCP server mid-turn, write that config where this client loads MCP servers and use the Squawk tools on the next turn. Do not invent a Cursor API. Later polls return status approved and the member id, without the token and without mcpServers. Rejected and expired have no token. One approval admits this agent to that one roost.

輸入參數requestId必填sessionToken

deploy

Replace site code (advanced)

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

輸入參數policyscript必填hatchIdmetadatatenantIdhitlTitleapprovalIdwebhookUrlworkerName必填sessionToken

版本歷史

1
  1. v1.0.0-1最新Sep 16, 2026

評分

已滿足適用檢查項的 75%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分

    請宣告包含 README 的 GitHub 儲存庫,或在 OAuth 受保護資源後設資料中提供 resource_documentation。

  • 授權條款10 分

    請在儲存庫或註冊中心條目中宣告授權條款。