The Integration Registration UI provides a progressive, detection-first experience for connecting external services (OpenAPI, MCP, GraphQL, etc.) to the Executor platform. These components handle the transition from a raw endpoint or specification to a registered Integration in the system catalog.
Registration components follow a "Probe-then-Register" pattern. Before persisting an integration, the UI typically analyzes the source to detect authentication requirements, metadata (titles/descriptions), and health check candidates.
slug, displayName, and authMethods.Integration is created in the database.| Component | Plugin | Key Features |
|---|---|---|
AddOpenApiSource | OpenAPI | Spec parsing, Server URL selection, Auth derivation. |
AddMcpSource | MCP | Transport selection (Stdio/Remote), Probe state machine. |
AddGraphqlSource | GraphQL | Header/Query API Key configuration. |
AddGoogleSource | Product bundling (Discovery Doc aggregation). |
Sources: packages/plugins/openapi/src/react/AddOpenApiSource.tsx85-90 packages/plugins/mcp/src/react/AddMcpSource.tsx43-49 packages/plugins/graphql/src/react/AddGraphqlSource.tsx31-35
The AddOpenApiSource component manages the registration of RESTful services via OpenAPI specifications.
When a URL or JSON blob is provided, the component triggers a preview via the previewOpenApiSpec atom packages/plugins/openapi/src/react/AddOpenApiSource.tsx127
baseUrl packages/plugins/openapi/src/react/AddOpenApiSource.tsx150-156securitySchemes packages/plugins/openapi/src/react/AddOpenApiSource.tsx50To prevent clobbering existing integrations, the UI uses the useSlugAlreadyExists hook. If the derived or typed slug is already in use by the tenant, a SlugCollisionAlert is displayed and the "Add" button is disabled packages/plugins/openapi/src/react/AddOpenApiSource.tsx35-37 packages/plugins/openapi/src/react/AddOpenApiSource.tsx210-212
Title: OpenAPI Registration Sequence
Sources: packages/plugins/openapi/src/react/AddOpenApiSource.tsx99-130 packages/plugins/openapi/src/react/AddOpenApiSource.tsx147-173
Registration of Model Context Protocol (MCP) servers supports two transports: stdio (local processes) and remote (SSE/HTTP). Remote registration uses a formal state machine to handle the asynchronous probing of the endpoint.
The AddMcpSource component utilizes a reducer to manage the connection lifecycle packages/plugins/mcp/src/react/AddMcpSource.tsx112-158:
| State | Transition Trigger | Description |
|---|---|---|
url | set-url | Initial input state. |
probing | probe-start | Actively pinging the MCP endpoint. |
probed | probe-ok | Success; metadata and auth requirements retrieved. |
error | probe-fail | Connection failed; displays error and allow retry. |
adding | add-start | Persisting the MCP integration to the catalog. |
For local hosts (CLI/Desktop), the UI allows configuring stdio commands. It uses integrationDisplayNameFromStdio to derive a name from the command string (e.g., npx arguments) packages/plugins/mcp/src/react/AddMcpSource.tsx183-194
Sources: packages/plugins/mcp/src/react/AddMcpSource.tsx89-108 packages/plugins/mcp/src/react/AddMcpSource.tsx179-182
The AuthMethodListEditor is a shared component used across all registration flows to define how connections to the integration should be authenticated.
AddOpenApiSource seed the list with detected methods (e.g., OAuth2, ApiKey) packages/plugins/openapi/src/react/AddOpenApiSource.tsx191-200AuthMethodRow state is converted to the authenticationTemplate wire format expected by the API packages/plugins/openapi/src/react/AddOpenApiSource.tsx40-43 packages/plugins/graphql/src/react/AddGraphqlSource.tsx63-71none: No authentication required.apikey: Header or Query parameter based keys.oauth: Full OAuth2 flow (Authorization Code/Client Credentials).Sources: packages/react/src/components/auth-method-list-editor.tsx21-25 packages/plugins/graphql/src/react/AddGraphqlSource.tsx143-148
Integrations can define a "Health Check" to verify connection validity. During registration, specifically in the OpenAPI flow, users can select a candidate operation to serve as the health probe.
The HealthCheckConfigFields component allows users to:
GET /user) packages/plugins/openapi/src/react/AddOpenApiSource.tsx123hcIdentityField: A JSONPath-like string used to extract a displayable identity (e.g., email) from the health check response packages/plugins/openapi/src/react/AddOpenApiSource.tsx124 packages/react/src/components/accounts-section.tsx90-95hcArgs) required for the probe packages/plugins/openapi/src/react/AddOpenApiSource.tsx125Sources: packages/plugins/openapi/src/react/AddOpenApiSource.tsx19-20 packages/react/src/components/accounts-section.tsx85-87
Title: UI Component to Core SDK Mapping
useIntegrationIdentity: Manages the synchronized state between the integration's display name and its URL-safe slug packages/react/src/plugins/integration-identity.ts26slugifyNamespace: Utility to transform human-readable strings into valid IntegrationSlug formats packages/react/src/plugins/integration-identity.ts15createCredentialPayloadOrigin: Determines if a credential should be stored as a raw value or linked to a provider like 1Password packages/react/src/components/add-account-modal.tsx139-159Sources: packages/plugins/openapi/src/react/AddOpenApiSource.tsx110-113 packages/react/src/components/add-account-modal.tsx125-128
Refresh this wiki