VoiceGateway // DOCS

Provider Tools

These five tools manage voice AI providers on the gateway. They allow agents to list, inspect, test, add, and delete providers.

Provider Tools

These five tools manage voice AI providers on the gateway. They allow agents to list, inspect, test, add, and delete providers.

list_providers

List every provider configured on the gateway, including both YAML-defined providers and providers added via the API or MCP.

Destructive: No

Input Schema

No parameters required.

JSON
{}

Output

FieldTypeDescription
providersarrayList of provider objects.
countintegerTotal number of providers.

Each provider object:

FieldTypeDescription
provider_idstringUnique identifier (e.g., "deepgram").
provider_typestringThe provider implementation type.
sourcestring"yaml" (config file) or "db" (added via API).
enabledbooleanWhether the provider has valid credentials.
api_key_maskedstring | nullMasked API key (e.g., "sk-a...1f2b").
base_urlstring | nullCustom base URL, if configured.
typestring"cloud" or "local".

Example

Invocation:

JSON
{
  "name": "list_providers",
  "arguments": {}
}

Response:

JSON
{
  "providers": [
    {
      "provider_id": "deepgram",
      "provider_type": "deepgram",
      "source": "yaml",
      "enabled": true,
      "api_key_masked": "sk-a...1f2b",
      "base_url": null,
      "type": "cloud"
    },
    {
      "provider_id": "whisper",
      "provider_type": "whisper",
      "source": "yaml",
      "enabled": true,
      "api_key_masked": null,
      "base_url": null,
      "type": "local"
    }
  ],
  "count": 2
}

get_provider

Return full details for one provider, including how many models depend on it. The API key is always masked.

Destructive: No

Input Schema

ParameterTypeRequiredDescription
provider_idstringYesThe ID of the provider to fetch.

Output

Same fields as list_providers entries, plus:

FieldTypeDescription
model_countintegerNumber of models registered for this provider.

Errors

CodeWhen
PROVIDER_NOT_FOUNDNo provider with the given ID exists.

Example

Invocation:

JSON
{
  "name": "get_provider",
  "arguments": { "provider_id": "deepgram" }
}

Response:

JSON
{
  "provider_id": "deepgram",
  "provider_type": "deepgram",
  "source": "yaml",
  "enabled": true,
  "api_key_masked": "sk-a...1f2b",
  "base_url": null,
  "type": "cloud",
  "model_count": 2
}

test_provider

Test connectivity to a provider by calling its health_check() method. This makes a real network request to the provider's API to verify credentials and reachability.

Destructive: No

Input Schema

ParameterTypeRequiredDescription
provider_idstringYesThe ID of the provider to test.

Output

FieldTypeDescription
statusstring"ok" or "failed".
latency_msintegerRound-trip time of the health check in milliseconds.
messagestring"reachable" on success, or an error description.

Errors

CodeWhen
PROVIDER_NOT_FOUNDNo provider with the given ID exists.

Example

Invocation:

JSON
{
  "name": "test_provider",
  "arguments": { "provider_id": "deepgram" }
}

Response (success):

JSON
{
  "status": "ok",
  "latency_ms": 142,
  "message": "reachable"
}

Response (failure):

JSON
{
  "status": "failed",
  "latency_ms": 5012,
  "message": "TimeoutError: Connection timed out"
}

add_provider

Register a new voice AI provider. The gateway validates the credentials by running a health check before saving (for cloud providers). After adding, use register_model to add specific models from this provider.

Destructive: No (creates a new resource)

Input Schema

ParameterTypeRequiredDefaultDescription
provider_idstringYesUnique identifier, typically the provider name in lowercase.
provider_typestringYesOne of: deepgram, openai, anthropic, groq, cartesia, elevenlabs, assemblyai, ollama, whisper, kokoro, piper.
api_keystringNo""API key from the provider console. Empty for local providers.
base_urlstring | nullNonullCustom base URL (e.g., self-hosted Ollama).

Output

FieldTypeDescription
provider_idstringThe created provider ID.
provider_typestringThe provider type.
api_key_maskedstring | nullMasked API key.
base_urlstring | nullThe base URL, if set.
sourcestringAlways "db".
createdbooleanAlways true.

Errors

CodeWhen
PROVIDER_ALREADY_EXISTSA YAML-defined provider has the same ID.
VALIDATION_ERRORUnknown provider_type, or storage is disabled.
PROVIDER_TEST_FAILEDThe health check failed (credentials invalid or unreachable).

Example

Invocation:

JSON
{
  "name": "add_provider",
  "arguments": {
    "provider_id": "deepgram-staging",
    "provider_type": "deepgram",
    "api_key": "sk-your-staging-key"
  }
}

Response:

JSON
{
  "provider_id": "deepgram-staging",
  "provider_type": "deepgram",
  "api_key_masked": "sk-y...key",
  "base_url": null,
  "source": "db",
  "created": true
}

delete_provider

Delete a managed (GUI/API-added) provider. This is a destructive operation that uses the two-phase confirmation pattern.

Destructive: Yes

Input Schema

ParameterTypeRequiredDefaultDescription
provider_idstringYesThe ID of the provider to delete.
confirmbooleanNofalseMust be true to actually delete. Default returns a preview.

Output (preview, confirm=false)

The tool raises a CONFIRMATION_REQUIRED error containing:

FieldTypeDescription
provider_idstringThe provider to be deleted.
models_affectedarrayList of model IDs that reference this provider.
projects_affectedarrayList of project IDs that use this provider via stacks.

Output (confirmed, confirm=true)

FieldTypeDescription
actionstring"deleted".
provider_idstringThe deleted provider ID.
models_affectedarrayModels that were affected.
projects_affectedarrayProjects that were affected.

Errors

CodeWhen
PROVIDER_NOT_FOUNDNo managed provider with the given ID.
READ_ONLY_RESOURCEThe provider is defined in YAML (cannot delete).
CONFIRMATION_REQUIREDCalled without confirm=true (returns preview).

Example: Preview

Invocation:

JSON
{
  "name": "delete_provider",
  "arguments": { "provider_id": "deepgram-staging", "confirm": false }
}

Response (error envelope):

JSON
{
  "error": {
    "code": "CONFIRMATION_REQUIRED",
    "message": "Deleting provider 'deepgram-staging' will impact 1 model(s) and 0 project(s). Call again with confirm=True to proceed.",
    "details": {
      "provider_id": "deepgram-staging",
      "models_affected": ["deepgram-staging/nova-3"],
      "projects_affected": []
    }
  }
}

Example: Confirm

Invocation:

JSON
{
  "name": "delete_provider",
  "arguments": { "provider_id": "deepgram-staging", "confirm": true }
}

Response:

JSON
{
  "action": "deleted",
  "provider_id": "deepgram-staging",
  "models_affected": ["deepgram-staging/nova-3"],
  "projects_affected": []
}

On this page