For AI assistants · MCP connector docs
RunCabin is the easiest way to connect and manage your website with AI. RunCabin lets an AI assistant deploy real websites for you - an instant free HTTPS subdomain in one tool call, and a real custom domain when you're ready. Sign-in happens in your browser, so chat apps need no key to paste, and a domain you buy through RunCabin gets registration, DNS and TLS set up for you; a domain you already own needs two records at your provider.
Green data center100% hydropower
New to this? The plain-language walkthrough shows it in four steps. Overview, limits and prices: website hosting for AI agents.
server https://runcabin.com/mcp
transport Streamable HTTP
auth OAuth 2.1 in the browser, or an API key
registry com.runcabin/cabin
paid steps human-approved checkout, always
Setup · Claude
Open Claude's Add custom connector screen with RunCabin filled in. Or, in Claude, open Customize → Connectors (claude.ai/customize/connectors) and choose Add custom connector.
The server URL is https://runcabin.com/mcp (already filled in if you used the link).
Claude opens RunCabin's sign-in page - sign in with Google or email, then click Authorize. New here? Signing in creates your free RunCabin account on the spot.
Done. Try: "Make me a one-page website and put it online." - you never need to name RunCabin or a tool; just say what you want live.
RunCabin is a custom connector you add yourself; Claude doesn't suggest custom connectors on its own, so once it's added, just ask for what you want. RunCabin is not endorsed by Anthropic. The owner's walkthrough: put your website online from Claude.
Setup · ChatGPT
In ChatGPT on the web, open Settings and find where apps or connectors are added (it has been called Apps, Apps & Connectors and Plugins). If ChatGPT asks for it, turn on Developer mode under Advanced settings first.
Choose Create (or Add custom MCP server), name it RunCabin, and enter the server URL: https://runcabin.com/mcp
For authentication choose OAuth, then create it. ChatGPT opens RunCabin's sign-in page: sign in with Google or email and click Authorize. New here? Signing in creates your free RunCabin account.
Done. In a new chat, turn RunCabin on from the tools menu if ChatGPT doesn't pick it up on its own, then try: "Make me a one-page website and put it online."
RunCabin is a custom MCP server you add yourself, with every tool, including domains. RunCabin is not endorsed by OpenAI. The owner's walkthrough: put your website online from ChatGPT.
Setup · Muse
In a chat with Muse, ask it to create a custom connector for RunCabin, and give it the server URL: https://runcabin.com/mcp. For example: "Create a custom connector for RunCabin at https://runcabin.com/mcp."
When the sign-in step comes up, sign in to RunCabin on runcabin.com with Google or email, then click Authorize. New here? Signing in creates your free RunCabin account.
If Muse asks you for an API key instead, open runcabin.com/agentkeys: sign in (or create your free account), click Mint key, and paste the key into Muse.
In Muse's Settings, choose whether Muse asks for your approval before each action it takes with RunCabin.
Done. Try: "Make me a one-page website for my business and put it online."
In a browser, Muse would have to sign up for hosting, upload files and edit DNS step by step. Through RunCabin, publishing is one call that returns a live address.
Setup · Coding tools
RunCabin is published on the official MCP Registry as com.runcabin/cabin. Every tool below signs you in to RunCabin in your browser on first connect - there is no API key to paste.
claude mcp add --transport http runcabin https://runcabin.com/mcpThen run /mcp, pick runcabin, and sign in via the browser window that opens. Add --scope user to the command to enable it across all your projects.
Or add it by hand under mcpServers in ~/.cursor/mcp.json (or .cursor/mcp.json in a project):
"runcabin": { "url": "https://runcabin.com/mcp" }Or run MCP: Add Server from the command palette and add this under servers in .vscode/mcp.json:
"runcabin": { "type": "http", "url": "https://runcabin.com/mcp" }Add this under mcpServers in ~/.codeium/windsurf/mcp_config.json:
"runcabin": { "serverUrl": "https://runcabin.com/mcp" }The sign-in opens automatically after you add the server.
codex mcp add runcabin --url https://runcabin.com/mcp
codex mcp login runcabinThe login opens your browser to sign in to RunCabin. Or add it by hand to ~/.codex/config.toml, then run the login:
[mcp_servers.runcabin]
url = "https://runcabin.com/mcp"gemini mcp add --transport http runcabin https://runcabin.com/mcpThen run /mcp auth runcabin in Gemini CLI and sign in in the browser window that opens. Add --scope user to the command to use it in every project. By hand, under mcpServers in ~/.gemini/settings.json:
"runcabin": { "httpUrl": "https://runcabin.com/mcp" }Setup · Everything else
RunCabin speaks standard MCP over Streamable HTTP with OAuth 2.1 (authorization code + PKCE, dynamic client registration). Any spec-conforming client can connect to https://runcabin.com/mcp - discovery starts from the standard /.well-known/oauth-protected-resource metadata.
Without signing in, a client or directory can read the server card at /mcp/server-card (also named in /.well-known/ai-catalog.json) and the exact tool list at /mcp/tools. The server also offers prompts for the common jobs (put a site online, change it, add photos, add a contact form, use your own domain), which Claude Code shows as slash commands, and the build guide as the resource runcabin://build-guide. The REST API is described at /v1/openapi.json.
Clients that prefer static credentials can send a RunCabin API key as a Bearer token instead: sign in and mint one at runcabin.com/agentkeys, or let the tool get its own through the device sign-in below.
Setup · Terminal
A script, CLI or coding agent that calls the REST API at https://runcabin.com/v1 can get its own API key without anyone typing a password into it or pasting a key. The tool asks for a sign-in code, you approve it in your browser, and the tool picks up the key.
1. Start. The tool asks for a code:
curl -s -X POST https://runcabin.com/v1/login/start \
-H "Content-Type: application/json" \
-d '{"clientName": "My deploy script"}'The answer carries a deviceCode (the tool keeps it to itself), a userCode such as BCDF-GHJK and a verificationUrlComplete link. The tool shows you the link and the code. Open the link, sign in, check that the code matches, and press Approve.
2. Poll. Every 5 seconds the tool asks for its key:
curl -s -X POST https://runcabin.com/v1/login/token \
-H "Content-Type: application/json" \
-d '{"deviceCode": "cabin_dc_..."}'Until you approve, the answer is authorization_pending (or slow_down if the tool polls too fast). Once you approve, it returns the key, one time only: {"ok": true, "key": "cabin_live_...", ...}. The tool sends it as Authorization: Bearer cabin_live_.... A denied request answers access_denied, and a request expires after 10 minutes (expired_token).
You can see and revoke every key at runcabin.com/keys, and we email you each time a tool gets one. RunCabin never emails or texts you a code to approve: only approve a request you started yourself.
Reference · The toolbox
Everything the server exposes, with each tool's class. Read tools only look. Write tools add or change something without changing what your site shows, sending anything for you, or starting a purchase. Sensitive tools change what the public sees, take something down, change your domain's mail, send something for you, or start a purchase. These are the read / write / sensitive classes Muse, Meta's AI agent, asks connectors to document; other apps read the read-only and destructive hints the server sends with every tool.
| Tool | What it does | Side effects | Class |
|---|---|---|---|
cabin_build_guide | RunCabin's build guide for assistants: hosting limits, forms, page basics, and the design and honest-content rules RunCabin's own builder follows. Every publish reply lists anything the files miss, so the assistant fixes it and publishes again. | None. | Read |
cabin_get_pricing | Current prices (free subdomain; $4.99/mo or $47.99/yr on your own domain), the purchase terms, and where sites are hosted. | None. | Read |
cabin_publish | Puts a page or site online in one call: creates the site (or updates an existing one) and deploys the files, returning a live free HTTPS URL immediately. | Puts the files on the public web. Every HTML page gets a small "Built with RunCabin" badge and RunCabin's visit tracker, which logs each page view (visitor IP, approximate location, user agent, referrer) for your visit counts. | Sensitive |
cabin_edit_site | Changes part of a live site without sending all of it again: exact text replacements, whole files added or replaced, files removed. Applies all of them or none, then the result is live at once as a new version. | Replaces what the live site shows; the earlier version stays in the history for a rollback. Same badge and visit tracker as cabin_publish. | Sensitive |
cabin_create_site | Reserves a site and its free public HTTPS URL (yourname.sites.runcabin.com) without deploying content yet. | Reserves the subdomain. Nothing is public until a deploy. | Write |
cabin_deploy | Deploys HTML (single page or a multi-file map) to a site. Live the moment it returns; re-deploying updates the same site. | Replaces what the live site shows. Same badge and visit tracker as cabin_publish. | Sensitive |
cabin_deploy_preview / cabin_promote | Stages a new version at a preview URL without changing the live site, then promotes it when it looks right. | The preview gets the same badge and visit tracker, and opens for anyone who has its link (it is kept out of search engines). Promote replaces what the live site shows. | Sensitive |
cabin_rollback | Re-serves an earlier deployment at the same URL, to undo a bad deploy. | Changes what the live site shows. Nothing is deleted: the version it replaces stays reachable at its preview link for anyone who has that link. Uploaded assets are not versioned, so a rollback doesn't bring back an older asset. | Sensitive |
cabin_deploy_status / cabin_site_health | Status and live URL of a deployment; a quick "is my site up and serving" check with form wiring and visit counts. | None. | Read |
cabin_list_sites / cabin_list_deployments | Lists the sites you own with their URLs, and each site's deployment history. | None. | Read |
cabin_get_site / cabin_get_file | Reads back a site's current live content (manifest + files) so the assistant can edit instead of regenerate. | None. | Read |
cabin_upload_asset | Hosts an image, font, PDF or data file on the site by fetching it from a public HTTPS URL, optionally inside a folder (a members-only one, say). Assets persist across re-deploys. A PDF is always served as a download. | The file is public on the live site as soon as it is uploaded, unless it is in a members-only folder. Uploading to the same path replaces it on the live site at once, and a rollback doesn't undo that. | Sensitive |
cabin_request_photos | Makes a link the person opens on their phone to add their own photos to the site. Each photo is checked (JPEG, PNG or WebP) and its location and camera data removed. The link works for 72 hours or until they press Done, for up to 40 photos. folder sends them into a folder of the site, such as a members-only one. | Whoever has the link can add photos to the site until it expires; each photo is public at its address on the site as soon as it is added, unless it went into a members-only folder. Up to 300 photos per site, and a sixth open link closes the oldest. | Sensitive |
cabin_list_photos | Lists the photos that came from the person's phone, with their site address, size and what the person said each one shows, and the state of each photo link. | None. | Read |
cabin_create_form | Adds a working contact / lead-capture form endpoint to a site: submissions are stored and emailed to you. RunCabin hosts the endpoint, so the site needs no backend of its own. | Each submission is stored with the visitor's IP address. With email notices on, the free text is screened for spam by Anthropic's Claude, and the notice is sent through Resend. | Write |
cabin_list_submissions | Reads the messages and leads your site's forms have received (owner only). | None. Returns what visitors typed, which can include names and contact details. | Read |
cabin_delete_site | Permanently deletes a site and its deployments. Irreversible. | Also deletes the site's forms and every submission, its members area with every member and sign-in, and takes its custom domain off the site (a domain bought through RunCabin stays yours). Refused while the site's hosting is active: cancel hosting first. | Sensitive |
cabin_setup_members | Makes folders of a site on your own domain members-only: those pages and files open only to signed-in members, who sign in with a 6-digit code emailed to them (no passwords). Sets who may join: only addresses you add, anyone you approve, or anyone who proves their email. Comes with hosting on your own domain. Not switched on yet: the four member tools join the tool list when it is. | Takes those pages off the public web at once; turning it off makes them public again and signs every member out. Sign-in codes go to members, and join-request notices to you, by email through RunCabin's members sending account at Resend. A sign-in lasts 30 days in that browser (a cookie on your domain only). | Sensitive |
cabin_add_members | Adds email addresses to a site's member list (up to 200 a call, 1,000 per site). | Emails nobody unless you asked your assistant to invite them; then each one gets an invitation through RunCabin's members sending account at Resend. RunCabin stores each address and name. | Sensitive |
cabin_update_member | Approves a join request or removes a member. | A removal blocks that address and signs it out everywhere at once; an approved request is emailed that it can sign in. | Sensitive |
cabin_list_members | Lists a site's members, join requests and removed addresses, with the members area's settings. | None. Returns the names and notes people typed when asking to join. | Read |
cabin_check_domain | Checks whether a custom domain is available to register and what it costs. Free lookup, no charge. | None. Asks the domain registry (RDAP) and RunCabin's registrar. | Read |
cabin_attach_domain | Buys a custom domain through RunCabin or connects one you already own. A buy is an order: an orderId and a Stripe checkout for exactly that domain and hosting plan, which you approve and pay. Connect returns a hosting subscription link. | Nothing is charged until you pay at checkout. A buy keeps one open checkout per site: the same order again returns it, a different one closes it first. Connect records the domain on the site right away, and with replace=true takes the site's old domain off it as soon as the link is made. | Sensitive |
cabin_domain_status | Follows a domain order by orderId (waiting for payment, paid, registering, setting up, live) or an attach by domainId; for connected domains it returns the exact DNS records to set once you're subscribed, including the required _cabin-verify TXT record that proves you own the domain. | Asks Stripe about an order that is waiting for payment and records a payment or an expiry; marks a connected domain verified once its _cabin-verify record is seen. | Read |
cabin_setup_email_forwarding | Sets up a real address at a domain bought through RunCabin (e.g. hello@yourdomain.com) forwarding to your personal inbox. Mail DNS is handled automatically. Inbound only: a full mailbox that also sends, such as Google Workspace, RunCabin sets up for an additional fee (ask through cabin_send_user_feedback). | Adds two MX records and adds ImprovMX to the domain's SPF record (or creates one). The domain, the alias and your forward-to address go to ImprovMX, the forwarding provider. | Sensitive |
cabin_add_txt_record | Publishes an ownership-verification TXT record (Google Search Console, Bing, Stripe, DMARC and similar) on a domain bought through RunCabin. Additive and TXT-only. | Adds one TXT record to the domain's DNS. It never adds a second SPF record. | Write |
cabin_send_user_feedback | Sends your feedback to the RunCabin team, in your own words, when you ask your assistant to. We get it by email right away and can answer you by email. | Emails your message to the RunCabin team at once, with your account's email as the reply address. | Sensitive |
cabin_send_agent_feedback | Lets your assistant tell us when one of these tools gave it trouble (an error, a confusing reply, a missing option) so we can fix it. Changes nothing on your sites. | Stores a note for the RunCabin team (not emailed). Your assistant sends it only when you agree. | Write |
A tool that refuses or fails answers one JSON object, {"error": "<code>", "message": "..."}, and the result is marked isError: true. The message says what to do next. These codes mean "try again": try_again, lookup_failed (the domain lookup failed; wait a few seconds), registrar_unconfirmed, price_unconfirmed and checkout_busy (a domain order couldn't confirm the price or the earlier checkout; wait a minute), and cooldown / daily_limit, which carry retryAfterSeconds. An expired sign-in answers unauthorized with a sign-in challenge, so the app asks you to connect again. A status read that works keeps ok: true even when it reports a problem: cabin_deploy_status gives status (live = it built, failed = it did not) and isLive (whether it is the version the site serves), a domain order's stage moves through awaiting_payment, paid, registering, setting_up and live, or ends failed (the domain charge is refunded), expired or cancelled (nothing charged), and an attach's status moves through awaiting_subscription, pending, purchased, dns_set, cert_pending and live, or ends failed or detached.
Changelog. 2026-10-26: member sign-in on your own domain (cabin_setup_members, cabin_add_members, cabin_list_members, cabin_update_member, the members permission, which a connection or key made before it gets by reconnecting once; the tools appear in your assistant's tool list once member sign-in is switched on); PDFs and a target folder for cabin_upload_asset and cabin_request_photos; a password field in a published page is flagged (password_field). 2026-10-17: buying a domain is an order you can follow (orderId, a Stripe checkout for exactly that order, cabin_domain_status(orderId), one open checkout per site); tool descriptions state facts and every side effect; this reference lists each tool's class, side effects, errors and limits; cabin_check_domain answers a failed lookup as an error (lookup_failed); agent notes are sent only when you agree.
The assistant can never spend your money. Free subdomain hosting costs nothing. Anything paid - a custom domain (price shown up front) and hosting at $4.99/mo or $47.99/yr - happens only when you personally review the order and pay on RunCabin's own checkout page. Tools only ever hand you a link.
The rate card
Free
*.sites.runcabin.com subdomainfreeWith HTTPS, for 90 days from the day a site first goes live.
Paid
cabin_check_domain shows the price before you commit. TLS certificates for your domain are issued automatically. The domain is registered for you and it is yours - cancel later and we release it to you with the transfer code.
Field repairs
Your access token expired or was revoked. In Claude, open Customize → Connectors (claude.ai/customize/connectors) and reconnect RunCabin (the sign-in takes a few seconds). API-key users: confirm the key is sent as Authorization: Bearer cabin_live_....
cabin_check_domain says it can't check a domainRapid repeat lookups of the same domain are rate-limited by the registrar. Wait a few seconds and try again.
cabin_domain_status says "awaiting subscription"Connected (bring-your-own) domains only serve while hosting is subscribed. Open the subscription link the assistant gave you; after subscribing, the same tool returns the DNS records to set at your provider.
Certificates are issued automatically once your domain's DNS points at RunCabin - usually within a couple of minutes of DNS propagating. For a domain you connected (bought elsewhere), the _cabin-verify TXT record from cabin_domain_status is required too: it proves the domain is yours, and nothing serves until it's published. cabin_domain_status shows verified once it's seen and live when it's serving.
Self-service at runcabin.com/cancel - sign in with the same account you connected Claude with (Google or email + password) and click cancel. Hosting runs through the end of the period you already paid for, then your custom domain stops serving here - but if you bought it through RunCabin it is still yours: we release it to you and send the transfer code so you can take it to any registrar. Your free *.sites.runcabin.com subdomain keeps working either way.
Email hello@runcabin.com - a human reads it.
RunCabin's MCP server: https://runcabin.com/mcp (Streamable HTTP, OAuth 2.1) · runcabin.com