MCP Endpoint
The Model Context Protocol (MCP) is an open standard that lets AI assistants discover and call tools at runtime. Aprovan exposes your workspace's granted tool set as an MCP server — point Claude Desktop, Cursor, or any MCP-compatible client at your workspace endpoint and the client will automatically discover what's available and prompt you to sign in.
Endpoint URL
Each workspace has its own MCP endpoint. Replace <workspaceId>
with the ID of your workspace (visible on the
Install tab
of the workspace admin page).
MCP endpoint
https://gateway.aprovan.com/mcp/<workspaceId> Meta-tools
The endpoint always exposes four meta-tools. These are what tools/list
returns. Callers with per-tool grants see the same four names; the grants control which underlying
providers they can actually reach via call_tool.
list_tools
Returns the caller's granted tools filtered by their permission set. Use this to discover which providers and operations are available to you.
Request
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_tools",
"arguments": {}
}
} Response
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [{
"type": "text",
"text": "[{"provider":"github",
"operation":"repos.list"},
{"provider":"stripe",
"operation":"*"}]"
}]
}
} search_tools
Full-text search over the caller's granted tools. Useful when the client needs to pick the right operation from a large permission set.
Request
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "search_tools",
"arguments": {
"query": "create pull request"
}
}
} Response
{
"jsonrpc": "2.0",
"id": 2,
"result": {
"content": [{
"type": "text",
"text": "[{"provider":"github",
"operation":
"pulls.create",
"summary":
"Create a pull request"}]"
}]
}
} tool_info
Returns the full schema (parameters, description) for a single provider operation.
Request
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "tool_info",
"arguments": {
"provider": "github",
"operation": "repos.get"
}
}
} Response
{
"jsonrpc": "2.0",
"id": 3,
"result": {
"content": [{
"type": "text",
"text": "{"provider":"github",
"operation":"repos.get",
"parameters":{
"owner":{"type":
"string"},
"repo":{"type":
"string"}}}"
}]
}
} call_tool
Invokes a provider operation. The caller must have a grant for
provider + operation
(or a wildcard grant on the provider).
Request
{
"jsonrpc": "2.0",
"id": 4,
"method": "tools/call",
"params": {
"name": "call_tool",
"arguments": {
"provider": "github",
"operation": "users.getByUsername",
"args": {
"username": "octocat"
}
}
}
} Response
{
"jsonrpc": "2.0",
"id": 4,
"result": {
"content": [{
"type": "text",
"text": "{"login":"octocat",
"id":1,
"name":
"The Octocat", ...}"
}]
}
} Auth flow
The endpoint is protected by Cognito bearer tokens. There are two ways to authenticate:
OAuth-aware client (Claude Desktop, Cursor)
The client fetches the OAuth Protected Resource Metadata document at:
/.well-known/oauth-protected-resource
/mcp/<workspaceId> This document points to the Cognito authorization and token endpoints. The client initiates the auth-code flow automatically and prompts you to sign in via the Cognito hosted UI. After consent, the client stores the access token and uses it on every subsequent request.
Hand-configured client
Obtain a Cognito access token from your workspace admin and paste it into the client's bearer-token field. The token is passed as:
Authorization: Bearer <access_token> Cognito access tokens expire after one hour. Refresh tokens can be used to obtain new access tokens without re-prompting.
Per-caller filtering
tools/list always returns
the four meta-tools (
list_tools,
search_tools,
tool_info,
call_tool).
However, when a caller invokes
call_tool name=list_tools,
the returned tool list is intersected with the caller's permission grants — callers only see
what they are allowed to call. A workspace admin can view and manage grants on the
Permissions page.
Troubleshooting
| Error | Likely cause & fix |
|---|---|
| 401 Unauthorized | Token is missing, expired, or malformed. Re-authenticate: disconnect the client, re-add the server, and sign in again. |
| 403 Forbidden | Your user is not a member of this workspace, or you lack a grant for the requested provider + operation. Contact a workspace admin. |
| Unknown tool | The tool name is not one of the four meta-tools. Use search_tools to find the right provider and operation name. |
| insufficient_scope | The Cognito token does not include the required OAuth scope. Re-authenticate after a workspace admin has granted you the correct scopes. |