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 分

    请在仓库或注册中心条目中声明许可证。