diff --git a/client-sdks/stainless/openapi.yml b/client-sdks/stainless/openapi.yml index 51607d92d..ee63c7741 100644 --- a/client-sdks/stainless/openapi.yml +++ b/client-sdks/stainless/openapi.yml @@ -3893,6 +3893,212 @@ paths: schema: $ref: '#/components/schemas/SupervisedFineTuneRequest' required: true + /v1alpha/connectors/{connector_id}: + get: + responses: + '200': + description: A Connector. + content: + application/json: + schema: + $ref: '#/components/schemas/Connector' + '400': + description: Bad Request + $ref: '#/components/responses/BadRequest400' + '429': + description: Too Many Requests + $ref: '#/components/responses/TooManyRequests429' + '500': + description: Internal Server Error + $ref: '#/components/responses/InternalServerError500' + default: + description: Default Response + $ref: '#/components/responses/DefaultError' + tags: + - Connectors + summary: Get Connector + description: Get a connector by its ID. + operationId: get_connector_v1alpha_connectors__connector_id__get + parameters: + - name: connector_id + in: path + required: true + schema: + type: string + description: 'Path parameter: connector_id' + /v1alpha/connectors/{connector_id}/tools/{tool_name}: + get: + responses: + '200': + description: A MCPListToolsTool. + content: + application/json: + schema: + $ref: '#/components/schemas/MCPListToolsTool' + '400': + description: Bad Request + $ref: '#/components/responses/BadRequest400' + '429': + description: Too Many Requests + $ref: '#/components/responses/TooManyRequests429' + '500': + description: Internal Server Error + $ref: '#/components/responses/InternalServerError500' + default: + description: Default Response + $ref: '#/components/responses/DefaultError' + tags: + - Connectors + summary: Get Connector Tool + description: Get a tool definition by its name from a connector. + operationId: get_connector_tool_v1alpha_connectors__connector_id__tools__tool_name__get + parameters: + - name: connector_id + in: path + required: true + schema: + type: string + description: 'Path parameter: connector_id' + - name: tool_name + in: path + required: true + schema: + type: string + description: 'Path parameter: tool_name' + /v1alpha/connectors/registries/{registry_id}: + get: + responses: + '200': + description: A Registry. + content: + application/json: + schema: + $ref: '#/components/schemas/Registry' + '400': + description: Bad Request + $ref: '#/components/responses/BadRequest400' + '429': + description: Too Many Requests + $ref: '#/components/responses/TooManyRequests429' + '500': + description: Internal Server Error + $ref: '#/components/responses/InternalServerError500' + default: + description: Default Response + $ref: '#/components/responses/DefaultError' + tags: + - Connectors + summary: Get Registry + description: Get a registry by its ID. + operationId: get_registry_v1alpha_connectors_registries__registry_id__get + parameters: + - name: registry_id + in: path + required: true + schema: + type: string + description: 'Path parameter: registry_id' + /v1alpha/connectors/{connector_id}/tools: + get: + responses: + '200': + description: A ListToolsResponse. + content: + application/json: + schema: + $ref: '#/components/schemas/ListToolsResponse' + '400': + description: Bad Request + $ref: '#/components/responses/BadRequest400' + '429': + description: Too Many Requests + $ref: '#/components/responses/TooManyRequests429' + '500': + description: Internal Server Error + $ref: '#/components/responses/InternalServerError500' + default: + description: Default Response + $ref: '#/components/responses/DefaultError' + tags: + - Connectors + summary: List Connector Tools + description: List tools available from a connector. + operationId: list_connector_tools_v1alpha_connectors__connector_id__tools_get + parameters: + - name: connector_id + in: path + required: true + schema: + type: string + description: 'Path parameter: connector_id' + /v1alpha/connectors: + get: + responses: + '200': + description: A ListConnectorsResponse. + content: + application/json: + schema: + $ref: '#/components/schemas/ListConnectorsResponse' + '400': + $ref: '#/components/responses/BadRequest400' + description: Bad Request + '429': + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests + '500': + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error + default: + $ref: '#/components/responses/DefaultError' + description: Default Response + tags: + - Connectors + summary: List Connectors + description: List all configured connectors. + operationId: list_connectors_v1alpha_connectors_get + parameters: + - name: include_tools + in: query + required: false + schema: + type: boolean + default: false + title: Include Tools + - name: registry_id + in: query + required: false + schema: + anyOf: + - type: string + - type: 'null' + title: Registry Id + /v1alpha/connectors/registries: + get: + responses: + '200': + description: A ListRegistriesResponse. + content: + application/json: + schema: + $ref: '#/components/schemas/ListRegistriesResponse' + '400': + description: Bad Request + $ref: '#/components/responses/BadRequest400' + '429': + description: Too Many Requests + $ref: '#/components/responses/TooManyRequests429' + '500': + description: Internal Server Error + $ref: '#/components/responses/InternalServerError500' + default: + description: Default Response + $ref: '#/components/responses/DefaultError' + tags: + - Connectors + summary: List Registries + description: List all registries. + operationId: list_registries_v1alpha_connectors_registries_get components: schemas: Error: @@ -11618,6 +11824,90 @@ components: - chunk_id title: Chunk description: A chunk of content that can be inserted into a vector database. + Connector: + properties: + identifier: + type: string + title: Identifier + description: Unique identifier for this resource in llama stack + provider_resource_id: + anyOf: + - type: string + - type: 'null' + description: Unique identifier for this resource in the provider + provider_id: + type: string + title: Provider Id + description: ID of the provider that owns this resource + type: + type: string + const: connector + title: Type + default: connector + connector_type: + $ref: '#/components/schemas/ConnectorType' + default: mcp + connector_id: + anyOf: + - type: string + - type: 'null' + description: User-specified identifier for the connector + url: + type: string + title: Url + description: URL of the connector + created_at: + type: string + format: date-time + title: Created At + description: Timestamp of creation + updated_at: + type: string + format: date-time + title: Updated At + description: Timestamp of last update + server_name: + anyOf: + - type: string + - type: 'null' + description: Name of the server + server_label: + anyOf: + - type: string + - type: 'null' + description: Label of the server + server_description: + anyOf: + - type: string + - type: 'null' + description: Description of the server + tools: + anyOf: + - items: + $ref: '#/components/schemas/MCPListToolsTool' + type: array + - type: 'null' + description: List of tools available from the connector + registry_id: + anyOf: + - type: string + - type: 'null' + description: ID of the registry this connector belongs to + type: object + required: + - identifier + - provider_id + - url + - created_at + - updated_at + title: Connector + description: A connector resource representing a connector registered in Llama Stack. + ConnectorType: + type: string + enum: + - mcp + title: ConnectorType + description: Type of connector. ConversationItemInclude: type: string enum: @@ -11708,6 +11998,42 @@ components: - cancelled title: JobStatus description: Status of a job execution. + ListConnectorsResponse: + properties: + data: + items: + $ref: '#/components/schemas/Connector' + type: array + title: Data + type: object + required: + - data + title: ListConnectorsResponse + description: Response containing a list of connectors. + ListRegistriesResponse: + properties: + data: + items: + $ref: '#/components/schemas/Registry' + type: array + title: Data + type: object + required: + - data + title: ListRegistriesResponse + description: Response containing a list of registries. + ListToolsResponse: + properties: + data: + items: + $ref: '#/components/schemas/MCPListToolsTool' + type: array + title: Data + type: object + required: + - data + title: ListToolsResponse + description: Response containing a list of tools. MCPListToolsTool: properties: input_schema: @@ -12100,6 +12426,63 @@ components: required: - reasoning_tokens title: OutputTokensDetails + Registry: + properties: + identifier: + type: string + title: Identifier + description: Unique identifier for this resource in llama stack + provider_resource_id: + anyOf: + - type: string + - type: 'null' + description: Unique identifier for this resource in the provider + provider_id: + type: string + title: Provider Id + description: ID of the provider that owns this resource + type: + type: string + const: registry + title: Type + default: registry + registry_type: + $ref: '#/components/schemas/RegistryType' + default: mcp + user_registry_id: + anyOf: + - type: string + - type: 'null' + description: User-specified identifier for the registry + url: + type: string + title: Url + description: URL of the registry + created_at: + type: string + format: date-time + title: Created At + description: Timestamp of creation + updated_at: + type: string + format: date-time + title: Updated At + description: Timestamp of last update + type: object + required: + - identifier + - provider_id + - url + - created_at + - updated_at + title: Registry + description: A registry resource representing a registry of connectors. + RegistryType: + type: string + enum: + - mcp + title: RegistryType + description: Type of registry. SearchRankingOptions: properties: ranker: @@ -12573,6 +12956,45 @@ components: type: string title: DialogType type: object + RegistryInput: + description: Input for creating a registry. + properties: + url: + title: Url + type: string + user_registry_id: + anyOf: + - type: string + - type: 'null' + description: User-specified identifier for the registry + nullable: true + registry_type: + $ref: '#/components/schemas/RegistryType' + default: mcp + required: + - url + title: RegistryInput + type: object + ConnectorInput: + description: Input for creating a connector. + properties: + connector_type: + $ref: '#/components/schemas/ConnectorType' + default: mcp + connector_id: + anyOf: + - type: string + - type: 'null' + description: Unique identifier for the connector + nullable: true + url: + description: URL of the connector + title: Url + type: string + required: + - url + title: ConnectorInput + type: object ConversationMessage: description: OpenAI-compatible message item for conversations. properties: @@ -12708,6 +13130,7 @@ components: - files - prompts - conversations + - connectors - inspect title: Api type: string diff --git a/docs/static/deprecated-llama-stack-spec.yaml b/docs/static/deprecated-llama-stack-spec.yaml index 2d0ce6e08..972ad317c 100644 --- a/docs/static/deprecated-llama-stack-spec.yaml +++ b/docs/static/deprecated-llama-stack-spec.yaml @@ -8612,6 +8612,90 @@ components: - chunk_id title: Chunk description: A chunk of content that can be inserted into a vector database. + Connector: + properties: + identifier: + type: string + title: Identifier + description: Unique identifier for this resource in llama stack + provider_resource_id: + anyOf: + - type: string + - type: 'null' + description: Unique identifier for this resource in the provider + provider_id: + type: string + title: Provider Id + description: ID of the provider that owns this resource + type: + type: string + const: connector + title: Type + default: connector + connector_type: + $ref: '#/components/schemas/ConnectorType' + default: mcp + connector_id: + anyOf: + - type: string + - type: 'null' + description: User-specified identifier for the connector + url: + type: string + title: Url + description: URL of the connector + created_at: + type: string + format: date-time + title: Created At + description: Timestamp of creation + updated_at: + type: string + format: date-time + title: Updated At + description: Timestamp of last update + server_name: + anyOf: + - type: string + - type: 'null' + description: Name of the server + server_label: + anyOf: + - type: string + - type: 'null' + description: Label of the server + server_description: + anyOf: + - type: string + - type: 'null' + description: Description of the server + tools: + anyOf: + - items: + $ref: '#/components/schemas/MCPListToolsTool' + type: array + - type: 'null' + description: List of tools available from the connector + registry_id: + anyOf: + - type: string + - type: 'null' + description: ID of the registry this connector belongs to + type: object + required: + - identifier + - provider_id + - url + - created_at + - updated_at + title: Connector + description: A connector resource representing a connector registered in Llama Stack. + ConnectorType: + type: string + enum: + - mcp + title: ConnectorType + description: Type of connector. ConversationItemInclude: type: string enum: @@ -8702,6 +8786,42 @@ components: - cancelled title: JobStatus description: Status of a job execution. + ListConnectorsResponse: + properties: + data: + items: + $ref: '#/components/schemas/Connector' + type: array + title: Data + type: object + required: + - data + title: ListConnectorsResponse + description: Response containing a list of connectors. + ListRegistriesResponse: + properties: + data: + items: + $ref: '#/components/schemas/Registry' + type: array + title: Data + type: object + required: + - data + title: ListRegistriesResponse + description: Response containing a list of registries. + ListToolsResponse: + properties: + data: + items: + $ref: '#/components/schemas/MCPListToolsTool' + type: array + title: Data + type: object + required: + - data + title: ListToolsResponse + description: Response containing a list of tools. MCPListToolsTool: properties: input_schema: @@ -9094,6 +9214,63 @@ components: required: - reasoning_tokens title: OutputTokensDetails + Registry: + properties: + identifier: + type: string + title: Identifier + description: Unique identifier for this resource in llama stack + provider_resource_id: + anyOf: + - type: string + - type: 'null' + description: Unique identifier for this resource in the provider + provider_id: + type: string + title: Provider Id + description: ID of the provider that owns this resource + type: + type: string + const: registry + title: Type + default: registry + registry_type: + $ref: '#/components/schemas/RegistryType' + default: mcp + user_registry_id: + anyOf: + - type: string + - type: 'null' + description: User-specified identifier for the registry + url: + type: string + title: Url + description: URL of the registry + created_at: + type: string + format: date-time + title: Created At + description: Timestamp of creation + updated_at: + type: string + format: date-time + title: Updated At + description: Timestamp of last update + type: object + required: + - identifier + - provider_id + - url + - created_at + - updated_at + title: Registry + description: A registry resource representing a registry of connectors. + RegistryType: + type: string + enum: + - mcp + title: RegistryType + description: Type of registry. SearchRankingOptions: properties: ranker: @@ -9567,6 +9744,45 @@ components: type: string title: DialogType type: object + RegistryInput: + description: Input for creating a registry. + properties: + url: + title: Url + type: string + user_registry_id: + anyOf: + - type: string + - type: 'null' + description: User-specified identifier for the registry + nullable: true + registry_type: + $ref: '#/components/schemas/RegistryType' + default: mcp + required: + - url + title: RegistryInput + type: object + ConnectorInput: + description: Input for creating a connector. + properties: + connector_type: + $ref: '#/components/schemas/ConnectorType' + default: mcp + connector_id: + anyOf: + - type: string + - type: 'null' + description: Unique identifier for the connector + nullable: true + url: + description: URL of the connector + title: Url + type: string + required: + - url + title: ConnectorInput + type: object ConversationMessage: description: OpenAI-compatible message item for conversations. properties: @@ -9702,6 +9918,7 @@ components: - files - prompts - conversations + - connectors - inspect title: Api type: string diff --git a/docs/static/experimental-llama-stack-spec.yaml b/docs/static/experimental-llama-stack-spec.yaml index 4d5a43693..27cb82b94 100644 --- a/docs/static/experimental-llama-stack-spec.yaml +++ b/docs/static/experimental-llama-stack-spec.yaml @@ -630,6 +630,212 @@ paths: schema: $ref: '#/components/schemas/SupervisedFineTuneRequest' required: true + /v1alpha/connectors/{connector_id}: + get: + responses: + '200': + description: A Connector. + content: + application/json: + schema: + $ref: '#/components/schemas/Connector' + '400': + description: Bad Request + $ref: '#/components/responses/BadRequest400' + '429': + description: Too Many Requests + $ref: '#/components/responses/TooManyRequests429' + '500': + description: Internal Server Error + $ref: '#/components/responses/InternalServerError500' + default: + description: Default Response + $ref: '#/components/responses/DefaultError' + tags: + - Connectors + summary: Get Connector + description: Get a connector by its ID. + operationId: get_connector_v1alpha_connectors__connector_id__get + parameters: + - name: connector_id + in: path + required: true + schema: + type: string + description: 'Path parameter: connector_id' + /v1alpha/connectors/{connector_id}/tools/{tool_name}: + get: + responses: + '200': + description: A MCPListToolsTool. + content: + application/json: + schema: + $ref: '#/components/schemas/MCPListToolsTool' + '400': + description: Bad Request + $ref: '#/components/responses/BadRequest400' + '429': + description: Too Many Requests + $ref: '#/components/responses/TooManyRequests429' + '500': + description: Internal Server Error + $ref: '#/components/responses/InternalServerError500' + default: + description: Default Response + $ref: '#/components/responses/DefaultError' + tags: + - Connectors + summary: Get Connector Tool + description: Get a tool definition by its name from a connector. + operationId: get_connector_tool_v1alpha_connectors__connector_id__tools__tool_name__get + parameters: + - name: connector_id + in: path + required: true + schema: + type: string + description: 'Path parameter: connector_id' + - name: tool_name + in: path + required: true + schema: + type: string + description: 'Path parameter: tool_name' + /v1alpha/connectors/registries/{registry_id}: + get: + responses: + '200': + description: A Registry. + content: + application/json: + schema: + $ref: '#/components/schemas/Registry' + '400': + description: Bad Request + $ref: '#/components/responses/BadRequest400' + '429': + description: Too Many Requests + $ref: '#/components/responses/TooManyRequests429' + '500': + description: Internal Server Error + $ref: '#/components/responses/InternalServerError500' + default: + description: Default Response + $ref: '#/components/responses/DefaultError' + tags: + - Connectors + summary: Get Registry + description: Get a registry by its ID. + operationId: get_registry_v1alpha_connectors_registries__registry_id__get + parameters: + - name: registry_id + in: path + required: true + schema: + type: string + description: 'Path parameter: registry_id' + /v1alpha/connectors/{connector_id}/tools: + get: + responses: + '200': + description: A ListToolsResponse. + content: + application/json: + schema: + $ref: '#/components/schemas/ListToolsResponse' + '400': + description: Bad Request + $ref: '#/components/responses/BadRequest400' + '429': + description: Too Many Requests + $ref: '#/components/responses/TooManyRequests429' + '500': + description: Internal Server Error + $ref: '#/components/responses/InternalServerError500' + default: + description: Default Response + $ref: '#/components/responses/DefaultError' + tags: + - Connectors + summary: List Connector Tools + description: List tools available from a connector. + operationId: list_connector_tools_v1alpha_connectors__connector_id__tools_get + parameters: + - name: connector_id + in: path + required: true + schema: + type: string + description: 'Path parameter: connector_id' + /v1alpha/connectors: + get: + responses: + '200': + description: A ListConnectorsResponse. + content: + application/json: + schema: + $ref: '#/components/schemas/ListConnectorsResponse' + '400': + $ref: '#/components/responses/BadRequest400' + description: Bad Request + '429': + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests + '500': + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error + default: + $ref: '#/components/responses/DefaultError' + description: Default Response + tags: + - Connectors + summary: List Connectors + description: List all configured connectors. + operationId: list_connectors_v1alpha_connectors_get + parameters: + - name: include_tools + in: query + required: false + schema: + type: boolean + default: false + title: Include Tools + - name: registry_id + in: query + required: false + schema: + anyOf: + - type: string + - type: 'null' + title: Registry Id + /v1alpha/connectors/registries: + get: + responses: + '200': + description: A ListRegistriesResponse. + content: + application/json: + schema: + $ref: '#/components/schemas/ListRegistriesResponse' + '400': + description: Bad Request + $ref: '#/components/responses/BadRequest400' + '429': + description: Too Many Requests + $ref: '#/components/responses/TooManyRequests429' + '500': + description: Internal Server Error + $ref: '#/components/responses/InternalServerError500' + default: + description: Default Response + $ref: '#/components/responses/DefaultError' + tags: + - Connectors + summary: List Registries + description: List all registries. + operationId: list_registries_v1alpha_connectors_registries_get components: schemas: Error: @@ -7459,6 +7665,90 @@ components: - chunk_id title: Chunk description: A chunk of content that can be inserted into a vector database. + Connector: + properties: + identifier: + type: string + title: Identifier + description: Unique identifier for this resource in llama stack + provider_resource_id: + anyOf: + - type: string + - type: 'null' + description: Unique identifier for this resource in the provider + provider_id: + type: string + title: Provider Id + description: ID of the provider that owns this resource + type: + type: string + const: connector + title: Type + default: connector + connector_type: + $ref: '#/components/schemas/ConnectorType' + default: mcp + connector_id: + anyOf: + - type: string + - type: 'null' + description: User-specified identifier for the connector + url: + type: string + title: Url + description: URL of the connector + created_at: + type: string + format: date-time + title: Created At + description: Timestamp of creation + updated_at: + type: string + format: date-time + title: Updated At + description: Timestamp of last update + server_name: + anyOf: + - type: string + - type: 'null' + description: Name of the server + server_label: + anyOf: + - type: string + - type: 'null' + description: Label of the server + server_description: + anyOf: + - type: string + - type: 'null' + description: Description of the server + tools: + anyOf: + - items: + $ref: '#/components/schemas/MCPListToolsTool' + type: array + - type: 'null' + description: List of tools available from the connector + registry_id: + anyOf: + - type: string + - type: 'null' + description: ID of the registry this connector belongs to + type: object + required: + - identifier + - provider_id + - url + - created_at + - updated_at + title: Connector + description: A connector resource representing a connector registered in Llama Stack. + ConnectorType: + type: string + enum: + - mcp + title: ConnectorType + description: Type of connector. DatasetPurpose: type: string enum: @@ -7537,6 +7827,42 @@ components: - cancelled title: JobStatus description: Status of a job execution. + ListConnectorsResponse: + properties: + data: + items: + $ref: '#/components/schemas/Connector' + type: array + title: Data + type: object + required: + - data + title: ListConnectorsResponse + description: Response containing a list of connectors. + ListRegistriesResponse: + properties: + data: + items: + $ref: '#/components/schemas/Registry' + type: array + title: Data + type: object + required: + - data + title: ListRegistriesResponse + description: Response containing a list of registries. + ListToolsResponse: + properties: + data: + items: + $ref: '#/components/schemas/MCPListToolsTool' + type: array + title: Data + type: object + required: + - data + title: ListToolsResponse + description: Response containing a list of tools. MCPListToolsTool: properties: input_schema: @@ -7860,6 +8186,63 @@ components: required: - reasoning_tokens title: OutputTokensDetails + Registry: + properties: + identifier: + type: string + title: Identifier + description: Unique identifier for this resource in llama stack + provider_resource_id: + anyOf: + - type: string + - type: 'null' + description: Unique identifier for this resource in the provider + provider_id: + type: string + title: Provider Id + description: ID of the provider that owns this resource + type: + type: string + const: registry + title: Type + default: registry + registry_type: + $ref: '#/components/schemas/RegistryType' + default: mcp + user_registry_id: + anyOf: + - type: string + - type: 'null' + description: User-specified identifier for the registry + url: + type: string + title: Url + description: URL of the registry + created_at: + type: string + format: date-time + title: Created At + description: Timestamp of creation + updated_at: + type: string + format: date-time + title: Updated At + description: Timestamp of last update + type: object + required: + - identifier + - provider_id + - url + - created_at + - updated_at + title: Registry + description: A registry resource representing a registry of connectors. + RegistryType: + type: string + enum: + - mcp + title: RegistryType + description: Type of registry. SearchRankingOptions: properties: ranker: @@ -8333,6 +8716,45 @@ components: type: string title: DialogType type: object + RegistryInput: + description: Input for creating a registry. + properties: + url: + title: Url + type: string + user_registry_id: + anyOf: + - type: string + - type: 'null' + description: User-specified identifier for the registry + nullable: true + registry_type: + $ref: '#/components/schemas/RegistryType' + default: mcp + required: + - url + title: RegistryInput + type: object + ConnectorInput: + description: Input for creating a connector. + properties: + connector_type: + $ref: '#/components/schemas/ConnectorType' + default: mcp + connector_id: + anyOf: + - type: string + - type: 'null' + description: Unique identifier for the connector + nullable: true + url: + description: URL of the connector + title: Url + type: string + required: + - url + title: ConnectorInput + type: object ConversationMessage: description: OpenAI-compatible message item for conversations. properties: @@ -8468,6 +8890,7 @@ components: - files - prompts - conversations + - connectors - inspect title: Api type: string diff --git a/docs/static/llama-stack-spec.yaml b/docs/static/llama-stack-spec.yaml index a593fef85..01e8c1ae1 100644 --- a/docs/static/llama-stack-spec.yaml +++ b/docs/static/llama-stack-spec.yaml @@ -10054,6 +10054,90 @@ components: - chunk_id title: Chunk description: A chunk of content that can be inserted into a vector database. + Connector: + properties: + identifier: + type: string + title: Identifier + description: Unique identifier for this resource in llama stack + provider_resource_id: + anyOf: + - type: string + - type: 'null' + description: Unique identifier for this resource in the provider + provider_id: + type: string + title: Provider Id + description: ID of the provider that owns this resource + type: + type: string + const: connector + title: Type + default: connector + connector_type: + $ref: '#/components/schemas/ConnectorType' + default: mcp + connector_id: + anyOf: + - type: string + - type: 'null' + description: User-specified identifier for the connector + url: + type: string + title: Url + description: URL of the connector + created_at: + type: string + format: date-time + title: Created At + description: Timestamp of creation + updated_at: + type: string + format: date-time + title: Updated At + description: Timestamp of last update + server_name: + anyOf: + - type: string + - type: 'null' + description: Name of the server + server_label: + anyOf: + - type: string + - type: 'null' + description: Label of the server + server_description: + anyOf: + - type: string + - type: 'null' + description: Description of the server + tools: + anyOf: + - items: + $ref: '#/components/schemas/MCPListToolsTool' + type: array + - type: 'null' + description: List of tools available from the connector + registry_id: + anyOf: + - type: string + - type: 'null' + description: ID of the registry this connector belongs to + type: object + required: + - identifier + - provider_id + - url + - created_at + - updated_at + title: Connector + description: A connector resource representing a connector registered in Llama Stack. + ConnectorType: + type: string + enum: + - mcp + title: ConnectorType + description: Type of connector. ConversationItemInclude: type: string enum: @@ -10144,6 +10228,42 @@ components: - cancelled title: JobStatus description: Status of a job execution. + ListConnectorsResponse: + properties: + data: + items: + $ref: '#/components/schemas/Connector' + type: array + title: Data + type: object + required: + - data + title: ListConnectorsResponse + description: Response containing a list of connectors. + ListRegistriesResponse: + properties: + data: + items: + $ref: '#/components/schemas/Registry' + type: array + title: Data + type: object + required: + - data + title: ListRegistriesResponse + description: Response containing a list of registries. + ListToolsResponse: + properties: + data: + items: + $ref: '#/components/schemas/MCPListToolsTool' + type: array + title: Data + type: object + required: + - data + title: ListToolsResponse + description: Response containing a list of tools. MCPListToolsTool: properties: input_schema: @@ -10536,6 +10656,63 @@ components: required: - reasoning_tokens title: OutputTokensDetails + Registry: + properties: + identifier: + type: string + title: Identifier + description: Unique identifier for this resource in llama stack + provider_resource_id: + anyOf: + - type: string + - type: 'null' + description: Unique identifier for this resource in the provider + provider_id: + type: string + title: Provider Id + description: ID of the provider that owns this resource + type: + type: string + const: registry + title: Type + default: registry + registry_type: + $ref: '#/components/schemas/RegistryType' + default: mcp + user_registry_id: + anyOf: + - type: string + - type: 'null' + description: User-specified identifier for the registry + url: + type: string + title: Url + description: URL of the registry + created_at: + type: string + format: date-time + title: Created At + description: Timestamp of creation + updated_at: + type: string + format: date-time + title: Updated At + description: Timestamp of last update + type: object + required: + - identifier + - provider_id + - url + - created_at + - updated_at + title: Registry + description: A registry resource representing a registry of connectors. + RegistryType: + type: string + enum: + - mcp + title: RegistryType + description: Type of registry. SearchRankingOptions: properties: ranker: @@ -11009,6 +11186,45 @@ components: type: string title: DialogType type: object + RegistryInput: + description: Input for creating a registry. + properties: + url: + title: Url + type: string + user_registry_id: + anyOf: + - type: string + - type: 'null' + description: User-specified identifier for the registry + nullable: true + registry_type: + $ref: '#/components/schemas/RegistryType' + default: mcp + required: + - url + title: RegistryInput + type: object + ConnectorInput: + description: Input for creating a connector. + properties: + connector_type: + $ref: '#/components/schemas/ConnectorType' + default: mcp + connector_id: + anyOf: + - type: string + - type: 'null' + description: Unique identifier for the connector + nullable: true + url: + description: URL of the connector + title: Url + type: string + required: + - url + title: ConnectorInput + type: object ConversationMessage: description: OpenAI-compatible message item for conversations. properties: @@ -11144,6 +11360,7 @@ components: - files - prompts - conversations + - connectors - inspect title: Api type: string diff --git a/docs/static/stainless-llama-stack-spec.yaml b/docs/static/stainless-llama-stack-spec.yaml index 51607d92d..ee63c7741 100644 --- a/docs/static/stainless-llama-stack-spec.yaml +++ b/docs/static/stainless-llama-stack-spec.yaml @@ -3893,6 +3893,212 @@ paths: schema: $ref: '#/components/schemas/SupervisedFineTuneRequest' required: true + /v1alpha/connectors/{connector_id}: + get: + responses: + '200': + description: A Connector. + content: + application/json: + schema: + $ref: '#/components/schemas/Connector' + '400': + description: Bad Request + $ref: '#/components/responses/BadRequest400' + '429': + description: Too Many Requests + $ref: '#/components/responses/TooManyRequests429' + '500': + description: Internal Server Error + $ref: '#/components/responses/InternalServerError500' + default: + description: Default Response + $ref: '#/components/responses/DefaultError' + tags: + - Connectors + summary: Get Connector + description: Get a connector by its ID. + operationId: get_connector_v1alpha_connectors__connector_id__get + parameters: + - name: connector_id + in: path + required: true + schema: + type: string + description: 'Path parameter: connector_id' + /v1alpha/connectors/{connector_id}/tools/{tool_name}: + get: + responses: + '200': + description: A MCPListToolsTool. + content: + application/json: + schema: + $ref: '#/components/schemas/MCPListToolsTool' + '400': + description: Bad Request + $ref: '#/components/responses/BadRequest400' + '429': + description: Too Many Requests + $ref: '#/components/responses/TooManyRequests429' + '500': + description: Internal Server Error + $ref: '#/components/responses/InternalServerError500' + default: + description: Default Response + $ref: '#/components/responses/DefaultError' + tags: + - Connectors + summary: Get Connector Tool + description: Get a tool definition by its name from a connector. + operationId: get_connector_tool_v1alpha_connectors__connector_id__tools__tool_name__get + parameters: + - name: connector_id + in: path + required: true + schema: + type: string + description: 'Path parameter: connector_id' + - name: tool_name + in: path + required: true + schema: + type: string + description: 'Path parameter: tool_name' + /v1alpha/connectors/registries/{registry_id}: + get: + responses: + '200': + description: A Registry. + content: + application/json: + schema: + $ref: '#/components/schemas/Registry' + '400': + description: Bad Request + $ref: '#/components/responses/BadRequest400' + '429': + description: Too Many Requests + $ref: '#/components/responses/TooManyRequests429' + '500': + description: Internal Server Error + $ref: '#/components/responses/InternalServerError500' + default: + description: Default Response + $ref: '#/components/responses/DefaultError' + tags: + - Connectors + summary: Get Registry + description: Get a registry by its ID. + operationId: get_registry_v1alpha_connectors_registries__registry_id__get + parameters: + - name: registry_id + in: path + required: true + schema: + type: string + description: 'Path parameter: registry_id' + /v1alpha/connectors/{connector_id}/tools: + get: + responses: + '200': + description: A ListToolsResponse. + content: + application/json: + schema: + $ref: '#/components/schemas/ListToolsResponse' + '400': + description: Bad Request + $ref: '#/components/responses/BadRequest400' + '429': + description: Too Many Requests + $ref: '#/components/responses/TooManyRequests429' + '500': + description: Internal Server Error + $ref: '#/components/responses/InternalServerError500' + default: + description: Default Response + $ref: '#/components/responses/DefaultError' + tags: + - Connectors + summary: List Connector Tools + description: List tools available from a connector. + operationId: list_connector_tools_v1alpha_connectors__connector_id__tools_get + parameters: + - name: connector_id + in: path + required: true + schema: + type: string + description: 'Path parameter: connector_id' + /v1alpha/connectors: + get: + responses: + '200': + description: A ListConnectorsResponse. + content: + application/json: + schema: + $ref: '#/components/schemas/ListConnectorsResponse' + '400': + $ref: '#/components/responses/BadRequest400' + description: Bad Request + '429': + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests + '500': + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error + default: + $ref: '#/components/responses/DefaultError' + description: Default Response + tags: + - Connectors + summary: List Connectors + description: List all configured connectors. + operationId: list_connectors_v1alpha_connectors_get + parameters: + - name: include_tools + in: query + required: false + schema: + type: boolean + default: false + title: Include Tools + - name: registry_id + in: query + required: false + schema: + anyOf: + - type: string + - type: 'null' + title: Registry Id + /v1alpha/connectors/registries: + get: + responses: + '200': + description: A ListRegistriesResponse. + content: + application/json: + schema: + $ref: '#/components/schemas/ListRegistriesResponse' + '400': + description: Bad Request + $ref: '#/components/responses/BadRequest400' + '429': + description: Too Many Requests + $ref: '#/components/responses/TooManyRequests429' + '500': + description: Internal Server Error + $ref: '#/components/responses/InternalServerError500' + default: + description: Default Response + $ref: '#/components/responses/DefaultError' + tags: + - Connectors + summary: List Registries + description: List all registries. + operationId: list_registries_v1alpha_connectors_registries_get components: schemas: Error: @@ -11618,6 +11824,90 @@ components: - chunk_id title: Chunk description: A chunk of content that can be inserted into a vector database. + Connector: + properties: + identifier: + type: string + title: Identifier + description: Unique identifier for this resource in llama stack + provider_resource_id: + anyOf: + - type: string + - type: 'null' + description: Unique identifier for this resource in the provider + provider_id: + type: string + title: Provider Id + description: ID of the provider that owns this resource + type: + type: string + const: connector + title: Type + default: connector + connector_type: + $ref: '#/components/schemas/ConnectorType' + default: mcp + connector_id: + anyOf: + - type: string + - type: 'null' + description: User-specified identifier for the connector + url: + type: string + title: Url + description: URL of the connector + created_at: + type: string + format: date-time + title: Created At + description: Timestamp of creation + updated_at: + type: string + format: date-time + title: Updated At + description: Timestamp of last update + server_name: + anyOf: + - type: string + - type: 'null' + description: Name of the server + server_label: + anyOf: + - type: string + - type: 'null' + description: Label of the server + server_description: + anyOf: + - type: string + - type: 'null' + description: Description of the server + tools: + anyOf: + - items: + $ref: '#/components/schemas/MCPListToolsTool' + type: array + - type: 'null' + description: List of tools available from the connector + registry_id: + anyOf: + - type: string + - type: 'null' + description: ID of the registry this connector belongs to + type: object + required: + - identifier + - provider_id + - url + - created_at + - updated_at + title: Connector + description: A connector resource representing a connector registered in Llama Stack. + ConnectorType: + type: string + enum: + - mcp + title: ConnectorType + description: Type of connector. ConversationItemInclude: type: string enum: @@ -11708,6 +11998,42 @@ components: - cancelled title: JobStatus description: Status of a job execution. + ListConnectorsResponse: + properties: + data: + items: + $ref: '#/components/schemas/Connector' + type: array + title: Data + type: object + required: + - data + title: ListConnectorsResponse + description: Response containing a list of connectors. + ListRegistriesResponse: + properties: + data: + items: + $ref: '#/components/schemas/Registry' + type: array + title: Data + type: object + required: + - data + title: ListRegistriesResponse + description: Response containing a list of registries. + ListToolsResponse: + properties: + data: + items: + $ref: '#/components/schemas/MCPListToolsTool' + type: array + title: Data + type: object + required: + - data + title: ListToolsResponse + description: Response containing a list of tools. MCPListToolsTool: properties: input_schema: @@ -12100,6 +12426,63 @@ components: required: - reasoning_tokens title: OutputTokensDetails + Registry: + properties: + identifier: + type: string + title: Identifier + description: Unique identifier for this resource in llama stack + provider_resource_id: + anyOf: + - type: string + - type: 'null' + description: Unique identifier for this resource in the provider + provider_id: + type: string + title: Provider Id + description: ID of the provider that owns this resource + type: + type: string + const: registry + title: Type + default: registry + registry_type: + $ref: '#/components/schemas/RegistryType' + default: mcp + user_registry_id: + anyOf: + - type: string + - type: 'null' + description: User-specified identifier for the registry + url: + type: string + title: Url + description: URL of the registry + created_at: + type: string + format: date-time + title: Created At + description: Timestamp of creation + updated_at: + type: string + format: date-time + title: Updated At + description: Timestamp of last update + type: object + required: + - identifier + - provider_id + - url + - created_at + - updated_at + title: Registry + description: A registry resource representing a registry of connectors. + RegistryType: + type: string + enum: + - mcp + title: RegistryType + description: Type of registry. SearchRankingOptions: properties: ranker: @@ -12573,6 +12956,45 @@ components: type: string title: DialogType type: object + RegistryInput: + description: Input for creating a registry. + properties: + url: + title: Url + type: string + user_registry_id: + anyOf: + - type: string + - type: 'null' + description: User-specified identifier for the registry + nullable: true + registry_type: + $ref: '#/components/schemas/RegistryType' + default: mcp + required: + - url + title: RegistryInput + type: object + ConnectorInput: + description: Input for creating a connector. + properties: + connector_type: + $ref: '#/components/schemas/ConnectorType' + default: mcp + connector_id: + anyOf: + - type: string + - type: 'null' + description: Unique identifier for the connector + nullable: true + url: + description: URL of the connector + title: Url + type: string + required: + - url + title: ConnectorInput + type: object ConversationMessage: description: OpenAI-compatible message item for conversations. properties: @@ -12708,6 +13130,7 @@ components: - files - prompts - conversations + - connectors - inspect title: Api type: string diff --git a/src/llama_stack/core/resolver.py b/src/llama_stack/core/resolver.py index 15720df95..5efb14f8d 100644 --- a/src/llama_stack/core/resolver.py +++ b/src/llama_stack/core/resolver.py @@ -28,6 +28,7 @@ from llama_stack_api import ( Batches, Benchmarks, BenchmarksProtocolPrivate, + Connectors, Conversations, DatasetIO, Datasets, @@ -100,6 +101,7 @@ def api_protocol_map(external_apis: dict[Api, ExternalApiSpec] | None = None) -> Api.files: Files, Api.prompts: Prompts, Api.conversations: Conversations, + Api.connectors: Connectors, } if external_apis: diff --git a/src/llama_stack_api/__init__.py b/src/llama_stack_api/__init__.py index b6fe2fd23..ad92c0a59 100644 --- a/src/llama_stack_api/__init__.py +++ b/src/llama_stack_api/__init__.py @@ -66,6 +66,14 @@ from .common.type_system import ( ParamType, StringType, ) +from .connectors import ( + Connector, + ConnectorInput, + Connectors, + ConnectorType, + ListConnectorsResponse, + ListToolsResponse, +) from .conversations import ( Conversation, ConversationDeletedResource, @@ -340,6 +348,12 @@ from .rag_tool import ( RRFRanker, WeightedRanker, ) +from .registries import ( + ListRegistriesResponse, + Registry, + RegistryInput, + RegistryType, +) from .resource import Resource, ResourceType from .safety import ( ModerationObject, @@ -482,6 +496,10 @@ __all__ = [ "CommonShieldFields", "CompletionInputType", "CompletionRequest", + "Connector", + "ConnectorInput", + "Connectors", + "ConnectorType", "Conversation", "ConversationDeletedResource", "ConversationItem", @@ -556,6 +574,7 @@ __all__ = [ "LLMRAGQueryGeneratorConfig", "ListBatchesResponse", "ListBenchmarksResponse", + "ListConnectorsResponse", "ListDatasetsResponse", "ListModelsResponse", "ListOpenAIChatCompletionResponse", @@ -565,11 +584,13 @@ __all__ = [ "ListPostTrainingJobsResponse", "ListPromptsResponse", "ListProvidersResponse", + "ListRegistriesResponse", "ListRoutesResponse", "ListScoringFunctionsResponse", "ListShieldsResponse", "ListToolDefsResponse", "ListToolGroupsResponse", + "ListToolsResponse", "LogProbConfig", "LoraFinetuningConfig", "MCPListToolsTool", @@ -753,6 +774,9 @@ __all__ = [ "RRFRanker", "Ranker", "RegexParserScoringFnParams", + "Registry", + "RegistryType", + "RegistryInput", "RemoteProviderConfig", "RemoteProviderSpec", "RerankData", diff --git a/src/llama_stack_api/connectors.py b/src/llama_stack_api/connectors.py new file mode 100644 index 000000000..e7adcc8f1 --- /dev/null +++ b/src/llama_stack_api/connectors.py @@ -0,0 +1,176 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# All rights reserved. +# +# This source code is licensed under the terms described in the LICENSE file in +# the root directory of this source tree. + +from datetime import datetime +from enum import StrEnum +from typing import Literal, Protocol + +from pydantic import BaseModel, Field +from typing_extensions import runtime_checkable + +from llama_stack_api.openai_responses import MCPListToolsTool +from llama_stack_api.registries import ListRegistriesResponse, Registry +from llama_stack_api.resource import Resource, ResourceType +from llama_stack_api.schema_utils import json_schema_type, webmethod +from llama_stack_api.version import LLAMA_STACK_API_V1ALPHA + + +@json_schema_type +class ConnectorType(StrEnum): + """Type of connector.""" + + MCP = "mcp" + + +@json_schema_type +class Connector(Resource): + """A connector resource representing a connector registered in Llama Stack. + + :param type: Type of resource, always 'connector' for connectors + :param connector_type: Type of connector (e.g., MCP) + :param connector_id: User-specified identifier for the connector + :param url: URL of the connector + :param created_at: Timestamp of creation + :param updated_at: Timestamp of last update + :param server_label: (Optional) Label of the server + :param server_description: (Optional) Description of the server + :param tools: (Optional) List of tools available from the connector + :param registry_id: (Optional) ID of the registry this connector belongs to + """ + + model_config = {"populate_by_name": True} + + type: Literal[ResourceType.connector] = ResourceType.connector + connector_type: ConnectorType = Field(default=ConnectorType.MCP) + user_connector_id: str | None = Field( + default=None, alias="connector_id", description="User-specified identifier for the connector" + ) + url: str = Field(..., description="URL of the connector") + created_at: datetime = Field(..., description="Timestamp of creation") + updated_at: datetime = Field(..., description="Timestamp of last update") + server_name: str | None = Field(default=None, description="Name of the server") + server_label: str | None = Field(default=None, description="Label of the server") + server_description: str | None = Field(default=None, description="Description of the server") + tools: list[MCPListToolsTool] | None = Field(default=None, description="List of tools available from the connector") + registry_id: str | None = Field(default=None, description="ID of the registry this connector belongs to") + + def _generate_connector_id(self) -> str: + name = self.server_name if self.server_name is not None else self.identifier + if self.registry_id is not None: + return f"{self.connector_type.value}::{self.registry_id}::{name}" + return f"{self.connector_type.value}::{name}" + + @property + def connector_id(self) -> str: + return self.user_connector_id if self.user_connector_id is not None else self._generate_connector_id() + + +@json_schema_type +class ConnectorInput(BaseModel): + """Input for creating a connector. + + :param connector_type: Type of connector + :param connector_id: Unique identifier for the connector + :param url: URL of the connector + """ + + connector_type: ConnectorType = Field(default=ConnectorType.MCP) + connector_id: str | None = Field(default=None, description="Unique identifier for the connector") + url: str = Field(..., description="URL of the connector") + + +@json_schema_type +class ListConnectorsResponse(BaseModel): + """Response containing a list of connectors. + + :param data: List of connectors + """ + + data: list[Connector] + + +@json_schema_type +class ListToolsResponse(BaseModel): + """Response containing a list of tools. + + :param data: List of tools + """ + + data: list[MCPListToolsTool] + + +@runtime_checkable +class Connectors(Protocol): + @webmethod(route="/connectors", method="GET", level=LLAMA_STACK_API_V1ALPHA) + async def list_connectors( + self, + registry_id: str | None = None, + include_tools: bool = False, + ) -> ListConnectorsResponse: + """List all configured connectors. + + :param registry_id: (Optional) The ID of a registry to filter connectors for. + :param include_tools: (Optional) Whether to include tools in the response. + :returns: A ListConnectorsResponse. + """ + ... + + @webmethod(route="/connectors/{connector_id:path}", method="GET", level=LLAMA_STACK_API_V1ALPHA) + async def get_connector( + self, + connector_id: str, + ) -> Connector: + """Get a connector by its ID. + + :param connector_id: The ID of the connector to get. + :returns: A Connector. + """ + ... + + @webmethod(route="/connectors/{connector_id:path}/tools", method="GET", level=LLAMA_STACK_API_V1ALPHA) + async def list_connector_tools( + self, + connector_id: str, + ) -> ListToolsResponse: + """List tools available from a connector. + + :param connector_id: The ID of the connector to list tools for. + :returns: A ListToolsResponse. + """ + ... + + @webmethod( + route="/connectors/{connector_id:path}/tools/{tool_name:path}", method="GET", level=LLAMA_STACK_API_V1ALPHA + ) + async def get_connector_tool( + self, + connector_id: str, + tool_name: str, + ) -> MCPListToolsTool: + """Get a tool definition by its name from a connector. + + :param connector_id: The ID of the connector to get the tool from. + :param tool_name: The name of the tool to get. + :returns: A MCPListToolsTool. + """ + ... + + @webmethod(route="/connectors/registries", method="GET", level=LLAMA_STACK_API_V1ALPHA) + async def list_registries(self) -> ListRegistriesResponse: + """List all registries. + + :returns: A ListRegistriesResponse. + """ + ... + + @webmethod(route="/connectors/registries/{registry_id:path}", method="GET", level=LLAMA_STACK_API_V1ALPHA) + async def get_registry(self, registry_id: str) -> Registry: + """Get a registry by its ID. + + :param registry_id: The ID of the registry to get. + :returns: A Registry. + """ + ... diff --git a/src/llama_stack_api/datatypes.py b/src/llama_stack_api/datatypes.py index f024068f3..2fe26abec 100644 --- a/src/llama_stack_api/datatypes.py +++ b/src/llama_stack_api/datatypes.py @@ -111,6 +111,7 @@ class Api(Enum, metaclass=DynamicApiMeta): :cvar tool_groups: Tool group organization :cvar files: File storage and management :cvar prompts: Prompt versions and management + :cvar connectors: External connector management (e.g., MCP servers) :cvar inspect: Built-in system inspection and introspection """ @@ -136,6 +137,7 @@ class Api(Enum, metaclass=DynamicApiMeta): files = "files" prompts = "prompts" conversations = "conversations" + connectors = "connectors" # built-in API inspect = "inspect" diff --git a/src/llama_stack_api/registries.py b/src/llama_stack_api/registries.py new file mode 100644 index 000000000..63b7f3b38 --- /dev/null +++ b/src/llama_stack_api/registries.py @@ -0,0 +1,68 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# All rights reserved. +# +# This source code is licensed under the terms described in the LICENSE file in +# the root directory of this source tree. + + +from datetime import datetime +from enum import StrEnum +from typing import Literal + +from pydantic import BaseModel, Field + +from llama_stack_api.resource import Resource, ResourceType +from llama_stack_api.schema_utils import json_schema_type + + +@json_schema_type +class RegistryType(StrEnum): + """Type of registry.""" + + MCP = "mcp" + + +@json_schema_type +class Registry(Resource): + """A registry resource representing a registry of connectors. + + :param type: Type of resource, always 'registry' for registries + :param identifier: Unique identifier for this resource in llama stack + :param provider_resource_id: Unique identifier for this resource in the provider + :param provider_id: ID of the provider that owns this resource + :param type: Type of resource (e.g. 'model', 'shield', 'vector_store', etc.) + """ + + type: Literal[ResourceType.registry] = ResourceType.registry + registry_type: RegistryType = Field(default=RegistryType.MCP) + user_registry_id: str | None = Field(default=None, description="User-specified identifier for the registry") + url: str = Field(..., description="URL of the registry") + created_at: datetime = Field(..., description="Timestamp of creation") + updated_at: datetime = Field(..., description="Timestamp of last update") + + @property + def registry_id(self) -> str: + return self.user_registry_id if self.user_registry_id is not None else self.identifier + + +@json_schema_type +class ListRegistriesResponse(BaseModel): + """Response containing a list of registries. + + :param data: List of registries + """ + + data: list[Registry] + + +@json_schema_type +class RegistryInput(BaseModel): + """Input for creating a registry. + + :param url: URL of the registry + :param user_registry_id: User-specified identifier for the registry + """ + + url: str + user_registry_id: str | None = Field(default=None, description="User-specified identifier for the registry") + registry_type: RegistryType = Field(default=RegistryType.MCP) diff --git a/src/llama_stack_api/resource.py b/src/llama_stack_api/resource.py index dafdb28b0..95d7ff92d 100644 --- a/src/llama_stack_api/resource.py +++ b/src/llama_stack_api/resource.py @@ -20,6 +20,8 @@ class ResourceType(StrEnum): tool = "tool" tool_group = "tool_group" prompt = "prompt" + connector = "connector" + registry = "registry" class Resource(BaseModel):