openapi: 3.2.0 info: title: Anthropic Tunnels?beta=true API servers: - url: https://api.anthropic.com tags: - name: Tunnels?beta=true paths: /v1/tunnels?beta=true: post: operationId: BetaCreateTunnel summary: Create Tunnel description: '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. Creates a tunnel. Creation allocates a fresh hostname and provisions the tunnel; it is not idempotent. The new tunnel rejects MCP traffic until at least one CA certificate is added.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BetaCreateTunnelRequest' responses: '200': description: Successful response (OK) content: application/json: schema: $ref: '#/components/schemas/BetaTunnel' '400': description: Invalid argument - The client specified an invalid argument content: application/json: schema: $ref: '#/components/schemas/BetaErrorResponse' '401': description: Unauthenticated - The request does not have valid authentication credentials content: application/json: schema: $ref: '#/components/schemas/BetaErrorResponse' '403': description: Permission denied - The caller does not have permission to execute the specified operation content: application/json: schema: $ref: '#/components/schemas/BetaErrorResponse' '404': description: Not found - Some requested entity was not found content: application/json: schema: $ref: '#/components/schemas/BetaErrorResponse' '408': description: Deadline exceeded - The deadline expired before the operation could complete content: application/json: schema: $ref: '#/components/schemas/BetaErrorResponse' '409': description: Aborted - The operation was aborted due to concurrency issue content: application/json: schema: $ref: '#/components/schemas/BetaErrorResponse' '412': description: Failed precondition - Operation was rejected because the system is not in required state content: application/json: schema: $ref: '#/components/schemas/BetaErrorResponse' '413': description: Out of range - Operation was attempted past the valid range content: application/json: schema: $ref: '#/components/schemas/BetaErrorResponse' '429': description: Resource exhausted - Some resource has been exhausted (rate limiting) content: application/json: schema: $ref: '#/components/schemas/BetaErrorResponse' '431': description: Request header fields too large - Request metadata was too large content: application/json: schema: $ref: '#/components/schemas/BetaErrorResponse' '499': description: Cancelled - The operation was cancelled by the client content: application/json: schema: $ref: '#/components/schemas/BetaErrorResponse' '500': description: Internal - Internal server error content: application/json: schema: $ref: '#/components/schemas/BetaErrorResponse' '501': description: Unimplemented - The operation is not implemented or supported content: application/json: schema: $ref: '#/components/schemas/BetaErrorResponse' '503': description: Unavailable - The service is currently unavailable content: application/json: schema: $ref: '#/components/schemas/BetaErrorResponse' '504': description: Deadline exceeded - Upstream service did not respond in time content: application/json: schema: $ref: '#/components/schemas/BetaErrorResponse' x-anthropic-beta-required: - mcp-tunnels-2026-06-22 parameters: - name: anthropic-version in: header required: false schema: type: string - name: anthropic-beta in: header required: false schema: type: string items: type: string x-stainless-override-schema: x-stainless-param: betas x-stainless-extend-default: true type: array description: Optional header to specify the beta version(s) you want to use. items: $ref: '#/components/schemas/AnthropicBeta' tags: - Tunnels?beta=true get: operationId: BetaListTunnels summary: List Tunnels description: '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: - name: x-api-key in: header required: false schema: type: string - name: anthropic-version in: header required: false schema: type: string - name: anthropic-beta in: header required: false schema: type: string items: type: string x-stainless-override-schema: x-stainless-param: betas x-stainless-extend-default: true type: array description: Optional header to specify the beta version(s) you want to use. items: $ref: '#/components/schemas/AnthropicBeta' - name: limit in: query required: false schema: type: integer format: int32 description: Maximum number of tunnels to return per page. Defaults to 20, maximum 1000. - name: page in: query required: false schema: type: string description: Opaque pagination cursor from a previous `list_tunnels` response. - name: include_archived in: query required: false schema: type: boolean description: Whether to include archived tunnels in the results. Defaults to false. responses: '200': description: Successful response (OK) content: application/json: schema: $ref: '#/components/schemas/BetaListTunnelsResponse' '400': description: Invalid argument - The client specified an invalid argument content: application/json: schema: $ref: '#/components/schemas/BetaErrorResponse' '401': description: Unauthenticated - The request does not have valid authentication credentials content: application/json: schema: $ref: '#/components/schemas/BetaErrorResponse' '403': description: Permission denied - The caller does not have permission to execute the specified operation content: application/json: schema: $ref: '#/components/schemas/BetaErrorResponse' '404': description: Not found - Some requested entity was not found content: application/json: schema: $ref: '#/components/schemas/BetaErrorResponse' '408': description: Deadline exceeded - The deadline expired before the operation could complete content: application/json: schema: $ref: '#/components/schemas/BetaErrorResponse' '409': description: Aborted - The operation was aborted due to concurrency issue content: application/json: schema: $ref: '#/components/schemas/BetaErrorResponse' '412': description: Failed precondition - Operation was rejected because the system is not in required state content: application/json: schema: $ref: '#/components/schemas/BetaErrorResponse' '413': description: Out of range - Operation was attempted past the valid range content: application/json: schema: $ref: '#/components/schemas/BetaErrorResponse' '429': description: Resource exhausted - Some resource has been exhausted (rate limiting) content: application/json: schema: $ref: '#/components/schemas/BetaErrorResponse' '431': description: Request header fields too large - Request metadata was too large content: application/json: schema: $ref: '#/components/schemas/BetaErrorResponse' '499': description: Cancelled - The operation was cancelled by the client content: application/json: schema: $ref: '#/components/schemas/BetaErrorResponse' '500': description: Internal - Internal server error content: application/json: schema: $ref: '#/components/schemas/BetaErrorResponse' '501': description: Unimplemented - The operation is not implemented or supported content: application/json: schema: $ref: '#/components/schemas/BetaErrorResponse' '503': description: Unavailable - The service is currently unavailable content: application/json: schema: $ref: '#/components/schemas/BetaErrorResponse' '504': description: Deadline exceeded - Upstream service did not respond in time content: application/json: schema: $ref: '#/components/schemas/BetaErrorResponse' x-anthropic-beta-required: - mcp-tunnels-2026-06-22 tags: - Tunnels?beta=true components: schemas: BetaGatewayTimeoutError: properties: message: default: Request timeout title: Message type: string type: const: timeout_error default: timeout_error title: Type type: string required: - message - type title: GatewayTimeoutError type: object BetaAPIError: properties: message: default: Internal server error title: Message type: string type: const: api_error default: api_error title: Type type: string required: - message - type title: APIError type: object BetaErrorResponse: properties: error: discriminator: mapping: api_error: '#/components/schemas/BetaAPIError' authentication_error: '#/components/schemas/BetaAuthenticationError' billing_error: '#/components/schemas/BetaBillingError' invalid_request_error: '#/components/schemas/BetaInvalidRequestError' not_found_error: '#/components/schemas/BetaNotFoundError' overloaded_error: '#/components/schemas/BetaOverloadedError' permission_error: '#/components/schemas/BetaPermissionError' rate_limit_error: '#/components/schemas/BetaRateLimitError' timeout_error: '#/components/schemas/BetaGatewayTimeoutError' propertyName: type oneOf: - $ref: '#/components/schemas/BetaInvalidRequestError' - $ref: '#/components/schemas/BetaAuthenticationError' - $ref: '#/components/schemas/BetaBillingError' - $ref: '#/components/schemas/BetaPermissionError' - $ref: '#/components/schemas/BetaNotFoundError' - $ref: '#/components/schemas/BetaRateLimitError' - $ref: '#/components/schemas/BetaGatewayTimeoutError' - $ref: '#/components/schemas/BetaAPIError' - $ref: '#/components/schemas/BetaOverloadedError' title: Error request_id: anyOf: - type: string - type: 'null' default: null title: Request Id type: const: error default: error title: Type type: string required: - error - request_id - type title: ErrorResponse type: object BetaTimestamp: description: A timestamp in RFC 3339 format type: string format: date-time BetaOverloadedError: properties: message: default: Overloaded title: Message type: string type: const: overloaded_error default: overloaded_error title: Type type: string required: - message - type title: OverloadedError type: object BetaAuthenticationError: properties: message: default: Authentication error title: Message type: string type: const: authentication_error default: authentication_error title: Type type: string required: - message - type title: AuthenticationError type: object BetaListTunnelsResponse: description: A paginated list of tunnels. type: object additionalProperties: false required: - data - next_page properties: data: description: List of tunnels, ordered by created_at descending. type: array items: $ref: '#/components/schemas/BetaTunnel' next_page: description: Pagination cursor for the next page, or null if no more results. anyOf: - type: string - type: 'null' BetaNotFoundError: properties: message: default: Not found title: Message type: string type: const: not_found_error default: not_found_error title: Type type: string required: - message - type title: NotFoundError type: object BetaBillingError: properties: message: default: Billing error title: Message type: string type: const: billing_error default: billing_error title: Type type: string required: - message - type title: BillingError type: object AnthropicBeta: anyOf: - type: string - type: string enum: - message-batches-2024-09-24 - prompt-caching-2024-07-31 - computer-use-2024-10-22 - computer-use-2025-01-24 - pdfs-2024-09-25 - token-counting-2024-11-01 - token-efficient-tools-2025-02-19 - output-128k-2025-02-19 - files-api-2025-04-14 - mcp-client-2025-04-04 - mcp-client-2025-11-20 - dev-full-thinking-2025-05-14 - interleaved-thinking-2025-05-14 - code-execution-2025-05-22 - extended-cache-ttl-2025-04-11 - context-1m-2025-08-07 - context-management-2025-06-27 - model-context-window-exceeded-2025-08-26 - skills-2025-10-02 - fast-mode-2026-02-01 - output-300k-2026-03-24 - user-profiles-2026-03-24 - user-profiles-2026-08-18 - advisor-tool-2026-03-01 - managed-agents-2026-04-01 - cache-diagnosis-2026-04-07 - dreaming-2026-04-21 - thinking-token-count-2026-05-13 - server-side-fallback-2026-06-01 - server-side-fallback-2026-07-01 - fallback-credit-2026-06-01 - fallback-credit-2026-07-01 - agent-memory-2026-07-22 - mid-conversation-tool-changes-2026-07-01 - compact-2026-01-12 - computer-use-2025-11-24 - mcp-tunnels-2026-06-22 - structured-outputs-2025-11-13 - task-budgets-2026-03-13 - thinking-display-updates-2026-08-18 - ce-user-management-2026-07-13 x-stainless-nominal: false BetaTunnel: description: An MCP tunnel. type: object additionalProperties: false required: - type - id - domain - display_name - created_at - archived_at properties: type: type: string const: tunnel id: description: Unique identifier for the tunnel, prefixed with `tnl_`. type: string domain: description: 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. type: string display_name: description: Human-readable name for the tunnel (1-255 characters). Null if unset. anyOf: - type: string - type: 'null' created_at: description: RFC 3339 datetime string indicating when the tunnel was created. allOf: - $ref: '#/components/schemas/BetaTimestamp' archived_at: description: RFC 3339 datetime string indicating when the tunnel was archived. Null if it is not archived. anyOf: - $ref: '#/components/schemas/BetaTimestamp' - type: 'null' BetaRateLimitError: properties: message: default: Rate limited title: Message type: string type: const: rate_limit_error default: rate_limit_error title: Type type: string required: - message - type title: RateLimitError type: object BetaInvalidRequestError: properties: message: default: Invalid request title: Message type: string type: const: invalid_request_error default: invalid_request_error title: Type type: string required: - message - type title: InvalidRequestError type: object BetaPermissionError: properties: message: default: Permission denied title: Message type: string type: const: permission_error default: permission_error title: Type type: string required: - message - type title: PermissionError type: object BetaCreateTunnelRequest: description: Request parameters for creating a tunnel. type: object additionalProperties: false properties: display_name: description: Optional human-readable name for the tunnel (1-255 characters). anyOf: - type: string minLength: 1 maxLength: 255 - type: 'null'