Skip to content

Delegated credentials

Every request goes to your tenant’s own host, https://<tenant id>.atlanticagenticlabs.com, and is scoped to that tenant by row-level security. The examples read AAL_TENANT, AAL_KEY and your Access service token from the environment: see Authentication.

OAuth authorisation server metadata (RFC 8414)

Section titled “OAuth authorisation server metadata (RFC 8414)”
GET /.well-known/oauth-authorization-server

Authentication: A person’s session, or a machine key with your Access service token, as the route’s role allows. A route that approves, decides, pays or changes a limit refuses a machine key (person_required).

Status Meaning
200 OK: the JSON document this route reads.
4XX Refused: {error, message} with a fixed error code, listed under Errors.
Terminal window
curl "https://$AAL_TENANT.atlanticagenticlabs.com/.well-known/oauth-authorization-server" \
-H "Authorization: Bearer $AAL_KEY" \
-H "CF-Access-Client-Id: $CF_ACCESS_CLIENT_ID" \
-H "CF-Access-Client-Secret: $CF_ACCESS_CLIENT_SECRET"

Protected resource metadata for the hosted MCP (RFC 9728)

Section titled “Protected resource metadata for the hosted MCP (RFC 9728)”
GET /.well-known/oauth-protected-resource

Authentication: A person’s session, or a machine key with your Access service token, as the route’s role allows. A route that approves, decides, pays or changes a limit refuses a machine key (person_required).

Status Meaning
200 OK: the JSON document this route reads.
4XX Refused: {error, message} with a fixed error code, listed under Errors.
Terminal window
curl "https://$AAL_TENANT.atlanticagenticlabs.com/.well-known/oauth-protected-resource" \
-H "Authorization: Bearer $AAL_KEY" \
-H "CF-Access-Client-Id: $CF_ACCESS_CLIENT_ID" \
-H "CF-Access-Client-Secret: $CF_ACCESS_CLIENT_SECRET"
POST /api/v1/oauth/approve

Authentication: A person’s session, or a machine key with your Access service token, as the route’s role allows. A route that approves, decides, pays or changes a limit refuses a machine key (person_required).

Status Meaning
200 OK: the request was carried out. The answer is JSON.
4XX Refused: {error, message} with a fixed error code, listed under Errors.
Terminal window
curl -X POST "https://$AAL_TENANT.atlanticagenticlabs.com/api/v1/oauth/approve" \
-H "Authorization: Bearer $AAL_KEY" \
-H "CF-Access-Client-Id: $CF_ACCESS_CLIENT_ID" \
-H "CF-Access-Client-Secret: $CF_ACCESS_CLIENT_SECRET"

Record an MCP client’s authorisation request, for a person to approve

Section titled “Record an MCP client’s authorisation request, for a person to approve”
POST /api/v1/oauth/authorize

Authentication: A person’s session, or a machine key with your Access service token, as the route’s role allows. A route that approves, decides, pays or changes a limit refuses a machine key (person_required).

Status Meaning
200 OK: the request was carried out. The answer is JSON.
4XX Refused: {error, message} with a fixed error code, listed under Errors.
Terminal window
curl -X POST "https://$AAL_TENANT.atlanticagenticlabs.com/api/v1/oauth/authorize" \
-H "Authorization: Bearer $AAL_KEY" \
-H "CF-Access-Client-Id: $CF_ACCESS_CLIENT_ID" \
-H "CF-Access-Client-Secret: $CF_ACCESS_CLIENT_SECRET"
POST /api/v1/oauth/deny

Authentication: A person’s session, or a machine key with your Access service token, as the route’s role allows. A route that approves, decides, pays or changes a limit refuses a machine key (person_required).

Status Meaning
200 OK: the request was carried out. The answer is JSON.
4XX Refused: {error, message} with a fixed error code, listed under Errors.
Terminal window
curl -X POST "https://$AAL_TENANT.atlanticagenticlabs.com/api/v1/oauth/deny" \
-H "Authorization: Bearer $AAL_KEY" \
-H "CF-Access-Client-Id: $CF_ACCESS_CLIENT_ID" \
-H "CF-Access-Client-Secret: $CF_ACCESS_CLIENT_SECRET"
POST /api/v1/oauth/device/code

Authentication: A person’s session, or a machine key with your Access service token, as the route’s role allows. A route that approves, decides, pays or changes a limit refuses a machine key (person_required).

Status Meaning
200 OK: the request was carried out. The answer is JSON.
4XX Refused: {error, message} with a fixed error code, listed under Errors.
Terminal window
curl -X POST "https://$AAL_TENANT.atlanticagenticlabs.com/api/v1/oauth/device/code" \
-H "Authorization: Bearer $AAL_KEY" \
-H "CF-Access-Client-Id: $CF_ACCESS_CLIENT_ID" \
-H "CF-Access-Client-Secret: $CF_ACCESS_CLIENT_SECRET"

The sign-in a person is being asked to approve

Section titled “The sign-in a person is being asked to approve”
GET /api/v1/oauth/pending

