---
title: "List custom providers"
method: GET
path: "/custom-providers"
tags: ["Custom Providers"]
---

# List custom providers

`GET /custom-providers`

## Request

- Base URL: `https://api.metorial.com`
- URL: `https://api.metorial.com/custom-providers`
- Auth: HTTP bearer

Returns a paginated list of custom providers.

## Query parameters

- `limit` number
- `after` string
- `before` string
- `cursor` string
- `order` 'asc' | 'desc'
- `status` union
  - 'active' | 'archived'
  - string[]
- `type` union
  - 'container' | 'function' | 'remote'
  - string[]
- `id` union
  - string
  - string[]
- `provider_id` union
  - string
  - string[]
- `search` string
- `created_at` object
  - `gt` string, date-time: Only include records after this timestamp for custom provider creation time
  - `lt` string, date-time: Only include records before this timestamp for custom provider creation time
- `updated_at` object
  - `gt` string, date-time: Only include records after this timestamp for custom provider last update time
  - `lt` string, date-time: Only include records before this timestamp for custom provider last update time

## Headers

- `Metorial-Version` string

## Response `200`

Successful response

- CustomProviderList
  - `items` Item4[], required
    - `object` 'custom_provider', required: String representing the object's type
    - `id` string, required: Unique custom provider identifier
    - `status` 'active' | 'archived' | 'deleted', required: Current status of the custom provider
    - `type` 'function' | 'container' | 'remote', required: Type of the custom provider
    - `name` string, required: Display name of the custom provider
    - `description` string, nullable, required: Brief description of the custom provider
    - `metadata` object, nullable, required: Custom key-value pairs for storing additional information
    - `draft` Draft, required
      - `object` 'custom_provider.draft#function' | 'custom_provider.draft.container' | 'custom_provider.draft.remote', required: String representing the draft's type
      - `container_image` ContainerImage2
        - `object` 'custom_provider.draft.container', required: String representing the container image draft type
        - `container_registry` string, required: URL of the container registry
        - `container_image_tag` string, required: Tag of the container image
        - `container_image` string, required: Name of the container image
      - `remote_mcp_server` RemoteMcpServer
        - `object` 'custom_provider.draft.remote', required: String representing the remote MCP server draft type
        - `url` string, required: URL of the remote MCP server
        - `transport` 'sse' | 'streamable_http' | 'stateless', required: Transport protocol for connecting to the remote MCP server
      - `config` Config2, required
        - `object` 'custom_provider.draft.config', required: String representing the custom provider config draft type
        - `schema` object, required
          - `type` 'json_schema', required
          - `schema` object, required: JSON Schema defining the configuration fields for the custom provider
        - `transformer` string, required: Optional jsonata transformer function for the configuration.
    - `scm_repo` object, nullable, required
      - `object` 'scm.repository', required
      - `id` string, required: Unique repository identifier
      - `provider` Provider3, required
        - `object` 'scm.provider', required
        - `type` 'github' | 'gitlab' | 'bitbucket', required: SCM provider type
        - `id` string, required: External provider identifier
        - `name` string, required: Repository name on the provider
        - `owner` string, required: Repository owner on the provider
      - `url` string, required: Repository URL
      - `is_private` boolean, required: Whether the repository is private
      - `default_branch` string, required: Default branch name
      - `created_at` string, date-time, required: Timestamp when created
    - `provider` object, nullable, required
      - `object` 'provider', required: String representing the object's type
      - `id` string, required: Unique provider identifier
      - `access` 'public' | 'tenant', required: Access level of the provider
      - `status` 'active' | 'archived' | 'deleted', required: Current status of the provider
      - `publisher` Publisher, required
        - `object` 'provider.publisher', required: String representing the object's type
        - `id` string, required: Unique publisher identifier
        - `name` string, required: Display name of the publisher
        - `description` string, nullable, required: Brief description of the publisher
        - `image_url` string, required: URL of the publisher logo
        - `created_at` string, date-time, required: Timestamp when created
        - `updated_at` string, date-time, required: Timestamp when last updated
      - `current_version` object, nullable, required
        - `object` 'provider.version', required: String representing the object's type
        - `id` string, required: Unique version identifier
        - `version` string, required: Version identifier string
        - `provider_id` string, required: Provider ID
        - `is_current` boolean, required: Whether this is the current version
        - `name` string, required: Version name
        - `description` string, nullable, required: Version description
        - `metadata` object, nullable, required: Custom key-value pairs for storing additional information
        - `specification_id` string, nullable, required: Specification ID
        - `created_at` string, date-time, required: Timestamp when created
        - `updated_at` string, date-time, required: Timestamp when last updated
      - `oauth` object, nullable, required
        - `status` 'enabled' | 'disabled', required: OAuth status
        - `callback_url` string, nullable, required: OAuth callback URL
        - `auto_registration` object, required
          - `status` 'supported' | 'unsupported', required: Auto-registration status
      - `identifier` string, required: Provider identifier
      - `name` string, required: Display name of the provider
      - `description` string, nullable, required: Brief description of the provider
      - `slug` string, required: URL-friendly identifier
      - `metadata` object, nullable, required: Custom key-value pairs for storing additional information
      - `created_at` string, date-time, required: Timestamp when created
      - `updated_at` string, date-time, required: Timestamp when last updated
    - `created_at` string, date-time, required: Timestamp when created
    - `updated_at` string, date-time, required: Timestamp when last updated
  - `pagination` object, required
    - `has_more_before` boolean, required
    - `has_more_after` boolean, required

## Other responses

- `400`: Invalid parameters or action
- `401`: Missing or invalid API key
- `403`: The key lacks permission for this resource
- `404`: No such resource
- `422`: Validation failed
- `429`: Rate limit exceeded
- `500`: Unexpected server error

---

[API](https://skmtc.dev/metorial/apis/metorial-api.md) - [All operations](https://skmtc.dev/metorial/apis/metorial-api/llms.txt) - [OpenAPI document](https://skmtc.dev/metorial/apis/metorial-api/revisions/10ccc89f3eac?raw)
