Skip to content
Start here

List MCP Portals

GET/accounts/{account_id}/access/ai-controls/mcp/portals

Lists all MCP portals configured for the account.

Security
API Token

The preferred authorization scheme for interacting with the Cloudflare API. Create a token.

Example:Authorization: Bearer Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY
API Email + API Key

The previous authorization scheme for interacting with the Cloudflare API, used in conjunction with a Global API key.

Example:X-Auth-Email: user@example.com

The previous authorization scheme for interacting with the Cloudflare API. When possible, use API tokens instead of Global API keys.

Example:X-Auth-Key: 144c9defac04969c7bfad8efaa8ea194
Accepted Permissions (at least one required)
MCP Portals WriteMCP Portals Read
Path ParametersExpand Collapse
account_id: string
Query ParametersExpand Collapse
page: optional number
minimum1
per_page: optional number
maximum100
minimum1
ReturnsExpand Collapse
result: array of object { id, hostname, name, 8 more }
id: string

portal id

maxLength32
minLength1
hostname: string
name: string
maxLength350
servers: array of object { id, auth_type, hostname, 19 more }
id: string

server id

maxLength32
minLength1
auth_type: "oauth" or "bearer" or "unauthenticated"
One of the following:
"oauth"
"bearer"
"unauthenticated"
hostname: string
formaturi
name: string
maxLength350
prompts: array of map[unknown]
tools: array of map[unknown]
created_at: optional string
formatdate-time
created_by: optional string
default_disabled: optional boolean
description: optional string
maxLength512
error: optional string
error_details: optional object { cause, is_upstream, mcp_code, 2 more }
cause: optional string

Underlying error message

is_upstream: optional boolean

True = MCP server returned an error. False = couldn’t reach the server

mcp_code: optional number

MCP protocol error code

retryable: optional boolean

Whether the error is transient and worth retrying

status_code: optional number

HTTP status code from the server

is_shared_oauth_callback_enabled: optional boolean

When true, the gateway worker uses the shared Cloudflare-owned OAuth callback endpoint as the redirect_uri for upstream on-behalf OAuth, instead of the customer portal hostname. Defaults to false (off); opt in per server by setting true. Effective behavior is gated by the gateway worker’s per-env rollout mode KV key.

last_successful_sync: optional string
formatdate-time
last_synced: optional string
formatdate-time
modified_at: optional string
formatdate-time
modified_by: optional string
on_behalf: optional boolean
secure_web_gateway: optional boolean

Route outbound traffic to this MCP server through Zero Trust Secure Web Gateway

status: optional string
updated_prompts: optional array of object { name, enabled, portal_alias, 3 more }
name: string
enabled: optional boolean
portal_alias: optional string
portal_description: optional string
server_alias: optional string
server_description: optional string
updated_tools: optional array of object { name, enabled, portal_alias, 3 more }
name: string
enabled: optional boolean
portal_alias: optional string
portal_description: optional string
server_alias: optional string
server_description: optional string
allow_code_mode: optional boolean

Allow remote code execution in Dynamic Workers (beta)

created_at: optional string
formatdate-time
created_by: optional string
description: optional string
maxLength512
modified_at: optional string
formatdate-time
modified_by: optional string
secure_web_gateway: optional boolean

Route outbound MCP traffic through Zero Trust Secure Web Gateway

success: boolean

List MCP Portals

curl https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/access/ai-controls/mcp/portals \
    -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN"
{
  "result": [
    {
      "id": "my-mcp-portal",
      "hostname": "exmaple.com",
      "name": "My MCP Portal",
      "servers": [
        {
          "id": "my-mcp-server",
          "auth_type": "unauthenticated",
          "hostname": "https://example.com/mcp",
          "name": "My MCP Server",
          "prompts": [
            {
              "foo": "bar"
            }
          ],
          "tools": [
            {
              "foo": "bar"
            }
          ],
          "created_at": "2019-12-27T18:11:19.117Z",
          "created_by": "created_by",
          "default_disabled": true,
          "description": "This is one remote mcp server",
          "error": "error",
          "error_details": {
            "cause": "cause",
            "is_upstream": true,
            "mcp_code": 0,
            "retryable": true,
            "status_code": 0
          },
          "is_shared_oauth_callback_enabled": true,
          "last_successful_sync": "2019-12-27T18:11:19.117Z",
          "last_synced": "2019-12-27T18:11:19.117Z",
          "modified_at": "2019-12-27T18:11:19.117Z",
          "modified_by": "modified_by",
          "on_behalf": true,
          "secure_web_gateway": false,
          "status": "status",
          "updated_prompts": [
            {
              "name": "name",
              "enabled": true,
              "portal_alias": "portal-tool-alias",
              "portal_description": "portal-level description",
              "server_alias": "server-tool-alias",
              "server_description": "server-level description"
            }
          ],
          "updated_tools": [
            {
              "name": "name",
              "enabled": true,
              "portal_alias": "portal-tool-alias",
              "portal_description": "portal-level description",
              "server_alias": "server-tool-alias",
              "server_description": "server-level description"
            }
          ]
        }
      ],
      "allow_code_mode": true,
      "created_at": "2019-12-27T18:11:19.117Z",
      "created_by": "created_by",
      "description": "This is my custom MCP Portal",
      "modified_at": "2019-12-27T18:11:19.117Z",
      "modified_by": "modified_by",
      "secure_web_gateway": false
    }
  ],
  "success": true
}
Returns Examples
{
  "result": [
    {
      "id": "my-mcp-portal",
      "hostname": "exmaple.com",
      "name": "My MCP Portal",
      "servers": [
        {
          "id": "my-mcp-server",
          "auth_type": "unauthenticated",
          "hostname": "https://example.com/mcp",
          "name": "My MCP Server",
          "prompts": [
            {
              "foo": "bar"
            }
          ],
          "tools": [
            {
              "foo": "bar"
            }
          ],
          "created_at": "2019-12-27T18:11:19.117Z",
          "created_by": "created_by",
          "default_disabled": true,
          "description": "This is one remote mcp server",
          "error": "error",
          "error_details": {
            "cause": "cause",
            "is_upstream": true,
            "mcp_code": 0,
            "retryable": true,
            "status_code": 0
          },
          "is_shared_oauth_callback_enabled": true,
          "last_successful_sync": "2019-12-27T18:11:19.117Z",
          "last_synced": "2019-12-27T18:11:19.117Z",
          "modified_at": "2019-12-27T18:11:19.117Z",
          "modified_by": "modified_by",
          "on_behalf": true,
          "secure_web_gateway": false,
          "status": "status",
          "updated_prompts": [
            {
              "name": "name",
              "enabled": true,
              "portal_alias": "portal-tool-alias",
              "portal_description": "portal-level description",
              "server_alias": "server-tool-alias",
              "server_description": "server-level description"
            }
          ],
          "updated_tools": [
            {
              "name": "name",
              "enabled": true,
              "portal_alias": "portal-tool-alias",
              "portal_description": "portal-level description",
              "server_alias": "server-tool-alias",
              "server_description": "server-level description"
            }
          ]
        }
      ],
      "allow_code_mode": true,
      "created_at": "2019-12-27T18:11:19.117Z",
      "created_by": "created_by",
      "description": "This is my custom MCP Portal",
      "modified_at": "2019-12-27T18:11:19.117Z",
      "modified_by": "modified_by",
      "secure_web_gateway": false
    }
  ],
  "success": true
}