Connect
Two ways to connect. With a token: the endpoint address and the Authorization: Bearer <token> header (Claude Code, Claude Desktop, Le Chat, OpenAI API). With OAuth, nothing to copy: the address alone, then a sign-in with your VoxoLib account (claude.ai, ChatGPT). Pick your client.
In a terminal, a single command:
claude mcp add --transport http voxolib-stats https://mcp-dev2.agent.voxolib.com/mcp?lang=en \
--header "Authorization: Bearer <token>"Then, in Claude Code: “how many WebCallback calls yesterday, by status?”
Settings, then Connectors, then Add custom connector.
- URL
https://mcp-dev2.agent.voxolib.com/mcp- Header
Authorization: Bearer <token>
Claude Desktop also supports OAuth sign-in: leave the header empty and follow the claude.ai tab.
Settings, then Connectors, then Add custom connector. No token to enter.
- URL
https://mcp-dev2.agent.voxolib.com/mcp- OAuth client ID / secret
- Leave empty: the client registers itself automatically
- Click Connect: a
https://dev-app.voxolib.compage opens. - Sign in with your VoxoLib customer portal credentials.
- Grant read access to statistics (
stats:read). You return to claude.ai, connected.
Access can be revoked at any time from your customer portal or by removing the connector. Nothing but statistics is reachable.
Test environment: the https://dev-app.voxolib.com authorization server is not in service; OAuth only works on mcp.agent.voxolib.com.
Settings, then Connectors, then add a remote MCP server.
- URL
https://mcp-dev2.agent.voxolib.com/mcp?lang=en- Header
Authorization: Bearer <token>
In Responses or Agents, declare a tool of type mcp:
{
"type": "mcp",
"server_label": "voxolib-stats",
"server_url": "https://mcp-dev2.agent.voxolib.com/mcp?lang=en",
"headers": { "Authorization": "Bearer <token>" },
"require_approval": "never"
}Settings, then Connectors, then Create (developer mode; Plus, Pro, Business or Enterprise plans).
- MCP server URL
https://mcp-dev2.agent.voxolib.com/mcp- Authentication
- OAuth. Leave client ID and secret empty: the client registers itself automatically
- Create the connector: ChatGPT opens a
https://dev-app.voxolib.compage. - Sign in with your VoxoLib customer portal credentials.
- Grant read access to statistics (
stats:read). The connector is ready in your conversations.
Access can be revoked from your customer portal or by removing the connector. For the OpenAI API (Responses, Agents), see the OpenAI (API) tab.
Test environment: the https://dev-app.voxolib.com authorization server is not in service; OAuth only works on mcp.agent.voxolib.com.
To check the token and the connection without an MCP client. A 200 response with a session ID confirms both; a 401 says why.
curl -i -X POST https://mcp-dev2.agent.voxolib.com/mcp?lang=en \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1"}}}'Tools
Each tool queries the VoxoLib API with your token and returns JSON aggregated by day, week or month. Statuses are the API's own, with no reclassification. The server also publishes a usage guide for the agent (the protocol's instructions field, also exposed as the voxolib://guide resource): products, periods, meaning of fields and statuses, errors. The agent has nothing to guess.
| Tool | What you get | Parameters |
|---|---|---|
voxolib_wcb_calls | WebCallback calls by day, week or month, with the breakdown by status (answered, missed, voicemail, cancelled…). The statuses add up to the number of calls. | day or start_date + end_date, tz, group_by |
voxolib_did_calls | Inbound calls on your tracking numbers (Call Tracking) by day, week or month, with the same breakdown by status. | day or start_date + end_date, tz, group_by |
voxolib_dids | Number of tracking numbers on the account: total, active, suspended, other. | none |
Periods
day accepts today, yesterday, last7days, last30days or a YYYY-MM-DD date, and takes precedence over start_date + end_date (at most 180 days between the two dates, more if your account has a higher CDR limit: period.max_days states it in every response). group_by sets the granularity: day by default, week (weeks starting Monday) or month (calendar months), rows then carrying period_start and period_end. The tz time zone is an IANA name, Europe/Paris by default.
Agent language
Tool descriptions, the usage guide and error messages are sent to the agent in French by default. To receive them in English or Spanish, append ?lang=en or ?lang=es to the endpoint address (token-based clients: Claude Code, Le Chat, OpenAI API, curl). Figures and field names are the same in every language.
Authentication and data
The token
Two forms are accepted. The dedicated MCP token, of the form vxmcp_…, is issued by VoxoLib for this server only: it grants access to statistics alone and can be revoked without touching your other integrations. The API v2 Enhanced token works too:
token = api_public_key + "." + HMAC_SHA256(api_public_key + "cdr", client_secret_key)
OAuth sign-in
Clients that cannot send a header (claude.ai, ChatGPT, Claude Desktop in connector mode) go through the VoxoLib authorization server, https://dev-app.voxolib.com, discovered automatically from the /.well-known/oauth-protected-resource metadata. Authorization code flow with PKCE, dynamic client registration, a single scope: stats:read. You sign in with your customer portal account and give your consent once. The access token handed to the client is a dedicated vxmcp_… MCP token, limited to statistics, refreshed by the client and revocable from your customer portal.
What the server does
It verifies the token with the VoxoLib API when the session opens, then relays it on every tool call. It stores no secret and keeps no data. Without a token, or with a rejected one, the connection is refused with a 401 and a WWW-Authenticate header telling OAuth clients where to authorize. The server never sees your password: sign-in happens on the VoxoLib authorization server.
What comes out
Call counts and breakdowns by status, by day, week or month. Never a phone number, a recording or a transcript. API quotas apply: per account, 500 requests per hour by default on statistics.
Status and version
- Service
- reading
/healthz… - Server version
- 0.3.5
- Transport
- MCP Streamable HTTP, sessions via the
Mcp-Session-Idheader
Machine-readable
- Server card, MCP registry format
- /.well-known/mcp/server.json
- OAuth protected resource (RFC 9728)
- /.well-known/oauth-protected-resource
- Health
- /healthz
Help
With OAuth (claude.ai, ChatGPT), there is nothing to request: your customer portal credentials are enough, and access is revoked from that portal. For an MCP token to copy (Claude Code, Le Chat, OpenAI API), VoxoLib creates it on your customer record: to obtain, renew or revoke it, contact your usual VoxoLib contact. A question about the figures returned: they are identical to those of the API v2 and of your customer portal, given the same period and time zone.