VOICEGW_MCP_ADMIN=1.
Observability
get_health
No arguments. Never errors, so it’s a cheap first call. Returnsversion, uptime_seconds, status (always "ok"), db_configured, project_count, provider_count, and observability ({latency_tracking, cost_tracking, request_logging} flags from voicegw.yaml).
get_costs
Args:period ("today" default, "week", "month", "all"), project (optional filter). Returns total_usd, by_provider and by_model (each keyed dict of {cost, requests}), and by_project (populated only when project is omitted). Derived from the SQLite request log; every value is 0 if storage is disabled.
get_latency_stats
Args:period ("today" default, "week", "month"), project, modality ("stt" | "llm" | "tts"). Returns overall and by_model, each carrying ttfb_percentiles / latency_percentiles (a {p50, p95, p99}-shaped dict; the exact percentiles come from latency.percentiles in voicegw.yaml) plus avg_ttfb_ms, avg_latency_ms, request_count.
get_logs
Args:project, modality, model_id, status ("success" | "error" | "fallback"), limit (1-1000, default 50). Returns up to limit request rows, newest first, each with timestamp, project, modality, model_id, provider, cost_usd, pricing_source, ttfb_ms, total_latency_ms, status, error_message, plus rating fields (rated_price_usd, rate_rule; see Rating) and session_id/tenant_id/agent_id.
Models
list_models
Args:modality, provider_id, enabled_only (default true). Returns models (each {model_id, modality, provider_id, model_name, default_voice, source: "yaml"|"db", enabled}, plus display_name/default_language on DB-managed rows) and count.
Projects
A project is an attribution and cost-control scope, not a routing config: VoiceGateway meters the STT/LLM/TTS instances your agent attaches, so a project carries no model assignment. See Projects for the full field reference and the budget-enforcement caveat.list_projects / get_project
list_projects takes no arguments; get_project requires project_id (raises PROJECT_NOT_FOUND if unknown). Both return the project’s config plus budget_status ("ok" / "warning" at ≥80% of daily_budget / "exceeded" at ≥100%, computed from today’s recorded spend) and today_spend/today_requests. get_project adds week_spend/week_requests.
create_project
Args:project_id, name, description (default ""), daily_budget (default 0, unlimited), budget_action ("warn" default, "throttle", "block"), tags. budget_action is stored and returned, but doesn’t change gateway behavior by itself: see the budget caveat. Raises PROJECT_ALREADY_EXISTS or VALIDATION_ERROR (cost tracking disabled).
Rate card
See Rating for what a rate card is and howcost_plus / fixed rules resolve.
get_rate_card
No arguments. Returnsdefault_markup, the merged effective rules, and the raw DB overrides (each carries a rule_id).
set_rate_card_override
Args: a scope (modality, provider, model, plan, each defaulting to "*") plus either markup (cost-plus multiplier) or fixed + unit. Returns rule_id, created. Raises VALIDATION_ERROR if cost tracking is disabled or the scope/price is invalid.