Comma Agents
@comma-agents/daemonProtocol

List Providers

Discover known providers, their auth status, and the models they expose.

Request the set of known providers along with per-provider auth status and model metadata. Provider data comes from a bundled catalog snapshot, with optional live discovery for providers that support it.

Request: list_providers

{
  "type": "list_providers",
  "requestId": "providers-1",
  "scope": "my-strategy",
  "live": true
}
FieldTypeRequiredDescription
type"list_providers"yesMessage type discriminator
requestIdstringnoEchoed on the response for correlation
scopestringnoStrategy scope for credential resolution. When provided, the daemon checks strategy-scoped credentials first before falling back to environment variables and the global scope.
livebooleannoWhen true, the daemon attempts live model discovery for providers that support it (currently Ollama and GitHub Copilot). Providers without a live lister always return catalog data. Defaults to false.

Response: provider_list

{
  "type": "provider_list",
  "providers": [
    {
      "id": "openai",
      "name": "OpenAI",
      "authStatus": "configured",
      "modelsSource": "catalog",
      "isCustom": false,
      "models": [
        {
          "id": "gpt-4o",
          "name": "GPT-4o",
          "contextWindow": 128000,
          "capabilities": { "tools": true, "vision": true }
        }
      ]
    },
    {
      "id": "ollama",
      "name": "Ollama",
      "authStatus": "none",
      "modelsSource": "live",
      "fetchedAt": "2025-01-15T10:30:00.000Z",
      "isCustom": false,
      "models": [
        { "id": "llama3.1:8b", "name": "llama3.1:8b" }
      ]
    }
  ],
  "requestId": "providers-1",
  "ts": "2025-01-15T10:30:05.000Z"
}
FieldTypeDescription
type"provider_list"Message type discriminator
providersProviderInfo[]Alphabetically sorted list of known providers
requestIdstring?Echoed from the request
tsstringISO-8601 timestamp

ProviderInfo

FieldTypeDescription
idstringCanonical provider id (matches models.dev keys, e.g. "openai", "github-copilot")
namestringHuman-friendly display name
authStatus"none" | "configured""configured" means a credential is resolvable (env var, strategy scope, or global scope). Not validated against the provider's API.
modelsModelInfo[]Normalized model metadata. Empty array when nothing is known.
modelsSource"catalog" | "live" | "merged" | "error"Provenance of the models list
fetchedAtstring?ISO-8601 timestamp of the live fetch, when applicable
errorstring?Error message when live discovery failed and the response fell back to catalog data
isCustombooleantrue when the provider was added via registerProvider()

ModelInfo

FieldTypeDescription
idstringModel identifier (used in provider/model strings)
namestring?Display name
familystring?Model family (e.g. "gpt", "claude")
contextWindownumber?Total context window in tokens
maxInputTokensnumber?Maximum input tokens
maxOutputTokensnumber?Maximum output tokens
knowledgeCutoffstring?Knowledge cutoff date (e.g. "2024-06")
releaseDatestring?Release date
lastUpdatedstring?Last update date
status"alpha" | "beta" | "deprecated"?Release status, when known
modalities{ input?: Modality[]; output?: Modality[] }?Supported input/output modalities
capabilitiesModelCapabilities?Feature flags (see below)
costModelCost?Pricing metadata (see below)

Modality is one of "text", "image", "audio", "video", "pdf".

ModelCapabilities

FieldTypeDescription
toolsboolean?Supports tool calls
reasoningboolean?Dedicated reasoning model
visionboolean?Accepts image input
attachmentboolean?Accepts file attachments
structuredOutputboolean?Supports structured output / JSON mode

ModelCost

All values are USD per million tokens unless the provider specifies otherwise.

FieldTypeDescription
inputnumber?Input token cost
outputnumber?Output token cost
reasoningnumber?Reasoning token cost
cacheReadnumber?Cached input cost
cacheWritenumber?Cache write cost

Data Sources

Provider data is merged from up to three sources:

  • Catalog — a bundled snapshot of the models.dev catalog covering 50+ providers. Refreshed on disk every 24 hours.
  • Built-in overrides — hardcoded entries for providers that need custom package resolution or live discovery (Ollama, Deepseek, GitHub Copilot).
  • Live listers — runtime discovery for Ollama (local /api/tags) and GitHub Copilot (Copilot API). Only invoked when live: true is set on the request.

When live discovery fails, the daemon silently falls back to catalog data and sets the error field on the affected provider.

See Also

  • get_available_models — returns models grouped by model ID with credential availability. Better suited for UIs that present a model-first picker rather than a provider-first view.

On this page