# API & MCP access
Source: https://docs.aden.space/docs/help/apps-integrations/api-access

Developer access layer. API keys for external SDK integrations, OAuth 2.0 for MCP clients, and per-team MCP tool connections backed by `team_app_integrations`.
{/* Generated by `bun docs:publish` from docs/features/api-access.md: edit the spec, not this file. */}

## What it is [#what-it-is]

API keys and MCP require **Lite** or higher. Free teams can publish a public
artist page but cannot create API keys or authorize MCP clients.

Aden exposes a developer access layer with three entry points:

1. **API keys**: long-lived tokens scoped to a team. Use them to read or write
   tracks, albums, and team data from your own scripts, white-label apps, or
   backend services.

2. **OAuth 2.0 / MCP**: authorize an AI tool (such as Claude Desktop or any
   MCP-compatible client) to access your Aden account on your behalf. You
   control how long the authorization lasts.

3. **MCP integrations**: connect third-party services (e.g. Notion, Granola,
   or any app with an MCP server) to your team's chat so the assistant and
   your bots can use their tools directly during a chat session.

## Using it [#using-it]

### Create an API key [#create-an-api-key]

1. Open a team on **Lite** or higher and go to **API** in the sidebar.
2. Click **New API key**, give it a name (e.g. "Website integration"), and pick
   the scopes you need:
   * `read:tracks` / `write:tracks`
   * `read:albums` / `write:albums`
   * `read:teams`
3. Copy the key: it is shown **once**. Store it securely (a secret manager, not
   source code).
4. Pass the key as a `Bearer` token in the `Authorization` header of every
   request.

A key created with read scopes only is genuinely read-only. Aden rejects any
request from it that is not a read. That is the kind of key to use for a public
website; the **Website Kit** on the same page generates the whole integration
for you.

### Revoke a key [#revoke-a-key]

On the same API page, click **Revoke** next to any key. The key is deactivated
immediately. A record is kept for audit purposes.

### Report a leaked key [#report-a-leaked-key]

If you find an Aden key in the wild (a public GitHub repo, a Slack message),
submit it to the public revocation endpoint, no account needed. The key's team
is notified by email with a one-click restore link valid for 24 hours in case
the report was a false alarm.

### Authorize an MCP client (OAuth) [#authorize-an-mcp-client-oauth]

When an AI app (ChatGPT, Claude, Cursor, your own agent) asks to connect:

1. Aden opens and asks you to sign in, if you are not already.
2. Press **Connect**. The app can now read and change what you can in Aden,
   on every team and organisation, until you disconnect it.
3. Want less? Choose **Limit access** first: read only, only some teams or
   organisations, or an end date (1 day, 30 days, 1 year).

**Account → Connected apps** lists every app you connected. **Configure**
changes its access and teams; **Disconnect** revokes it at once.

### Manage MCP tool integrations for a team [#manage-mcp-tool-integrations-for-a-team]

1. Open your team's **Integrations** page.
2. Connect a third-party service (OAuth flow managed per provider).
3. In the integrations settings, open **Tools** for any connected service to see
   the live tool catalog and enable or disable individual tools.
4. Disabled tools are never surfaced to the AI composer, even if the service
   offers them.

### Connect any app by its MCP server [#connect-any-app-by-its-mcp-server]

Any app that runs an MCP server can join your chat, not only the ones listed:
an automation hub, your distributor's agent, a tool you built.

1. Open your team's **Integrations** page and pick **Custom app**.
2. Paste the app's MCP server URL (it starts with `https://`; look in the
   app's settings under MCP, AI or integrations). Add a name if you like.
3. If the app gave you an API key, paste it too. Otherwise leave it empty:
   when the app needs a sign-in, Aden sends you to it.
4. The chat assistant can now use the app's tools. Pick it under a bot's
   **Uses apps** to let that bot use it too.

Connect as many as you like. Each one gets its own **Details** page with the
tool list, and **Disconnect** removes it.