Claude Platform Docs

List Tunnels

$client->beta->tunnels->list(?bool includeArchived, ?int limit, ?string page, ?list<AnthropicBeta> betas, ?string workspaceID): PageCursor<BetaTunnel>
GET/v1/tunnels
Requires anthropic-beta: mcp-tunnels-2026-06-22. How to send beta headers

The Tunnels API is in research preview. It requires the anthropic-beta: mcp-tunnels-2026-06-22 header and may change without a deprecation period. It supersedes the Admin API endpoints at /v1/organizations/tunnels, which remain available during a migration window.

Lists tunnels. Results are ordered by creation time, newest first; archived tunnels are excluded unless include_archived is set.

Parameters
includeArchived?: optional bool⁠Query parameter

Whether to include archived tunnels in the results. Defaults to false.

limit?: optional int⁠Query parameter

Maximum number of tunnels to return per page. Defaults to 20, maximum 1000.

page?: optional string⁠Query parameter

Opaque pagination cursor from a previous list_tunnels response.

betas?: optional list<AnthropicBeta>⁠Header parameter

This endpoint is in beta: requests must send mcp-tunnels-2026-06-22 in this header.

workspaceID?: optional string⁠Header parameter

Optional header to select the Workspace for this request. The value is a Workspace ID (for example, wrkspc_011CZkZaBF1tNoB5wlCeusgy).

Only needed for credentials that can act on more than one Workspace. A credential that belongs to a specific Workspace may omit it; if sent, it must match that Workspace.

Returns
class BetaTunnel { $type = 'tunnel'; $id; $archivedAt; /* 3 more */ }
"tunnel" type
string id

Unique identifier for the tunnel, prefixed with tnl_.

?\Datetime archivedAt

RFC 3339 datetime string indicating when the tunnel was archived. Null if it is not archived.

\Datetime createdAt

RFC 3339 datetime string indicating when the tunnel was created.

?string displayName

Human-readable name for the tunnel (1-255 characters). Null if unset.

string domain

Anthropic-assigned hostname for the tunnel. MCP server URLs whose host is a subdomain of this value are routed through the tunnel. Globally unique and never reused, even after the tunnel is archived.

List Tunnels
<?php

require_once dirname(__DIR__) . '/vendor/autoload.php';

use Anthropic\Client;
use Anthropic\Beta\AnthropicBeta;

$client = new Client(apiKey: 'my-anthropic-api-key');

$page = $client->beta->tunnels->list(
  includeArchived: true,
  limit: 0,
  page: 'page',
  betas: [AnthropicBeta::MESSAGE_BATCHES_2024_09_24],
  workspaceID: 'wrkspc_011CZkZaBF1tNoB5wlCeusgy',
);

var_dump($page);
Returns Examples
Response 200
{
  "data": [
    {
      "id": "id",
      "archived_at": "2019-12-27T18:11:19.117Z",
      "created_at": "2019-12-27T18:11:19.117Z",
      "display_name": "display_name",
      "domain": "domain",
      "type": "tunnel"
    }
  ],
  "next_page": "next_page"
}