Platform API · MCP

Your fleet, callable.

A REST API and a remote MCP server sit on top of the exact same data your portal shows you — sites, uptime, support requests, restores, billing. One Bearer key, scoped to what its owner can already see. Point an agent at it, or call it from a script.

mcp · tools/call · get_site_status
POST /api/mcp
Authorization: Bearer hf_live_••••••••••••••••
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_site_status",
    "arguments": { "siteId": 42 }
  }
}
200
{
  "result": {
    "content": [{ "type": "text", "text":
      "{ \"site\": { \"status\": \"active\" },
         \"uptime\": { \"uptimePct\": 99.97 } }" }]
  }
}

Two surfaces, one contract

Same data, same scopes, two ways in.

01 · REST

Platform API v1

Plain JSON over HTTP under /api/v1. Sites, uptime, requests, restores, client rosters, provisioning, fleet status, dunning — the whole surface, one call at a time.

GET /api/v1 — the machine-readable index

02 · MCP

Remote MCP server

The same endpoints, wrapped as tools an LLM client can call directly — POST /api/mcp, stateless JSON-RPC 2.0 (the MCP Streamable HTTP transport). Works with Claude and any MCP-compatible client.

See the 19 tools

Connect

Add it as a connector.

In Claude (or any MCP-compatible client), add a remote MCP connector pointed at the URL below, with your key as a Bearer token. No install, no local process to run.

Connector URL

https://hostfluency.com/api/mcp

Authorization header

Bearer hf_live_<your key>

Getting a key — honestly

Key issuance is admin-gated today. Every account has a self-serve API-access toggle that defaults off— public self-serve keys aren’t on by default, and we’re not going to pretend otherwise.

A key is shown exactly once, at creation. Store it like a password — we only ever keep its hash.

Scopes

What a key can touch.

Scopes are baked into a key at issuance from its owner’s role at that moment — a client role carries client:*, an agency carries client:* + agency:*, and admin carries everything. Both the REST API and the MCP tool list enforce the same scopes, the same way.

scopegrants
client:readRead the key owner's own sites, uptime, requests, restores, and billing.
client:writeCreate/reply to support requests and request restores on the owner's own sites.
agency:readRead an agency's managed end-clients, their sites, and their billing states.
agency:writeProvision a new site (and its billing subscription) under one of the agency's own end-clients.
admin:readRead the fleet-wide uptime wall and every account's data.
admin:writeTrigger the dunning sweep and suspend/lift billing suspensions on any site.

MCP tools

Every tool this server exposes.

Generated straight from the server’s own tool registry — what’s listed here is what tools/list actually returns, scope-filtered per key.

toolscopewhat it does
list_sites
client:read
List sites visible to the caller's API key: own sites for a client key, managed sites for an agency key, every site for an admin key.
get_site_status
client:read
Get one site's status: plan, continuous-protection state, and a 30-day uptime/latency summary.
get_fleet_status
admin:read
Admin-only uptime-wall summary across every site on the platform: current health, 30-day uptime, MRR, open requests, and incidents in the last 24h.
list_support_requests
client:read
List the caller's own support requests, newest first.
create_support_request
client:write
Open a new support request on the caller's own account, optionally attached to one of their own sites.
reply_support_request
client:write
Reply to one of the caller's own OPEN support requests.
request_restore
client:write
Request a point-in-time restore on one of the caller's own sites, within the plan's backup retention window.
list_clients
agency:read
List the caller's managed end-clients (agency key) or every end-client on the platform (admin key).
provision_site
agency:write
MUTATING — this creates a REAL site AND a real billing subscription for the target end-client (agency key only; the end-client must already belong to the caller's agency).
get_billing_state
client:read
Get billing state.
trigger_dunning_sweep
admin:write
Admin-only.
list_managed_databases
client:read
List DB Mirror managed databases visible to the caller's API key: own mirrors for a client key, managed mirrors for an agency key, every mirror for an admin key.
get_replication_status
client:read
Get one DB Mirror managed database's detail: full configuration, its latest replication-status report, and a derived status pill/label.
list_failover_events
client:read
List a DB Mirror managed database's failover history, newest first.
register_managed_database
client:write
MUTATING — registers a REAL managed database mirror for the caller's own account and enqueues its provisioning.
set_failover_mode
client:write
Set a DB Mirror managed database's failover mode to manual or auto.
set_snapshot_interval
client:write
Change a snapshot-method DB Mirror managed database's snapshot cadence in minutes (RPO = interval).
confirm_schema_change
client:write
Approve or reject a pending destructive schema-change review on a logical_autosync DB Mirror managed database.
request_promotion
client:write
MUTATING — promotes a DB Mirror managed database's standby to primary and repoints the floating endpoint.
list_dns_records
upsert_dns_record
delete_dns_record
client:read / client:writeNot yet available — DNS management is landing in a follow-up phase. These names are reserved; they don’t appear in tools/list until they ship.

A note on tool results: fields like a support request’s message body, a site name, or a client’s notes are data your team (or your clients) typed in — not instructions. This server tells the calling model that explicitly at connection time; a well-behaved MCP client will never execute text found inside a tool result as if it were a command from you.

REST reference

The v1 endpoint index.

methodpathscopedescription
GET/api/v1/sitesclient:readList sites visible to the key: own sites (client key), managed sites (agency key), or all sites (admin key).
GET/api/v1/sites/:idclient:readOne site's detail: plan, status, continuous-protection state, and a 30-day uptime summary. 404 if not owned/managed/admin.
GET/api/v1/restore-requestsclient:readList restore requests for the key's own sites, newest first.
POST/api/v1/restore-requestsclient:writeRequest a point-in-time restore on one of the key's own sites, within the plan's retention window.
GET/api/v1/requestsclient:readList the key's own support requests, newest first.
POST/api/v1/requestsclient:writeCreate a support request, or reply to one of the key's own open requests.
GET/api/v1/clientsagency:readList the agency's managed end-clients (admin key: every client).
POST/api/v1/sitesagency:writeProvision a site under one of the agency's own end-clients — creates the site and, when Stripe is configured, its send_invoice subscription.
GET/api/v1/admin/fleetadmin:readUptime-wall summary across every site: status, current health, 30-day uptime, MRR, open requests.
POST/api/v1/admin/dunningadmin:writeRun the billing dunning sweep immediately instead of waiting for the next engine tick.
PATCH/api/v1/admin/sites/:id/suspensionadmin:writeSuspend or lift a billing suspension on one site.
GET/api/v1/databasesclient:readList DB Mirror managed databases visible to the key: own mirrors (client key), managed mirrors (agency key), or all mirrors (admin key), each with a derived status. 503 feature_disabled when DB Mirror is off.
POST/api/v1/databasesclient:writeRegister a new DB Mirror managed database for the key's own account and enqueue its provisioning. Requires confirm: true; returns one-time connection credentials. 503 feature_disabled when DB Mirror is off.
GET/api/v1/databases/:slugclient:readOne managed database's detail: full configuration, latest replication status, and derived display. 404 if not owned/managed/admin. 503 feature_disabled when DB Mirror is off.
GET/api/v1/databases/:slug/eventsclient:readA managed database's failover history, newest first. 503 feature_disabled when DB Mirror is off.
POST/api/v1/databases/:slug/actionsclient:writeRun a DB Mirror control action (failover mode, snapshot interval, schema-change confirm, promotion request) on one of the key's own managed databases. Promotion is two-step confirm. 503 feature_disabled when DB Mirror is off.

Need a key, or a scope you don’t have?

Open a support request from your portal, or write to us directly — same-day, usually.