Authentication: A person’s session, or a machine key with your Access service token, as the route’s role allows. A route that approves, decides, pays or changes a limit refuses a machine key (person_required).

Status Meaning
200 OK: the JSON document this route reads.
4XX Refused: {error, message} with a fixed error code, listed under Errors.
Terminal window
curl "https://$AAL_TENANT.atlanticagenticlabs.com/api/v1/oauth/pending" \
-H "Authorization: Bearer $AAL_KEY" \
-H "CF-Access-Client-Id: $CF_ACCESS_CLIENT_ID" \
-H "CF-Access-Client-Secret: $CF_ACCESS_CLIENT_SECRET"
POST /api/v1/oauth/register

Authentication: A person’s session, or a machine key with your Access service token, as the route’s role allows. A route that approves, decides, pays or changes a limit refuses a machine key (person_required).

Status Meaning
201 Created: the new resource, as JSON.
4XX Refused: {error, message} with a fixed error code, listed under Errors.
Terminal window
curl -X POST "https://$AAL_TENANT.atlanticagenticlabs.com/api/v1/oauth/register" \
-H "Authorization: Bearer $AAL_KEY" \
-H "CF-Access-Client-Id: $CF_ACCESS_CLIENT_ID" \
-H "CF-Access-Client-Secret: $CF_ACCESS_CLIENT_SECRET"

Revoke a token and everything issued with it (RFC 7009)

Section titled “Revoke a token and everything issued with it (RFC 7009)”
POST /api/v1/oauth/revoke

Authentication: A person’s session, or a machine key with your Access service token, as the route’s role allows. A route that approves, decides, pays or changes a limit refuses a machine key (person_required).

Status Meaning
200 OK: the request was carried out. The answer is JSON.
4XX Refused: {error, message} with a fixed error code, listed under Errors.
Terminal window
curl -X POST "https://$AAL_TENANT.atlanticagenticlabs.com/api/v1/oauth/revoke" \
-H "Authorization: Bearer $AAL_KEY" \
-H "CF-Access-Client-Id: $CF_ACCESS_CLIENT_ID" \
-H "CF-Access-Client-Secret: $CF_ACCESS_CLIENT_SECRET"
GET /api/v1/oauth/scopes

Authentication: A person’s session, or a machine key with your Access service token, as the route’s role allows. A route that approves, decides, pays or changes a limit refuses a machine key (person_required).

Status Meaning
200 OK: the JSON document this route reads.
4XX Refused: {error, message} with a fixed error code, listed under Errors.
Terminal window
curl "https://$AAL_TENANT.atlanticagenticlabs.com/api/v1/oauth/scopes" \
-H "Authorization: Bearer $AAL_KEY" \
-H "CF-Access-Client-Id: $CF_ACCESS_CLIENT_ID" \
-H "CF-Access-Client-Secret: $CF_ACCESS_CLIENT_SECRET"
POST /api/v1/oauth/token

Authentication: A person’s session, or a machine key with your Access service token, as the route’s role allows. A route that approves, decides, pays or changes a limit refuses a machine key (person_required).

Status Meaning
200 OK: the request was carried out. The answer is JSON.
4XX Refused: {error, message} with a fixed error code, listed under Errors.
Terminal window
curl -X POST "https://$AAL_TENANT.atlanticagenticlabs.com/api/v1/oauth/token" \
-H "Authorization: Bearer $AAL_KEY" \
-H "CF-Access-Client-Id: $CF_ACCESS_CLIENT_ID" \
-H "CF-Access-Client-Secret: $CF_ACCESS_CLIENT_SECRET"
GET /api/v1/oauth/tokens

Authentication: A person’s session, or a machine key with your Access service token, as the route’s role allows. A route that approves, decides, pays or changes a limit refuses a machine key (person_required).

Status Meaning
200 OK: the JSON document this route reads.
4XX Refused: {error, message} with a fixed error code, listed under Errors.
Terminal window
curl "https://$AAL_TENANT.atlanticagenticlabs.com/api/v1/oauth/tokens" \
-H "Authorization: Bearer $AAL_KEY" \
-H "CF-Access-Client-Id: $CF_ACCESS_CLIENT_ID" \
-H "CF-Access-Client-Secret: $CF_ACCESS_CLIENT_SECRET"
DELETE /api/v1/oauth/tokens/{token_id}

Authentication: A person’s session, or a machine key with your Access service token, as the route’s role allows. A route that approves, decides, pays or changes a limit refuses a machine key (person_required).

Parameter In Type Required
token_id path string yes
Status Meaning
200 OK: the request was carried out. The answer is JSON.
400 Bad request, bad_query: a path or query parameter, or a body field, is missing or not valid.
4XX Refused: {error, message} with a fixed error code, listed under Errors.
Terminal window
curl -X DELETE "https://$AAL_TENANT.atlanticagenticlabs.com/api/v1/oauth/tokens/TOKEN_ID" \
-H "Authorization: Bearer $AAL_KEY" \
-H "CF-Access-Client-Id: $CF_ACCESS_CLIENT_ID" \
-H "CF-Access-Client-Secret: $CF_ACCESS_CLIENT_SECRET"