Get a specific control by its identifier.
Get a specific control by its identifier.
Get a specific control by its identifier.
GET https://www.zavior.ai/api/fco/controls/{id}
{ "error": "not_found" }
{ "id": "...", "control_id": "...", "organization_id": "...", "status": "Yes", "remark": "..." }
Get a specific control by its identifier.
GET https://www.zavior.ai/api/fco/controls/{id}
Start the OAuth Authorization Code (PKCE) flow.
Start the OAuth Authorization Code (PKCE) flow.
Start the OAuth Authorization Code (PKCE) flow.
GET https://www.zavior.ai/api/oauth/authorize
client_idredirect_uriresponse_type=codescopestatecode_challenge, code_challenge_method=S256{ "error": "invalid_request" }
Redirects to brand sign-in if session is absent; otherwise issues code and redirects to redirect_uri?code=...&state=...
Start the OAuth Authorization Code (PKCE) flow.
GET https://www.zavior.ai/api/oauth/authorize
client_idredirect_uriresponse_type=codescopestatecode_challenge, code_challenge_method=S256Retrieve subject info for the current access token.
Retrieve subject info for the current access token.
Retrieve subject info for the current access token.
GET https://www.zavior.ai/api/oauth/userinfo
{ "error": "invalid_token" }
{ "sub": "user-id", "email": "user@example.com", "name": "Full Name", "username": "user", "role": "Tech Admin - Admin", "org_name": "Acme", "entity": "...", "exp": 1735707600, "iat": 1735706700 }
Retrieve subject info for the current access token.
GET https://www.zavior.ai/api/oauth/userinfo
Issue on‑behalf‑of service token with `act` claim.
Issue on‑behalf‑of service token with `act` claim.
Issue on‑behalf‑of service token with `act` claim.
POST https://www.zavior.ai/api/oauth/token/exchange
grant_type=urn:ietf:params:oauth:grant-type:token-exchangesubject_token_type=urn:ietf:params:oauth:token-type:access_tokensubject_token{ "error": "invalid_request" }
{ "access_token": "...", "token_type": "Bearer", "expires_in": 900, "issued_token_type": "urn:ietf:params:oauth:token-type:access_token" }
Issue on‑behalf‑of service token with `act` claim.
POST https://www.zavior.ai/api/oauth/token/exchange
grant_type=urn:ietf:params:oauth:grant-type:token-exchangesubject_token_type=urn:ietf:params:oauth:token-type:access_tokensubject_tokenExchange code or refresh token for an access token.
Exchange code or refresh token for an access token.
Exchange code or refresh token for an access token.
POST https://www.zavior.ai/api/oauth/token
grant_type=authorization_code with code, code_verifier, client_id, redirect_urigrant_type=refresh_token with refresh_token{ "error": "invalid_request" }
{ "access_token": "...", "refresh_token": "...", "token_type": "Bearer", "expires_in": 900 }
Exchange code or refresh token for an access token.
POST https://www.zavior.ai/api/oauth/token
grant_type=authorization_code with code, code_verifier, client_id, redirect_urigrant_type=refresh_token with refresh_tokenFetch policy metadata (includes signed URLs where available).
Fetch policy metadata (includes signed URLs where available).
Fetch policy metadata (includes signed URLs where available).
GET https://www.zavior.ai/api/policies/{id}
{ "error": "not_found" }
{ "id": "...", "file_data": { "sas_url": "..." }, "title": "..." }
Fetch policy metadata (includes signed URLs where available).
GET https://www.zavior.ai/api/policies/{id}
Fetch evidence metadata (includes signed URLs where available).
Fetch evidence metadata (includes signed URLs where available).
Fetch evidence metadata (includes signed URLs where available).
GET https://www.zavior.ai/api/evidence/{id}
{ "error": "not_found" }
{ "id": "...", "file_data": { "sas_url": "...", "file_name": "..." }, "related": { ... } }
Fetch evidence metadata (includes signed URLs where available).
GET https://www.zavior.ai/api/evidence/{id}
Create a new organization-specific control record.
Create a new organization-specific control record.
Create a new organization-specific control record.
POST https://www.zavior.ai/api/fco/controls
{ "control_id": "uuid", "organization_id": "uuid", "status": "Yes", "remark": "..." }
{ "error": "insufficient_permissions" }
{ "data": { "id": "...", "control_id": "uuid", "organization_id": "uuid" } }
Create a new organization-specific control record.
POST https://www.zavior.ai/api/fco/controls
{ "control_id": "uuid", "organization_id": "uuid", "status": "Yes", "remark": "..." }
Update a control (PATCH at gateway → PUT upstream).
Update a control (PATCH at gateway → PUT upstream).
Update a control (PATCH at gateway → PUT upstream).
PATCH https://www.zavior.ai/api/fco/controls/{id}
{ "remark": "Updated via MCP" }
The gateway forwards as PUT /api/v1/fco/{id} to IAM/FCO.
{ "error": "user_member_cannot_modify_risk_or_review_frequency" }
{ "data": { "id": "...", "remark": "Updated via MCP" } }
Update a control (PATCH at gateway → PUT upstream).
PATCH https://www.zavior.ai/api/fco/controls/{id}
{ "remark": "Updated via MCP" }
The gateway forwards as PUT /api/v1/fco/{id} to IAM/FCO.
List FCO control records with optional filters and pagination.
List FCO control records with optional filters and pagination.
List FCO control records with optional filters and pagination.
GET https://www.zavior.ai/api/fco/controls
frameworkId (string)riskLevel (low|medium|high|critical)reviewFrequency (monthly|quarterly|semiannual|annual)q (string search)page (number)pageSize (number){ "error": "missing_or_invalid_authorization" }
[ { "id": "...", "control_id": "...", "organization_id": "...", "status": "Yes", "remark": "..." } ]
List FCO control records with optional filters and pagination.
GET https://www.zavior.ai/api/fco/controls
frameworkId (string)riskLevel (low|medium|high|critical)reviewFrequency (monthly|quarterly|semiannual|annual)q (string search)page (number)pageSize (number)Location of the OpenAPI used by ChatGPT Actions and other clients.
Location of the OpenAPI used by ChatGPT Actions and other clients.
Location of the OpenAPI used by ChatGPT Actions and other clients.
GET https://www.zavior.ai/api/openapi/zavior-controls.yaml
Use this URL to import into tools such as ChatGPT Actions.
404 if the spec is not available.
YAML document describing API operations.
Location of the OpenAPI used by ChatGPT Actions and other clients.
GET https://www.zavior.ai/api/openapi/zavior-controls.yaml
Use this URL to import into tools such as ChatGPT Actions.
How to obtain tokens via Authorization Code + PKCE.
How to obtain tokens via Authorization Code + PKCE.
How to obtain tokens via Authorization Code + PKCE.
Use the standard Authorization Code with PKCE flow.
GET https://www.zavior.ai/api/oauth/authorize
POST https://www.zavior.ai/api/oauth/token
POST https://www.zavior.ai/api/oauth/token/exchange
{ "error": "invalid_grant" }
{ "access_token": "...", "token_type": "Bearer", "expires_in": 900, "refresh_token": "...", "scope": "controls.read controls.write" }
How to obtain tokens via Authorization Code + PKCE.
Use the standard Authorization Code with PKCE flow.
GET https://www.zavior.ai/api/oauth/authorize
POST https://www.zavior.ai/api/oauth/token
POST https://www.zavior.ai/api/oauth/token/exchange
High-level overview of the Zavior MCP API surface.
High-level overview of the Zavior MCP API surface.
High-level overview of the Zavior MCP API surface.
The Zavior MCP API exposes CRU operations for Framework Control Organisation (FCO) records, OAuth 2.0 endpoints for authorization, and resources for evidence and policies.
https://www.zavior.ai/api
GET https://www.zavior.ai/api/openapi/zavior-controls.yaml
All endpoints return JSON; errors include error and optional detail.
High-level overview of the Zavior MCP API surface.
The Zavior MCP API exposes CRU operations for Framework Control Organisation (FCO) records, OAuth 2.0 endpoints for authorization, and resources for evidence and policies.
https://www.zavior.ai/api
GET https://www.zavior.ai/api/openapi/zavior-controls.yaml