Let me answer each point in turn:
On trust: There are two parties.
First, the server: to use the hosted version you’re trusting that it holds your VoIP.ms API credential and handles it as described – encrypted at rest, only ever used server-side, never handed to the model. That’s the tradeoff of a hosted service. What the design does is shrink what you’re trusting it with: the credential never touches the AI or the AI vendor, and you can revoke the server’s access at any time.
Second, the AI agent (Claude, ChatGPT, etc.): it holds the OAuth tokens the server issues, so you’re trusting your MCP client to store those. But those tokens are short-lived, scoped to only the areas you granted, and revocable, so even in the worst case a leaked token is bounded in what it can do and how long it works, and it’s never your actual VoIP.ms credential. That’s a very different exposure from handing the agent the real key.
So the trust is required, but it’s split, bounded, and inspectable rather than “hand over the keys and hope.”
If even that bounded trust is more than you want, that’s completely fair, and it’s exactly why we’re considering a local MCP server version, where your voip.ms API credentials never touch our infrastructure.
On “what does this do that a model with CLI + API access can’t?” – here’s the key difference: to give a model CLI or direct API access, you have to put your VoIP.ms API credential somewhere the model can read it – a shell config, an env var, a file it can cat, or pasted straight into the prompt. At that point the model (and its vendor) has your full-access, long-lived credential, with no scoping and nothing to revoke short of rotating the key. That’s the thing the MCP server is designed to avoid: the credential lives server-side and the model only ever sees short-lived, scoped, revocable tokens – it never handles the key itself.
On top of that, the server packages the plumbing you’d otherwise build and maintain yourself: the auth/consent layer, per-area scoping and revocation, human-readable resolution of raw codes (POP numbers, routing strings, plan IDs), guardrails and confirmations on destructive or money-moving actions, and one consistent tool contract across Claude, ChatGPT, and other MCP clients without per-client glue.