Observability Tools
These five read-only tools provide visibility into the gateway’s health, provider status, costs, latency, and request logs. They never modify state and are safe to call at any time.get_health
Return the overall health and identity of the VoiceGateway instance. Use this as a cheap first call to verify the gateway is running before using other tools. Destructive: NoInput Schema
No parameters required.Output
| Field | Type | Description |
|---|---|---|
version | string | VoiceGateway version (e.g., "0.1.0"). |
uptime_seconds | float | Seconds since the MCP server started. |
status | string | Always "ok". |
db_configured | boolean | Whether SQLite storage is enabled. |
project_count | integer | Number of configured projects. |
provider_count | integer | Number of configured providers. |
observability | object | Flags: latency_tracking, cost_tracking, request_logging. |
Example
Invocation:get_provider_status
Return the configuration status of providers. Reports whether each provider has credentials, its type (cloud/local), and model count. Does NOT make live network calls — usetest_provider for a connectivity check.
Destructive: No
Input Schema
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
provider_id | string | null | No | null | If set, returns only that provider. Otherwise returns all. |
Output
| Field | Type | Description |
|---|---|---|
providers | object | Map of provider ID to status object. |
providers[id].configured | boolean | Whether the provider has credentials or is local. |
providers[id].type | string | "cloud" or "local". |
providers[id].model_count | integer | Number of models registered for this provider. |
providers[id].has_api_key | boolean | Whether an API key is set. |
provider_id is specified and not found, providers is empty and missing contains the requested ID.
Example: All providers
Invocation:Example: Single provider
Invocation:get_costs
Return cost data for a period, optionally filtered by project. Reflects actual invocations recorded in the SQLite request log. Destructive: NoInput Schema
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
period | string | No | "today" | One of: "today", "week", "month", "all". |
project | string | null | No | null | Filter to a specific project. |
Output
| Field | Type | Description |
|---|---|---|
period | string | The requested period. |
project | string | null | The project filter, if any. |
total_usd | float | Total cost in USD. |
by_provider | object | Cost and request count per provider. |
by_model | object | Cost and request count per model. |
by_project | object | Cost and request count per project (when unfiltered). |
Example
Invocation:get_latency_stats
Return latency statistics computed from the request log. Provides overall percentiles (P50, P95, P99) and per-model breakdowns. Destructive: NoInput Schema
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
period | string | No | "today" | One of: "today", "week", "month". |
project | string | null | No | null | Filter by project. |
modality | string | null | No | null | Filter by "stt", "llm", or "tts". |
Output
| Field | Type | Description |
|---|---|---|
period | string | The requested period. |
project | string | null | The project filter. |
modality | string | null | The modality filter. |
overall | object | p50_ms, p95_ms, p99_ms, avg_ms, request_count. |
by_model | object | Per-model stats: avg_ttfb_ms, avg_latency_ms, request_count. |
Example
Invocation:get_logs
Return recent request logs with optional filters. Each row is a record from the gateway’s SQLite log. Destructive: NoInput Schema
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
project | string | null | No | null | Filter by project ID. |
modality | string | null | No | null | Filter by "stt", "llm", or "tts". |
model_id | string | null | No | null | Filter by exact model ID (e.g., "openai/gpt-4o-mini"). |
status | string | null | No | null | Filter by "success", "error", or "fallback". |
limit | integer | No | 50 | Max rows to return (1—1000). |
Output
A list of log record dicts, each containing:| Field | Type | Description |
|---|---|---|
timestamp | float | Unix timestamp. |
project | string | Project ID. |
modality | string | "stt", "llm", or "tts". |
model_id | string | Full model identifier. |
provider | string | Provider name. |
cost_usd | float | Cost of this request. |
pricing_source | string | null | Source that priced this row (e.g. "voice-prices@0.0.8" for cloud models or "voicegateway-local" for self-hosted). Empty string when the model is unknown (unpriced). Persisted on the requests table; see src/voicegateway/storage/sqlite.py. |
ttfb_ms | float | Time to first byte in milliseconds. |
total_latency_ms | float | Total latency in milliseconds. |
status | string | "success", "error", or "fallback". |
error_message | string | null | Error details if status is "error". |