Outdoo MCP
Connect Claude to your Outdoo workspace — conversations, CRM, and revenue intelligence — via the Model Context Protocol.
What is the Outdoo MCP?
The Outdoo MCP server exposes your conversation intelligence, CRM data, and company context as tools that Claude can call directly. You get 39 tools across three namespaces: Organizations, Conversations, and CRMs.
Prerequisites
- Python 3.9 or later
- An Outdoo API key and workspace ID (from your Outdoo admin)
- An Anthropic API key (from console.anthropic.com)
- Claude Code CLI or the
anthropicPython package
Configuration
The Outdoo MCP server runs over HTTP. You configure it once and every tool becomes available to Claude automatically.
MCP config file (.mcp.json)
Create a .mcp.json file in your project root (or home directory for global access):
{
"mcpServers": {
"outdoo": {
"type": "http",
"url": "https://mcp.outdoo.ai/v1/mcp",
"headers": {
"x-api-key": "YOUR_OUTDOO_API_KEY",
"x-workspace-id": "YOUR_WORKSPACE_ID"
}
}
}
}Field | Value | Notes |
|---|---|---|
|
| Always |
| MCP endpoint — do not change | |
| Your JWT API key | Obtainable from Outdoo workspace settings |
| Your workspace ID (numeric) | Found in your Outdoo workspace URL or settings |
Keep your API key secret.
Never commit .mcp.json with a real API key to version control. Add it to .gitignore or use environment variable substitution.
Using with Claude Code
Claude Code (the CLI) picks up .mcp.json automatically. Once the file is in your project root, all Outdoo tools are available in every conversation in that directory.
1 Place .mcp.json in your project root
my-project/
├── .mcp.json # ← Outdoo MCP config here
├── main.py
└── ...2 Start Claude Code
cd my-project
claude3 Start using Outdoo tools in your prompt
Get all conversations from last week and summarize key points,
risks, and feature requests.Claude will automatically call the relevant Outdoo MCP tools and synthesize the results.
Using with the Python SDK
You can also call the Outdoo MCP programmatically using the Anthropic Python SDK. This is useful for building pipelines, scheduled reports, or custom agents.
With MCP Client
Direct HTTP (no SDK)
import anthropic
from anthropic import Anthropic
client = Anthropic() # reads ANTHROPIC_API_KEY from env
# Define the Outdoo MCP server
mcp_servers = [
{
"type": "url",
"url": "https://mcp.outdoo.ai/v1/mcp",
"name": "outdoo",
"authorization_token": "YOUR_OUTDOO_API_KEY",
}
]
response = client.beta.messages.create(
model="claude-sonnet-4-6",
max_tokens=4096,
mcp_servers=mcp_servers,
messages=[
{
"role": "user",
"content": "Get conversations from the last 7 days and summarize key points."
}
],
betas=["mcp-client-2025-04-04"],
)
print(response.content[0].text)import requests
from datetime import datetime, timedelta, timezone
OUTDOO_API_KEY = "YOUR_OUTDOO_API_KEY"
OUTDOO_WORKSPACE_ID = "YOUR_WORKSPACE_ID"
MCP_URL = "https://mcp.outdoo.ai/v1/mcp"
headers = {
"x-api-key": OUTDOO_API_KEY,
"x-workspace-id": OUTDOO_WORKSPACE_ID,
"Content-Type": "application/json",
}
# Call a tool directly over MCP HTTP protocol
payload = {
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "conversations_get_key_points",
"arguments": {
"params": {
"from_created_at": "2026-05-22T00:00:00Z",
"to_created_at": "2026-05-28T23:59:59Z",
"scope": "external",
"limit": 20
}
}
}
}
resp = requests.post(MCP_URL, json=payload, headers=headers)
print(resp.json())Your First Call
A complete working example — get last week's external conversations with key points, then ask Claude to summarize:
import os
from datetime import datetime, timedelta, timezone
import anthropic
client = anthropic.Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])
# Date range: last 7 days
now = datetime.now(timezone.utc)
week_ago = now - timedelta(days=7)
prompt = f"""
Get all external conversations between {week_ago.strftime('%Y-%m-%dT%H:%M:%SZ')}
and {now.strftime('%Y-%m-%dT%H:%M:%SZ')}.
For each conversation summarize:
- Key points discussed
- Positives and buying signals
- Risks and objections
- Any feature or integration requests
- Deadlines or next steps with due dates
"""
mcp_servers = [
{
"type": "url",
"url": "https://mcp.outdoo.ai/v1/mcp",
"name": "outdoo",
"authorization_token": os.environ["OUTDOO_API_KEY"],
}
]
response = client.beta.messages.create(
model="claude-sonnet-4-6",
max_tokens=8192,
mcp_servers=mcp_servers,
messages=[{"role": "user", "content": prompt}],
betas=["mcp-client-2025-04-04"],
)
print(response.content[0].text)Authentication
The Outdoo MCP uses JWT-based API keys. Keys are scoped to a workspace and carry an expiry date.
Header | Required | Description |
|---|---|---|
| Yes | Your JWT API key from Outdoo workspace settings |
| Yes | Numeric workspace ID (e.g. |
Using environment variables (recommended):
# .env
OUTDOO_API_KEY=eyJhbGci...
OUTDOO_WORKSPACE_ID=1429
ANTHROPIC_API_KEY=sk-ant-...import os
from dotenv import load_dotenv
load_dotenv()
api_key = os.environ["OUTDOO_API_KEY"]
workspace_id = os.environ["OUTDOO_WORKSPACE_ID"]API key expiry.
Outdoo API keys include an expiry date in their JWT payload. If you get a 401 response, decode your JWT at jwt.io and check the exp field. Request a new key from your Outdoo admin.