MCP Server
Connect AI coding agents to OutCallerAI through the Model Context Protocol.
OutCallerAI exposes an MCP server that lets AI coding agents manage your workspace - agents, usecases, leads, calls, and exports - all through natural language.
How it works
The MCP server exposes 23 read and write tools across six resources. AI agents can manage workspace settings, usecases, voice agents, leads, calls, and export jobs. All tools require an API key and respect workspace permissions.
Two transports are available:
| Transport | Best for | How it runs |
|---|---|---|
| stdio | Local AI clients (Cursor, VS Code, Claude Desktop) | Runs as a child process on your machine |
| hosted | Cloud AI agents (Codex, Gemini CLI) | Connects to https://api.outcallerai.com/mcp |
Client setup
Set your API key, then add via CLI:
export OUTCALLERAI_API_KEY=your-api-key
codex mcp add outcallerai \
--url https://api.outcallerai.com/mcp \
--bearer-token-env-var OUTCALLERAI_API_KEYOr in ~/.codex/config.toml:
[mcp_servers.outcallerai]
url = "https://api.outcallerai.com/mcp"
bearerTokenEnvVar = "OUTCALLERAI_API_KEY"Verify:
codex mcp listThe API key must be set in your shell before starting Codex.
Set your API key, then add via CLI:
export OUTCALLERAI_API_KEY=your-api-key
claude mcp add --transport http outcallerai https://api.outcallerai.com/mcpOr use stdio via .mcp.json. The server reads OUTCALLERAI_API_KEY from your shell.
{
"mcpServers": {
"outcallerai": {
"command": "npx",
"args": ["-y", "@outcallerai/mcp-stdio"],
"env": {
"OUTCALLERAI_API_KEY": "${OUTCALLERAI_API_KEY}"
}
}
}
}Verify:
claude mcp listCreate .cursor/mcp.json in your project root. The server reads OUTCALLERAI_API_KEY from your shell environment.
{
"mcpServers": {
"outcallerai": {
"command": "npx",
"args": ["-y", "@outcallerai/mcp-stdio"],
"env": {
"OUTCALLERAI_API_KEY": "${OUTCALLERAI_API_KEY}"
}
}
}
}Restart Cursor. Ask its agent about your OutCallerAI workspace to verify.
Create .vscode/mcp.json. VS Code prompts for your API key via a password input:
{
"servers": {
"outcallerai": {
"command": "npx",
"args": ["-y", "@outcallerai/mcp-stdio"],
"env": {
"OUTCALLERAI_API_KEY": "${input:outcallerai-api-key}"
}
}
}
}Run MCP: List Servers to verify.
Add to your Gemini CLI config. The server reads OUTCALLERAI_API_KEY from your shell.
{
"mcp": {
"servers": {
"outcallerai": {
"command": "npx",
"args": ["-y", "@outcallerai/mcp-stdio"],
"env": {
"OUTCALLERAI_API_KEY": "${OUTCALLERAI_API_KEY}"
}
}
}
}
}Add to opencode.json. The server reads OUTCALLERAI_API_KEY from your shell.
{
"mcpServers": {
"outcallerai": {
"command": "npx",
"args": ["-y", "@outcallerai/mcp-stdio"],
"env": {
"OUTCALLERAI_API_KEY": "{env:OUTCALLERAI_API_KEY}"
}
}
}
}Persist the API key
Running export OUTCALLERAI_API_KEY="your-api-key" sets the key only for the
current terminal session. A new terminal, or an application started outside that
terminal, will not inherit it.
For zsh, add the export to ~/.zshrc and reload the shell:
# ~/.zshrc
export OUTCALLERAI_API_KEY="your-api-key"source ~/.zshrcUse ~/.bashrc for interactive Bash shells or the equivalent startup file for
your shell. Start or restart the MCP client after loading the variable.
Shell startup files store values as plaintext. On a shared machine, load the key from a password manager or operating-system keychain instead. For example, on macOS you can store the key in Keychain once:
read -s "OUTCALLER_KEY?OutCallerAI API key: "
echo
security add-generic-password -U \
-a "$USER" \
-s OUTCALLERAI_API_KEY \
-w "$OUTCALLER_KEY"
unset OUTCALLER_KEYThen add this loader to ~/.zshrc:
export OUTCALLERAI_API_KEY="$(security find-generic-password \
-a "$USER" \
-s OUTCALLERAI_API_KEY \
-w 2>/dev/null)"Verify that the variable is available without printing the secret:
[[ -n "$OUTCALLERAI_API_KEY" ]] && echo "OutCallerAI API key loaded"Never commit an API key to a repository or place it directly in a shared MCP configuration file.
Configuration
| Variable | Default | Description |
|---|---|---|
OUTCALLERAI_API_KEY | (required) | Workspace API key |
OUTCALLERAI_BASE_URL | https://api.outcallerai.com | API origin |
OUTCALLERAI_TIMEOUT_MS | 30000 | Request timeout |
To run the server locally:
export OUTCALLERAI_API_KEY=your-api-key
npx -y @outcallerai/mcp-stdioAvailable tools
All tools are grouped by resource. Read-only tools are safe to call; destructive tools permanently delete or cancel data.
Workspace
| Tool | What it does |
|---|---|
outcallerai_get_workspace | Get workspace details |
outcallerai_update_workspace | Update workspace name |
Usecases
| Tool | What it does |
|---|---|
outcallerai_list_usecases | List usecases |
outcallerai_get_usecase | Get usecase details |
outcallerai_create_usecase | Create a usecase |
outcallerai_update_usecase | Update a usecase |
outcallerai_delete_usecase | Delete a usecase |
Agents
| Tool | What it does |
|---|---|
outcallerai_list_agents | List voice agents |
outcallerai_get_agent | Get agent details |
outcallerai_create_agent | Create a voice agent |
outcallerai_update_agent | Update a voice agent |
outcallerai_delete_agent | Delete a voice agent |
Leads
| Tool | What it does |
|---|---|
outcallerai_list_leads | List leads |
outcallerai_get_lead | Get lead details |
outcallerai_create_lead | Create one or more leads |
outcallerai_update_lead | Update a lead |
outcallerai_delete_lead | Delete a lead |
Calls
| Tool | What it does |
|---|---|
outcallerai_list_calls | List calls |
outcallerai_get_call | Get call details |
outcallerai_create_call | Initiate outbound calls |
Jobs
| Tool | What it does |
|---|---|
outcallerai_export_calls | Export calls as JSON |
outcallerai_get_job | Check export job status |
outcallerai_cancel_job | Cancel a running export job |
Tool annotations
Every tool includes MCP annotations that tell the client whether the tool is read-only, destructive, or idempotent. This helps AI agents ask for confirmation before destructive actions.
Troubleshooting
| Symptom | Likely cause |
|---|---|
| No tools listed | Confirm Node.js 20 or 22; run the command manually and check stderr |
| Authentication failure | OUTCALLERAI_API_KEY is not set in the child process environment |
| Hosted 401 | The workspace uses OAuth-mode authentication - API keys cannot authenticate. Switch to credential-mode |
| Timeout | Increase OUTCALLERAI_TIMEOUT_MS or check API health |
| Wrong tools after upgrade | Restart the server and reset the client's MCP tool cache |
How is this guide?
