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
In Claude, open Customize → Connectors (claude.ai/customize/connectors) and choose Add custom connector.
Enter the server URL: https://runcabin.com/mcp
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.
Looking for RunCabin in Claude's built-in connector directory? Our listing is coming soon - until then, adding the server URL above does exactly the same thing and works today.
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."
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.
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.
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_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, or data file on the site by fetching it from a public HTTPS URL. Assets persist across re-deploys. | The file is public on the live site as soon as it is uploaded. Uploading to the same path replaces it on the live site at once, and a rollback doesn't undo that. | Sensitive |
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, 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_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. | 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-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, indefinitely.
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