Remote MCP
The remote MCP lets you use SIPPulse AI from inside an MCP client: Claude, Cursor, VS Code, ChatGPT or any client that speaks Streamable HTTP with OAuth discovery. You authorize in the browser, choose the organization and the project, and the client gets the platform tools.
Every connection uses the same URL:
https://api.sippulse.ai/mcpThis is the SIPPulse AI MCP server itself. To connect your agents to third-party MCP servers, see MCP Servers and MCP Connections.
How the connection works
The MCP client discovers the OAuth configuration by itself, from the MCP URL:
- The client reaches the URL and receives the authorization server location.
- The browser opens the SIPPulse AI consent screen.
- The screen shows the application asking for access, the organization, the project and the permissions involved.
- You approve or deny. When you approve, the client receives a token and can call the tools.
- The token refreshes automatically while the access stays valid.
- If the token expires or is revoked, the client asks for authorization again.
Every consent is bound to one organization and to a project you can access. The access combines your current role in the organization with the granted permissions. You cannot widen the access later: to grant more permissions, the authorization has to be repeated.
Configure your client
Claude Code
claude mcp add --transport http sippulse https://api.sippulse.ai/mcpCursor and VS Code
In the client's mcp.json file:
{
"servers": {
"sippulse": {
"type": "http",
"url": "https://api.sippulse.ai/mcp"
}
}
}Claude.ai (custom connector)
In Claude.ai, add a custom MCP connector and paste https://api.sippulse.ai/mcp as the server address. Other clients that accept a custom connector, such as ChatGPT, use the same URL and the same browser authorization flow.
API key for automation
For automations that do not go through interactive consent, use an API key in the Authorization header:
Authorization: Bearer <your_api_key>An API key bound to a project fixes that project and does not prompt in the browser. It grants the full MCP tool catalog, so store it like any other credential. The key must have the same permissions the tool needs: the platform checks the key's RBAC, and an API key does not bypass permissions.
Permissions (scopes)
| Scope | What it allows |
|---|---|
spai:agents:read | Read agents and the internal tools catalog |
spai:agents:write | Create, edit, validate and delete agents |
spai:agents:execute | Run a real turn in a thread |
spai:secrets:read | See secret names only |
spai:channels:read | Read SIP, WhatsApp and Telegram deployments |
spai:channels:write | Create, edit, activate, deactivate and delete deployments |
spai:threads:read | Read thread metadata and a bounded history slice |
spai:threads:write | Create, close and delete threads |
spai:models:read | Read the organization model catalog |
Reading, writing and executing are different permissions: reading never changes anything, writing creates and modifies, and executing actually runs a turn. A read-only authorization changes nothing, not even for owners and admins.
Available tools
Every tool is exposed by the MCP itself. The Cost column says whether the call consumes credits from your organization.
Agents
| Tool | What it does | Scope | Cost |
|---|---|---|---|
agents_list | Lists the agents in the effective project | spai:agents:read | No |
agents_get | Returns one sanitized agent | spai:agents:read | No |
agents_validate | Validates the model configuration without writing the agent | spai:agents:write | No |
agents_create | Creates an agent without accepting secret material | spai:agents:write | No |
agents_update | Updates an agent without accepting secret material | spai:agents:write | No |
agents_delete | Deletes an agent after explicit confirmation | spai:agents:write | No |
internal_tools_list | Lists the catalog of internal agent tools | spai:agents:read | No |
Models
| Tool | What it does | Scope | Cost |
|---|---|---|---|
models_list | Lists the organization models and their capabilities | spai:models:read | No |
models_get | Returns a model and its agent parameter schema | spai:models:read | No |
Secrets
| Tool | What it does | Scope | Cost |
|---|---|---|---|
secrets_list | Lists secret names only; values and metadata are never returned | spai:secrets:read | No |
SIP
| Tool | What it does | Scope | Cost |
|---|---|---|---|
sip_deployments_list | Lists SIP deployments | spai:channels:read | No |
sip_deployments_get | Returns one SIP deployment | spai:channels:read | No |
sip_deployments_apply | Applies a SIP deployment using project secret references | spai:channels:write | No |
WhatsApp
| Tool | What it does | Scope | Cost |
|---|---|---|---|
whatsapp_deployments_list | Lists WhatsApp deployments | spai:channels:read | No |
whatsapp_deployments_get | Returns one WhatsApp deployment | spai:channels:read | No |
whatsapp_deployments_create | Creates a WhatsApp deployment | spai:channels:write | No |
whatsapp_deployments_update | Updates a WhatsApp deployment | spai:channels:write | No |
whatsapp_deployments_activate | Activates a WhatsApp deployment | spai:channels:write | No |
whatsapp_deployments_deactivate | Deactivates a WhatsApp deployment | spai:channels:write | No |
whatsapp_deployments_delete | Deletes a WhatsApp deployment after explicit confirmation | spai:channels:write | No |
Telegram
| Tool | What it does | Scope | Cost |
|---|---|---|---|
telegram_deployments_list | Lists Telegram deployments | spai:channels:read | No |
telegram_deployments_get | Returns one Telegram deployment | spai:channels:read | No |
telegram_deployments_create | Creates a Telegram deployment using secret names | spai:channels:write | No |
telegram_deployments_update | Updates a Telegram deployment | spai:channels:write | No |
telegram_deployments_activate | Activates a Telegram deployment | spai:channels:write | No |
telegram_deployments_deactivate | Deactivates a Telegram deployment | spai:channels:write | No |
telegram_deployments_delete | Deletes a Telegram deployment after explicit confirmation | spai:channels:write | No |
Threads
| Tool | What it does | Scope | Cost |
|---|---|---|---|
threads_list | Lists thread metadata without history | spai:threads:read | No |
threads_get | Returns a bounded sanitized thread | spai:threads:read | No |
threads_create | Creates a thread for an agent | spai:threads:write | No |
threads_run | Runs one turn in a thread | spai:agents:execute | Yes |
threads_close | Closes a thread | spai:threads:write | No |
threads_delete | Deletes a thread after explicit confirmation | spai:threads:write | No |
threads_run is the only tool that runs a real turn and is billed as a normal agent execution. agents_validate only checks the configuration, with no paid inference.
What the remote MCP never does
- It never returns secret values.
secrets_listreturns names only. - It never deletes without confirmation:
agents_deleteandthreads_deleterequireconfirm: truein the request. threads_listnever carries history, only metadata.threads_getreturns a bounded, sanitized slice of the conversation.- It does not expose audio transcription (STT).
- It has no streaming tool: every call is a JSON request.
Common errors
| Error | What it means |
|---|---|
401 | The session expired or was revoked. Authorize the client again. |
403 insufficient_scope | The authorization lacks the requested permission. Authorize again including that permission. |
Never share access tokens or API keys. Whoever holds the token uses the MCP with your permissions. If a token leaks, revoke the access immediately.
Revoking access
You revoke any authorization at any time in Settings > OAuth access. See OAuth access. Revocation is immediate: from the next request on, the client has to authorize again.
Protocol note
The remote MCP uses the MCP 2026-07-28 protocol in stateless mode, with no session affinity between requests.
