streamable-httpupdated 2mo ago
Measure the network path quality to a voice/VoIP destination and get an estimated MOS (1β5) β live, from an API. Built for AI voice agents. Available as REST and as an MCP tool, paid per call via x402 (USDC on Base).
What can you do with voice quality api?
Voice Quality API
Measure the network path quality to a voice/VoIP destination and get an estimated MOS (1β5) β live, from an API. Built for AI voice agents. Available as REST and as an MCP tool, paid per call via x402 (USDC on Base).
π Live: voice-quality.com Β· REST
api.voice-quality.com Β· MCP mcp.voice-quality.com
Try it
curl https://api.voice-quality.com/health # {"status":"ok"}
curl -s https://api.voice-quality.com/v1/voice-quality \
-H 'content-type: application/json' \
-d '{ "target": "your-voice-endpoint.example", "target_port": 10000, "codec": "G711" }'
You get an estimated MOS + live RTT / jitter / packet loss. Point it at an
endpoint that answers media β your own voice infra, or a tiny reflector you run
(probe-agent/cmd/reflector). 20 free/day;
beyond that it's pay-per-call via x402 (no account needed).
{
"request_id": "vq_2ibc6qqq",
"target": "your-voice-endpoint.example",
"codec": "G711",
"measured_at": "2026-07-01T10:15:13.795Z",
"summary": { "mos_estimate": 4.38, "mos_class": "excellent", "r_factor": 91.8 },
"by_probe": [ /* per-probe metrics + R-factor + MOS */ ],
"methodology": {
"model": "ITU-T G.107 E-model",
"confidence": "estimate",
"assumptions": ["owd = rtt/2 (symmetric path)", "adaptive jitter buffer = 2x jitter"]
},
"credits_used": 0
}
Why it exists
Free network-measurement platforms (Globalping, RIPE Atlas) measure ping/traceroute/DNS/HTTP β they do not measure RTP media quality or estimate MOS. The tools that do (Cyara, Spearline) are enterprise sales motions. This fills the gap: voice path quality as a clean, self-serve, agent-native API β check it before you route a call, or monitor the path to your voice endpoints.
Trustworthy by design
- Honest metric. An objective G.107 E-model estimate from measured network
metrics β never sold as a perceptual (PESQ/POLQA) score. Every response carries
methodology.confidence: "estimate"and its assumptions. - Verified constants. The codec
Ie/Bplvalues are verified against ITU-T G.113 (09/2024), App. I, Table I.4 β rows matched to the probe profile (no PLC, no VAD/DTX). Not "representative"; cited. - SSRF-guarded. ~36.7% of public MCP servers ship SSRF issues β this one blocks internal/private targets by default (orchestrator and probe), plus a per-target allowlist and rate limit.
- Hardened. TLS/mTLS on the probe channel, non-root containers,
pnpm auditclean, structured machine-readable errors,Idempotency-Key, Prometheus/metrics, per-identity API keys.
Pricing
| Tier | What you get |
|---|---|
| Free | 20 measurements/day per identity (credits_used: 0). |
| Pay-per-call | Beyond that, a sub-centβcents micropayment per call via x402 (USDC on Base). Unpaid β 402 with the payment requirements; pay and retry. Agents pay transparently. |
Agent-native (MCP + x402)
One MCP tool, measure_voice_quality. The server wraps the REST API and pays
x402 transparently from a configured wallet once the free tier is exhausted β no
human in the loop.
{
"mcpServers": {
"voice-quality": {
"url": "https://mcp.voice-quality.com/",
"env": { "MCP_CLIENT_PRIVATE_KEY": "0xβ¦" } // optional; only for paid calls
}
}
}
Architecture
[AI agent / dev] ββ(HTTP + x402 / MCP)βββΊ [Orchestrator] βββΊ [E-model (G.107): R β MOS]
ββββΊ [regional probe] ββ(emulated UDP/RTP)βββΊ target
| Component | Stack | Role |
|---|---|---|
Orchestrator (packages/orchestrator) |
TypeScript + Hono | REST API, E-model, x402 paywall, AUP, rate limit, probe dispatch |
MCP server (packages/mcp-server) |
TypeScript + MCP SDK | measure_voice_quality; wraps REST + transparent x402 |
Probe agent (probe-agent) |
Go | UDP/RTP emulation + RFC 3550 metrics; cheap regional VPS |
Shared (packages/shared) |
TypeScript | Zod schemas, types, G.113 codec constants |
Self-host
cp .env.example .env # fill in values
docker compose up --build -d # orchestrator + MCP + probe + reflector + landing
curl localhost:8080/health
Full deploy (public HTTPS via Caddy or Cloudflare Tunnel, regional probes with
mTLS): docs/deploy.md. Going to production (mainnet x402,
codec verification, registries): docs/go-live.md.
Docs
Methodology Β· OpenAPI Β· Deploy Β· Go-live Β· Discovery & registries
The MOS is an objective estimate from network conditions, not a guarantee of call quality. Maintained actively.
Install
Add voice quality api to your client. Pick the one you use.
claude mcp add --transport http voice-quality-api https://mcp.voice-quality.com/codex mcp add voice-quality-api --url https://mcp.voice-quality.com/{
"mcpServers": {
"voice-quality-api": {
"url": "https://mcp.voice-quality.com/"
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
{
"servers": {
"voice-quality-api": {
"type": "http",
"url": "https://mcp.voice-quality.com/"
}
}
}Add to `.vscode/mcp.json` in your workspace.
{
"mcpServers": {
"voice-quality-api": {
"url": "https://mcp.voice-quality.com/"
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"voice-quality-api": {
"serverUrl": "https://mcp.voice-quality.com/"
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
Score
39 / 100
Incomplete
- Documentation25/25
- Maintenance16/25
- Trust6/20
- Capability0/15
- Install experience12/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 61 days ago
- Has a release history
- Repository is not archived
- No licence detected
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 0 tool(s) documented
- Provides prompt templates
- Provides resources
- 6 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint β no local install
Version history
| Versions | Published |
|---|---|
| 0.1.0Latest | Jul 1, 2026 |