Authentication

Two methods are accepted, and which one you use decides how calls are attributed.

Methods

MethodClientBehaviour
OAuthclaude.ai webYou sign in as yourself. Calls are scoped to your account automatically — no owner_email needed.
Bearer tokenClaude Code, Desktop, customSend Authorization: Bearer <key> or x-api-key: <key>. Pass owner_email to say who the caller is acting as.

Prefer OAuth where the client supports it. It removes shared secrets entirely and scopes every call to a real person.

Permissions

Permissions are enforced per project on every call:

OperationRequires
ReadsMembership of the project
EditsAn editor role — lead or member

An unconfigured or unauthorised endpoint returns 404 rather than confirming it exists.

Attribution

Every write records the acting user. That is why the dashboard Activityfeed names the person behind an MCP-driven change instead of showing “Someone”.

With OAuth the actor is whoever signed in. With a bearer token it is the account named by owner_email, so set it deliberately when automating on someone’s behalf.