# The /v1 API

The web app and every MCP tool use the same API, under `https://facet.halfspacelabs.com/v1`. Its contract is [openapi.yaml](/docs/openapi.yaml) (OpenAPI 3.1). It only ever adds fields; it never removes them.

Send an API key as `Authorization: Bearer fct_...`. A key acts with its role (collaborator or viewer) and, if it has one, its Task scope; keys never approve, merge or edit policy. People use the web app or an MCP client, which signs them in.

Errors share one shape: `{"error": {"code": "...", "message": "...", "approvers": [...]}}`. A `409` with `approvers` means the action waits for one of those people.

For agents, prefer the [MCP server](/docs/agents): each tool is one of these operations, with the same inputs.
