MCP.

Houston exposes your agents as tools over the Model Context Protocol. Connect Claude Code, or any MCP client, to one endpoint and let it list your agents and start, check, and cancel their missions.

The endpoint

POST /mcp

A single Streamable HTTP MCP endpoint. It is stateless, so there is no session to establish: each request stands alone. It speaks protocol version 2025-06-18, and authenticates with your hst_... API key as a bearer token.

Stateless by design

Because the endpoint keeps no session, it scales cleanly and reconnects for free. Every call carries the Authorization header; there is no separate initialize-then-reuse handshake to manage.

Connect a client

Point any MCP client at https://poc-gateway.gethouston.ai/mcp with your key in the Authorization header.

Claude Code

Add it from the CLI:

claude mcp add --transport http houston https://poc-gateway.gethouston.ai/mcp \
  --header "Authorization: Bearer hst_9f2c1a7b4e8d0364f1a2b3c4d5e6f7089f2c1a7b4e8d0364f1a2b3c4d5e6f708"

Or add it to your project's .mcp.json (the same shape works for other MCP clients that use a JSON server config):

{
  "mcpServers": {
    "houston": {
      "type": "http",
      "url": "https://poc-gateway.gethouston.ai/mcp",
      "headers": {
        "Authorization": "Bearer hst_9f2c1a7b4e8d0364f1a2b3c4d5e6f7089f2c1a7b4e8d0364f1a2b3c4d5e6f708"
      }
    }
  }
}
Do not commit your key

.mcp.json is often checked into a repo. Keep the raw key out of version control, for example by referencing an environment variable if your client supports it, and revoke any key that leaks from Settings → API Keys.

Tools

The server exposes four tools. Their input schemas are standard JSON Schema, so MCP clients render and validate them automatically.

list_agents

Lists the agents your key can reach, with their slugs. No input.

{
  "name": "list_agents",
  "description": "List the Houston agents this API key can drive.",
  "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
  }
}

start_mission

Starts a mission on an agent and returns the mission id and status.

{
  "name": "start_mission",
  "description": "Start a mission on a Houston agent.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "agent": { "type": "string", "description": "The agent slug to run." },
      "input": { "type": "string", "description": "The instruction for the agent." },
      "mode":  { "type": "string", "enum": ["execute", "plan", "auto"], "default": "auto" }
    },
    "required": ["agent", "input"],
    "additionalProperties": false
  }
}

get_mission

Returns a mission's status and, once terminal, its result.

{
  "name": "get_mission",
  "description": "Get the status and result of a mission.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "missionId": { "type": "string" }
    },
    "required": ["missionId"],
    "additionalProperties": false
  }
}

cancel_mission

Requests cancellation of a running mission.

{
  "name": "cancel_mission",
  "description": "Cancel a running mission.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "missionId": { "type": "string" }
    },
    "required": ["missionId"],
    "additionalProperties": false
  }
}
In practice

Once connected, ask your MCP client to "list my Houston agents, then start a mission on the revenue manager." It calls list_agents, then start_mission, then get_mission to report the result.