Skip to main content

How sign-in works

Connectors such as Claude and ChatGPT use OAuth 2.1 with the protections MCP requires:
  • Dynamic client registration: the client registers itself, so there is no shared client secret to hand out.
  • PKCE (S256), required: an intercepted authorization code is useless to anyone else.
  • Exact redirect matching: the server only sends the browser back to the URL the client registered. The sign-in page shows which application is asking and where you will be sent.
  • Short-lived tokens: access tokens last one hour and refresh silently. Refresh tokens rotate on every use, and a replayed refresh token revokes the whole session.
The client never receives your API key. During sign-in, Ringg checks the key, encrypts it and keeps it on the server; the client gets an opaque token that stands in for it. A client that sends the API key as a bearer token is treated like a direct API call from that machine.

What Ringg stores

The MCP server does not log API keys, tokens, or the contents of tool results.

Revoking access

  • Remove the connector in Claude or ChatGPT: its token stops working within an hour.
  • Regenerate the API key under Settings → API key: every connector, script and integration using the old key stops at once. This is the fastest way to cut off a lost laptop or an unknown integration.

Good practice

  • Every tool acts with the key’s full permissions, so connect only a workspace you are willing to delegate.
  • Keep tool-call confirmations on in your client, above all for place_call.
  • Don’t paste API keys or phone numbers into chats you will share or screenshot; the server can’t mask what you type.
  • Transcripts are data, not instructions. If a caller says “ignore your rules”, the model should not obey, but the model you connect decides. Prefer clients that confirm write actions.

FAQ

Any MCP client using Streamable HTTP. Tested: Claude.ai and Claude Desktop (OAuth), ChatGPT connectors in developer mode (OAuth), Claude Code and Cursor (bearer API key), and the official MCP Python and TypeScript SDKs.
Older keys (ringg_live_ or a plain UUID) still work. The dashboard shows a key only once, so use the copy from your secret manager; if someone regenerated the key, the old one no longer works. After several wrong attempts the link stops working; start again from the client.
The chosen from_number_id can’t place live calls: usually a Ringg test number, or your own trunk not yet set up for outbound. Ask the client which numbers are usable for live calls, or check Numbers in the dashboard.
Each person should connect their own client. A workspace has one API key, so everyone who connects acts with it.
No. Test by creating a dedicated agent, calling your own phone and reading the transcript.
Questions or issues: admin@ringg.ai.

Next steps

Store and rotate the API key

Keep the key the connectors depend on out of chats and repositories.

Security guidelines

Protect keys, webhooks and call data across your whole integration.