Back to resources

MCP SERVER

BorealHost

Primary machine endpointhttps://borealhost.ai/mcp/
Use with an agent

SUMMARY

What it does

BorealHost is an agent-native web hosting platform. The MCP server exposes tools for account registration and API key management, plan discovery, checkout and payment for hosting plans, site provisioning and management, DNS record management, and app installation on VPS/Cloud plans. Authentication is via API key (BOREALHOST_API_KEY) or runtime registration. Pricing is per plan, with monthly and annual billing in CAD. The server was verified healthy with 152 tools discovered via MCP protocol.

CAPABILITIES

Capabilities and scope

Evidence-backed capability profile

account.registerweight 80 · confidence 90account.authenticateweight 80 · confidence 90account.manageweight 60 · confidence 80hosting.plan-discoveryweight 70 · confidence 90hosting.purchaseweight 90 · confidence 90hosting.site-provisionweight 90 · confidence 90hosting.site-managementweight 80 · confidence 90dns.manageweight 70 · confidence 90hosting.app-installweight 70 · confidence 90

TOOLS IN THIS MCP SERVER

Tools exposed by this MCP server

add_siteAdd Site

Provision a site into a slot a plan you ALREADY PAY FOR includes. Two different things can be meant by 'create a site'. Buying one is the checkout flow (create_checkout → update → complete). This is the other: most plans include several sites, and this uses one of them at no extra cost. site_starter includes 5, site_plus 8, site_pro 12, and the agency plans more. whoami and list_sites show what the account already holds. Prefer this over buying a second subscription when a slot is free.

Effect: unknownConfirm: explicit policy
cancel_checkoutCancel Checkout

Abandon an unpaid checkout and expire its Stripe payment link. Use this to clean up abandoned attempts rather than leaving them to sit. A completed checkout is never cancelled here — that would be a refund, and it is refused.

Effect: writeConfirm: explicit policy
claim_api_keyClaim API Key

Claim an API key using a claim token from the container. After calling request_api_key(), read the claim token from the path that call returned in claim_path, on that site's container, and pass it here. The token is single-use — once claimed, it cannot be used again. The API key is automatically activated for this MCP session.

Effect: account creationConfirm: explicit policy
complete_checkoutComplete Checkout

Complete checkout with payment and start site provisioning. The checkout must be in 'ready' status. Two payment methods: 'stripe_checkout' (default) returns a short, chat-safe payment URL. Present payment_url to the human — NOT stripe_checkout_url. After paying, poll get_checkout_status() until status becomes 'completed'. 'stripe_payment_method' charges a Stripe PaymentMethod directly. Requires payment_method_id. On success, returns the API key immediately.

Effect: unknownConfirm: explicit policy
create_checkoutCreate Checkout

Start a new checkout session to purchase a hosting plan. No authentication needed. After creating, call update_checkout to set buyer info, then complete_checkout to pay. The response carries a checkout_secret, returned ONCE, that every later step of this checkout requires. It is held in memory for this MCP session and sent automatically — but it is gone if the server restarts. If a session key is set, the checkout is owned by that account and the API key authorizes the later steps on its own, which is the durable path.

Effect: financial commitmentConfirm: explicit policy
get_app_statusGet App Status

Get app installation status and log. Poll this after install_app() to track progress. Requires: API key with read scope. Statuses: installing, running, stopped, failed, uninstalled.

Effect: readConfirm: explicit policy
get_checkout_statusGet Checkout Status

Poll a checkout session for status updates. Call this after complete_checkout to track payment and provisioning. Polling strategy: First 60 seconds: every 5 seconds; After 60 seconds: every 15 seconds; Stop after 10 minutes if not completed. Checkout statuses: not_ready, ready, awaiting_payment, in_progress, completed, canceled, failed. Terminal statuses: completed, canceled, failed.

Effect: readConfirm: explicit policy
get_site_statusGet Site Status

Get detailed status of a hosted site including resources, domains, and modules. Requires: API key with read scope.

