> ## Documentation Index
> Fetch the complete documentation index at: https://docs.voiceaiwrapper.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Sign-in and permissions

> How AI apps sign in to VoiceAIWrapper, what they can access, and how to revoke access.

## How sign-in works

The MCP server uses OAuth 2.1. You never share a password or API key with the AI app.

**1. The AI app sends you to VoiceAIWrapper**

When you click **Connect**, the AI app opens VoiceAIWrapper's sign-in page.

**2. You sign in**

Use your normal VoiceAIWrapper login: email and password, a one-time code, or Google. New users can sign up here.

**3. You choose an organization**

Pick the organization the AI app will work in. You can only pick organizations you are a member of.

**4. You review and allow**

The page lists what the AI app will be able to do. Click **Allow** and you are taken back to the AI app, now connected.

## Scopes

| Scope | What it allows |
| - | - |
| `agents.read` | See your agents, widgets and calls |
| `agents.write` | Create and change agents and widgets, and connect phone numbers |

Both are asked for by default. Each tool needs one of them; see [Tools overview](/documentation/mcp/tools/overview.md). If a tool needs a scope the connection doesn't have, the tool asks you to connect again and allow it.

## One organization per AI app

A connection works in exactly one organization.

* To switch organizations, connect again from the AI app and choose the other one. The old connection ends at that moment, so the AI app never works in two organizations at once.
* Anything the AI app creates belongs to that organization and is visible to its members in the VoiceAIWrapper app.
* Every agent id, build id and phone number the tools take is checked against the connected organization. Anything from another organization is treated as not found.

## What the AI app can't see

* Caller phone numbers and names
* Call transcripts and recordings
* Call costs, prices and billing details
* API keys, provider keys and other organizations

## Session length

| | |
| - | - |
| Access token | 1 hour |
| Refresh token | 30 days, replaced each time it is used |

The AI app refreshes its access in the background. If you don't use the connection for 30 days, you will be asked to connect again.

## Revoking access

A connection ends when:

* you click **Disconnect** in **Organization settings → Connected apps**,
* you connect the same AI app to another organization,
* you reset your password,
* your account is deactivated, or
* you are removed from the organization.

Access stops at once: every tool call checks that the connection is still live. Nothing the AI app made is deleted.

> [!NOTE]
>
> **Connected apps** shows only your own connections in the organization, with when each was connected and last used. Other members' connections are not shown to you.

## For developers: OAuth endpoints

The server follows the [MCP authorization spec](https://modelcontextprotocol.io/specification/latest/basic/authorization). Supported AI apps discover everything below on their own; you don't need to configure it.

| | URL |
| - | - |
| MCP server (resource) | `https://api.voiceaiwrapper.app/mcp` |
| Protected resource metadata (RFC 9728) | `https://api.voiceaiwrapper.app/.well-known/oauth-protected-resource/mcp` |
| Authorization server metadata (RFC 8414) | `https://api.voiceaiwrapper.app/.well-known/oauth-authorization-server` |
| Authorize | `https://api.voiceaiwrapper.app/oauth/authorize` |
| Token | `https://api.voiceaiwrapper.app/oauth/token` |
| Revoke | `https://api.voiceaiwrapper.app/oauth/revoke` |

* Authorization code grant with **PKCE (S256)** is required.
* Every authorization request must carry the `resource` parameter (RFC 8707) set to the MCP server URL. Tokens are only accepted by the MCP server they were issued for.
* Clients identify themselves with a **Client ID Metadata Document** (CIMD). Only registered AI apps are accepted.
* Dynamic Client Registration (`/oauth/register`) is currently turned off.
* An unauthenticated request to `/mcp` answers `401` with a `WWW-Authenticate` header that points to the protected resource metadata.

## Other MCP clients

Today the sign-in server accepts ChatGPT and Claude (claude.ai, Desktop and mobile). Other clients, such as Claude Code, Cursor or VS Code, are not accepted yet, because they would need dynamic client registration. We plan to add more clients. If you need one, contact support and tell us which.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.