← All posts

Your AI agent no longer needs your API key

HonkIO now runs a hosted MCP endpoint with a sign-in flow. Your agent asks for permission, you approve exactly what it can do, and you can take it back from your dashboard. The key never leaves HonkIO.

Until now, connecting HonkIO to an AI agent meant pasting a live API key into a config file. That key could do everything your account could do, it lasted until you noticed it was still there, and taking it back meant revoking it and reissuing it everywhere else you had used it.

Agents also lose things. A key in a config file gets committed, shared in a screenshot, or synced to a machine you had forgotten about.

So we built it the other way round. Point your agent at our hosted endpoint with no key at all, and it asks you for permission instead.

Signing in

In Claude Code, add the endpoint and run /mcp:

sh
claude mcp add --transport http honkio https://mcp.honkio.ca/mcp

# then, inside Claude Code
/mcp

A page opens on honkio.ca. It tells you which agent is asking, what it wants to be able to do, and where it will send you back to afterwards. You choose live or test mode, then approve or refuse. Nothing is granted until you press the button, and the agent never sees your API key.

What the agent can do, and what it cannot

Approval is not all or nothing. An agent asks for specific permissions and gets only those:

  • Reading messages and their delivery status, separately from sending them
  • Searching and buying Canadian numbers, separately from listing the ones you already hold
  • Checking CASL consent, separately from recording or revoking it
  • Phone verification, webhooks, account details, usage and pricing

Two things no agent can ever be granted. It cannot create, rotate or revoke API keys, so it can never mint itself a credential that outlives the connection you approved. And it cannot run a right-to-erasure request, because deleting a subscriber's history on a model's initiative is not something we are willing to make possible.

You also choose the mode when you approve. In test mode every tool works, messages come back as delivered, and nothing is sent or charged, so an agent can explore the whole surface for free before you trust it with a live account.

Taking it back

Every connection appears on your API keys page, named after the agent that asked for it. Revoking it there cuts the agent off at once. Connections also expire ninety days after you approve them, so an agent you set up and forgot about stops working on its own instead of keeping access for good.

For developers

The endpoint is a Streamable HTTP MCP server at mcp.honkio.ca/mcp. It speaks both the current protocol revision and the older handshake, so clients on either side of that change work without a flag. Discovery is standard: an unauthenticated request answers with the location of our authorization server, and your client takes it from there.

sh
curl -s https://mcp.honkio.ca/.well-known/oauth-protected-resource/mcp

All 41 tools carry a title and a safety annotation, so a client can tell reading your message history apart from buying a phone number before it calls anything. Sending an SMS and provisioning a number are marked as reaching the outside world; releasing a number and revoking consent are marked as irreversible.

API keys still work exactly as they did, both on the hosted endpoint and through the npm package that runs on your own machine. If your setup works today, nothing about it changed.

The compliance rules have not moved either. An agent sending without consent on file is refused the same way curl is, and the daily sending limits apply per account, not per agent. Signing in changes who holds the credential, not what the rules are.