Connected Apps is the RichAPI dashboard page that lists every AI client authorized to call RichAPI tools through MCP. Each row shows the client name, the client host, the connect date, and the last active time. Every active connection has a Rename button and a Disconnect button.
What is a connected app in RichAPI?
A connected app is one AI client that a workspace member authorized through the RichAPI OAuth consent screen. Claude Desktop, Claude Code, Cursor, and Windsurf are connected apps. RichAPI creates one row for each authorization. When the same member authorizes the same client again, the new row replaces the old one, and the old row moves to Revoked. Every request that a connected app sends is billed to the organization balance, through the workspace that owns the connection.
Where is the Connected Apps page?
Page element | What it shows |
Sidebar group | API Platform |
Sidebar item | Connected Apps |
URL |
|
Page title | Connected Apps |
Browser tab title | Connected Apps — RichAPI |
Which apps can connect to RichAPI?
RichAPI accepts any MCP client that supports the remote HTTP transport. The MCP Setup page names four options.
Client | Where the server URL goes |
Claude Desktop | Settings → Connectors → Add custom connector |
Claude Code | One terminal command — no JSON |
Cursor |
|
Other (Windsurf, Zed, …) | Any MCP client that supports remote HTTP transport |
RichAPI holds no fixed allowlist of clients. The name in the list comes from the client_name field that the client sends during dynamic client registration (RFC 7591). If the client sends no name, RichAPI derives the name from the redirect URI.
Redirect scheme or host | Name that RichAPI records |
| Cursor |
| VS Code |
| Windsurf |
| Zed |
| Claude |
| ChatGPT |
The host | Continue |
Any other value | The bare host, or the scheme, or |
How to connect an app to RichAPI
CAUTION: Create an API key before you start. When the account has no active API key, the consent screen refuses the authorization.
Open the API Keys page and make sure that the workspace has an active key.
Copy the RichAPI MCP server URL:
https://mcp.richapi.ai/mcp.Open your AI client and add the URL as a custom connector or remote MCP server.
Set the transport to
http. Some clients call it Streamable HTTP.The client opens RichAPI in your browser. Sign in to RichAPI.
Read the Connect RichAPI consent screen. Confirm the client name and the account name.
Click Allow.
The browser returns to your AI client. The RichAPI tools are available.
Open Connected Apps and confirm that a new row appears under Active connections.
Claude Code
claude mcp add --transport http richapi https://mcp.richapi.ai/mcp
Cursor
{
"mcpServers": {
"richapi": {
"url": "https://mcp.richapi.ai/mcp"
}
}
}
What does the consent screen grant?
The consent screen is titled Connect RichAPI. It names the client under Requesting access. Under Signed in as, it shows your email address, the workspace name, and Using API key with the prefix of the API key that the connection will use. A note states that the connection has the same access as that API key, and that revoking the key disconnects the client too.
The two buttons are Deny and Allow.
What OAuth scope does a connection use?
RichAPI supports one scope. The MCP server advertises scopes_supported: ["mcp"] in both /.well-known documents. A client that sends no scope receives mcp.
OAuth setting | RichAPI rule |
Scope |
|
Grant types |
|
PKCE |
|
Client authentication |
|
Authorization code lifetime | 10 minutes |
Access token lifetime | 1 hour |
Refresh token lifetime | 30 days, non-rotating |
What does RichAPI store for each connection?
RichAPI stores one record for each authorization. Each row on the Connected Apps page shows these details.
Detail on the row | What it shows |
Client name | The name that the client sent, or a name that RichAPI derived from the redirect URI. You can rename it. |
Client host | The host of the client redirect URI. A desktop app can show no host. |
Connect date | The date and time of the authorization. |
last active | The time of the last tool call. The page shows |
using API key | The prefix of the API key that the connection uses. |
disconnected | The disconnect time. Only a revoked row shows it. |
RichAPI also records the member who authorized the connection. The page does not show it.
How does the Connected Apps page group connections?
Section | Heading | Count label | Buttons on a row |
Active | Active connections |
| Rename, Disconnect |
Revoked | Revoked |
| None |
A workspace with at least one revoked connection also shows a Revoked section. An active row carries a Connected badge. A revoked row carries a Revoked badge and shows the disconnect date.
When the workspace has no active connection, the page shows this text: "No active connections. Go to Claude Desktop / Cursor / Windsurf, add a Custom Connector with the URL https://mcp.richapi.ai/mcp, and follow the sign-in flow to authorize your first connection."
How to rename a connection
When two members connect the same client, both rows carry the same name. A label tells them apart.
Open the Connected Apps page.
Find the connection under Active connections.
Click Rename.
Type the new label in the Name field. The limit is 80 characters.
Click Save, or press Enter.
The dialog rejects an empty name with the message Name cannot be empty. It rejects a longer name with the message Name must be 80 characters or fewer.
How to disconnect an app
CAUTION: Disconnect an app only to stop its calls. The AI client loses every RichAPI tool and returns an error until a member authorizes it again.
Open the Connected Apps page.
Find the connection under Active connections.
Click Disconnect.
Read the browser confirmation dialog and click OK.
Wait up to about one minute.
Reload the page and confirm that the connection appears under Revoked.
The confirmation dialog reads: "Disconnect this app? Its access to your RichAPI account will be revoked shortly and may take up to about a minute to fully take effect."
A second disconnect on the same connection returns success and changes nothing.
What happens to work in progress after a disconnect?
A disconnect marks the connection as revoked. The MCP server caches the "not revoked" verdict for 60 seconds. A tool call that already passed the check runs to the end. The next call fails after the cache expires.
Action after the disconnect | Result |
A tool call that already passed the revocation check | The call finishes normally and bills the workspace. |
A new tool call, within 60 seconds | The call can still succeed. The cached verdict is not yet expired. |
A new tool call, after 60 seconds | RichAPI returns |
A refresh token exchange | RichAPI returns |
The connection row | The row stays in the list under Revoked. RichAPI deletes nothing. |
RichAPI cannot re-enable a revoked connection. Authorize the client again to restore access.
What else stops a connected app?
Event | Effect on the connection |
A member revokes or deletes the API key behind the connection | The tool calls fail. The row still shows Connected, with a red note that the API key no longer works. Disconnect the row and authorize the client again. |
The refresh token reaches its 30-day expiry | The client must authorize again. RichAPI does not rotate the refresh token. |
The workspace runs out of credits | The tool calls fail for lack of credits. The connection stays active. |
A client that sends the RichAPI API key in an x-api-key header creates no connection row. That client never appears on the Connected Apps page, and a disconnect does not stop it. To stop that client, revoke its API key on the API Keys page.
Are connections scoped to a workspace or to a user?
Connections are scoped to a workspace. Every member of that workspace sees every connection and can rename or disconnect any of them. The owner role is not required.
Question | Answer |
Who sees a connection? | Every member of the workspace that owns it. |
Who can disconnect a connection? | Every member of the workspace that owns it. |
Who pays for its calls? | The organization balance, through the workspace that owns it. |
Which member authorized the connection? | RichAPI records it, but the page does not show it. |
What happens after a workspace deletion? | The connection rows are deleted with the workspace. |
The consent screen binds the connection to the workspace that holds your most recently created active API key, across all your workspaces. A user who belongs to several workspaces must check the workspace name on the consent screen before the approval.
How does RichAPI protect the stored credentials?
The connection record holds no API key and no readable token.
Control | How RichAPI applies it |
API key | The client never receives the API key. The connection gets its own token, and RichAPI stores only a hash of that token. |
Signature check | RichAPI compares signatures in constant time. |
Authorization request integrity | The consent request is signed and expires after 10 minutes. A modified request is rejected. |
Proof of possession | PKCE with |
Access | Only members of the owning workspace can see, rename, or disconnect a connection. |
Conversation data | RichAPI never sees the conversations inside your AI assistant. |
How much does a connected app cost?
A connected app costs nothing. RichAPI charges credits for the tool calls that the app sends, at the same price as a direct API call. 1 credit costs $0.02 on the 1,000 and 5,000 credit packs, and less on larger packs.
The enrich_profile tool costs 1 credit per call, or 2 credits when the call asks for social metrics.
Calls | Credits | Cost |
100 | 100 | $2.00 |
500 | 500 | $10.00 |
1,000 | 1,000 | $20.00 |
How to fix a failed connection
What you see | Cause | What to do |
| The account has no active API key. | Create a key on the API Keys page. The link returns you to the consent screen. |
| The chosen workspace has no active key. | Create a key in that workspace, then authorize again. |
The row says the API key no longer works | Somebody revoked or deleted the API key that the connection uses. | Disconnect the row, then authorize the client again. The new connection uses the newest active key. |
| The consent page opened without a valid MCP authorization request. | Return to your AI client and connect again. |
| The signed request passed its 10-minute limit. | Return to your AI client and connect again. |
| A member clicked Disconnect, or the same member authorized the same client again and the new connection replaced this one. | Add the connector again and click Allow. |
| The bearer token points at a row that no longer exists. | Add the connector again and click Allow. |
The client still works after a disconnect | The 60-second revocation cache is not yet expired. | Wait one minute, then send another tool call. |
The new connection is missing from the list | The consent screen bound the connection to another workspace. | Switch workspace with the account picker, then open Connected Apps again. |
| The connection belongs to another workspace, or it was deleted. | Reload the page and repeat the action. |
| You are not a member of the workspace. | Ask an owner for an invitation. |
Frequently asked questions
Does a disconnect delete the connection from Connected Apps?
No. A disconnect moves the connection into the Revoked section of the Connected Apps page. The row stays visible with its connect date, its last active time, and its disconnect date.
How long does a RichAPI disconnect take to work?
A disconnect takes up to about one minute. The RichAPI MCP server caches the "not revoked" verdict for 60 seconds, so a tool call inside that window can still succeed. After the cache expires, the connection returns 403.
Can another member of my workspace disconnect an app that I connected?
Yes. Connections belong to the workspace, not to the person who authorized them. Every member of the workspace can see, rename, and disconnect every connection in it. The owner role is not required.
Does a connected app receive my RichAPI API key?
No. The AI client receives an OAuth bearer token. The token works with the access of an API key of the workspace, but it does not contain the key. RichAPI stores only a hash of the token.
Which OAuth scope does a RichAPI connection request?
RichAPI supports one scope, named mcp. The MCP server advertises scopes_supported: ["mcp"] in its authorization server metadata and in its protected resource metadata. A client that sends no scope receives mcp.
How do I tell two connections from the same client apart?
Use the Rename button. The rename dialog sets a label of up to 80 characters on one connection. The row also shows the client host, which separates a desktop build from a local development build.
Does a connected app need its own credits?
No. A connected app spends from the organization balance, through the workspace that owns the connection. The consent screen names that account before you click Allow.
Related articles
