---
title: "Discover external MCP connection requirements"
method: POST
path: "/v1/mcp-connections/discover"
tags: ["Authentication"]
---

# Discover external MCP connection requirements

`POST /v1/mcp-connections/discover`

Admin-only, side-effect-free requirements discovery. It performs no client registration, credential write, or connection creation.

## Request body

- ExternalMcpRequirementsDiscoveryInput
  - `url` string, uri, required

## Response `200`

Requirements discovery result.

- ExternalMcpRequirementsDiscovery
  - `status` 'ready' | 'manual_action_required' | 'unsupported' | 'unreachable', required
  - `server` object, required
    - `url` string, required
    - `protocolVersion` string
    - `initialize` 'succeeded' | 'authentication_required' | 'failed', required
  - `authentication` object, required
    - `kind` 'none' | 'oauth' | 'manual_bearer' | 'unknown', required
    - `resource` string
    - `protectedResourceMetadataUrl` string
    - `authorizationServers` object[], required
      - `issuer` string, required
      - `authorizationEndpoint` string
      - `tokenEndpoint` string
      - `registrationEndpoint` string
      - `clientIdMetadataDocumentSupported` boolean, required
      - `scopesSupported` string[]
      - `grantTypesSupported` string[]
      - `codeChallengeMethodsSupported` string[]
      - `tokenEndpointAuthMethodsSupported` string[]
    - `requiredScopes` string[], required
    - `recommendedScopes` string[], required
    - `refreshSupport` 'supported' | 'not_advertised' | 'unknown', required
    - `availableRegistrationMethods` string[], required
    - `recommendedRegistrationMethod` 'client_metadata' | 'dynamic' | 'pre_registered', required
  - `tools` object, required
    - `visibility` 'available_without_auth' | 'requires_auth' | 'unavailable', required
    - `count` integer
    - `items` object[]
      - `name` string, required
      - `readOnlyHint` boolean
      - `destructiveHint` boolean
      - `openWorldHint` boolean
  - `manualRequirements` object[], required
    - `code` string, required
    - `label` string, required
    - `reason` string, required
    - `required` boolean, required
  - `warnings` object[], required
    - `code` string, required
    - `message` string, required

## Other responses

- `400` — Invalid request.
- `401` — The caller must be signed in.
- `403` — Only workspace owners and admins can discover MCP requirements.
- `502` — Requirements discovery failed.

---

[API](https://skmtc.net/openworklabs/apis/den-api.md) · [All operations](https://skmtc.net/openworklabs/apis/den-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/openworklabs/den-api/revisions/54cdbd4ecffa/schema)