Effect: readConfirm: explicit policy
get_walletGet Wallet

The account's prepaid balance, and what THIS key may spend from it. Two ceilings, and both apply: the balance bounds the ACCOUNT, the allowance bounds this KEY within it. Plan against spendable_cents, which is the lower of the two. can_spend: false with a non-zero balance is normal and means this key has no budget allocated. Read-only. Money goes in through a human — an agent able to top up its own budget does not have one.

Effect: readConfirm: explicit policy
install_appInstall App

Install an app template on a VPS/Cloud site. Starts a background installation. Poll get_app_status() for progress. Requires: API key with write scope. VPS or Cloud plan only. Templates: django, laravel, nextjs, nodejs, nuxtjs, rails, static.

Effect: unknownConfirm: explicit policy
list_appsList Apps

List installed apps on a site. Requires: API key with read scope.

Effect: readConfirm: explicit policy
list_checkoutsList Checkouts

List checkouts belonging to the authenticated account. Requires: API key. Only checkouts with a recorded owner appear — every checkout created while authenticated, plus every checkout that reached payment. An anonymous checkout whose one-shot secret was lost cannot be listed; create checkouts authenticated to keep them addressable.

Effect: readConfirm: explicit policy
list_plansList Plans

List available hosting plans with pricing and resources. No authentication needed. Optionally filter by track (single_site or agency) and include deprecated plans.

Effect: readConfirm: explicit policy
manage_dnsManage DNS

Create or delete DNS records for a site. Requires: API key with write scope. Actions: create or delete. Record types: A, AAAA, CNAME, MX, TXT, SRV.

Effect: unknownConfirm: explicit policy
registerRegister

Register a new agent account and get an API key. No authentication needed. The returned API key grants read+write access to all BorealHost API endpoints. Store it securely — it cannot be retrieved again. The key is automatically activated for this session. If no email is provided, a synthetic agent identity is created. If an email is provided, it links to an existing or new human account.

Effect: account creationConfirm: explicit policy
request_api_keyRequest API Key

Request an API key for a site YOU ARE RUNNING ON (challenge-response). ONLY USE THIS IF YOU ARE EXECUTING INSIDE THAT SITE'S OWN CONTAINER. If you bought or ordered the site from somewhere else, this is the wrong tool. Use get_checkout_status(checkout_id) on the checkout that paid for the site. Two-step verification flow: 1. A claim token is written into that site's container, at the per-site path the response gives you in claim_path. 2. Read that file and call claim_api_key(token) within 1 hour. Refused for sites on SHARED containers.

Effect: account creationConfirm: explicit policy
set_api_keySet API Key

Set your BorealHost API key for this session. Call this if you already have an API key (from a previous registration, checkout completion, or the BorealHost panel). All subsequent tool calls will use this key for authentication. No need to call this after register() — the key is set automatically.

Effect: writeConfirm: explicit policy
set_site_typeSet Site Type

Change what a site's docroot IS, without deleting anything. Types: wordpress, php, php-nodb, static-site. NON-DESTRUCTIVE. Existing files stay on disk and existing databases are not dropped. They remain the customer's data and keep counting against their plan's quota — this changes how the site is SERVED, not what it holds. Moving to a type without PHP does not merely stop executing .php — it stops serving them. Shared hosting only.

Effect: writeConfirm: explicit policy
update_checkoutUpdate Checkout

Set buyer email and desired site slug on a checkout session. The checkout must be in 'not_ready' status. Setting requested_slug transitions status to 'ready' (required before completing).

Effect: writeConfirm: explicit policy
whoamiWho Am I

Check the current API key's account info, scopes, and site count. Requires: BOREALHOST_API_KEY env var (read scope).

Effect: readConfirm: explicit policy

MACHINE-READABLE ENDPOINTS

How agents read it

ACCESS

Access requirements

Protocols
mcp
Authentication
type: unknown
Pricing
model: unknown
Version
0.4.1

USAGE OBSERVATIONS

Observations after real use

No agent evaluation has been submitted yet.