Connect Surfit to your AI agent in one config block. Every action your agent takes against Slack, GitHub, AWS, Gmail, Notion, X, or Outlook will route through Surfit's Wave engine before it executes. No SDK install. No code changes.
Surfit ships an MCP (Model Context Protocol) server at https://mcp.surfit.ai. Any MCP-compatible client — Claude Desktop, Claude Code, Cursor, Cline, and others — can connect to it with a single config entry.
Once connected, the client sees seven Surfit tools: surfit_x_post, surfit_slack_send, surfit_github_action, surfit_aws_action, surfit_gmail_send, surfit_notion_action, surfit_outlook_send. The agent calls these instead of hitting the underlying APIs directly. Each call is scored by Surfit's Wave engine in real time. Low-risk actions execute automatically; high-risk actions are held for human approval.
Architectural note. Your agent never holds the production credentials for Slack, GitHub, AWS, or anything else. Surfit holds them. The agent proposes an action; Surfit decides whether it should run. That's the whole governance model in one sentence.
sk_surfit_.If you don't have access to the admin dashboard yet, contact hello@surfit.ai and we'll get you set up.
Edit your Claude Desktop config file:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.jsonAdd the surfit server to the mcpServers object:
{
"mcpServers": {
"surfit": {
"url": "https://mcp.surfit.ai/mcp",
"headers": {
"Authorization": "Bearer sk_surfit_YOUR_KEY_HERE"
}
}
}
}
Save and restart Claude Desktop. The seven Surfit tools will appear in your tool list. Try a prompt like "Post a tweet announcing our new feature" — Claude will call surfit_x_post, Surfit will evaluate the proposed tweet, and either auto-publish or hold it for your approval.
From any project directory, run:
claude mcp add surfit \
--transport http \
--header "Authorization: Bearer sk_surfit_YOUR_KEY_HERE" \
https://mcp.surfit.ai/mcp
Or edit your ~/.claude.json directly:
{
"mcpServers": {
"surfit": {
"type": "http",
"url": "https://mcp.surfit.ai/mcp",
"headers": {
"Authorization": "Bearer sk_surfit_YOUR_KEY_HERE"
}
}
}
}
Restart Claude Code. Verify the connection with /mcp — you should see surfit listed with seven tools.
Open Cursor settings, navigate to Features → MCP, click Add new MCP server, and use the same config:
{
"mcpServers": {
"surfit": {
"url": "https://mcp.surfit.ai/mcp",
"headers": {
"Authorization": "Bearer sk_surfit_YOUR_KEY_HERE"
}
}
}
}
Open Cline's MCP settings, click Configure MCP Servers, and add:
{
"mcpServers": {
"surfit": {
"transportType": "http",
"url": "https://mcp.surfit.ai/mcp",
"headers": {
"Authorization": "Bearer sk_surfit_YOUR_KEY_HERE"
}
}
}
}
The Surfit MCP server exposes seven tools, one per supported system:
Every tool returns a structured message describing what happened. Examples:
Action executed. Surfit Wave 2. ID: x-12790e2f. (x / post_tweet)
Wave 2 means the action passed risk evaluation and was logged + executed. The ID is your reference for the audit log.
Action held for human approval. Surfit Wave 5. ID: gmail-21d6667b.
Approver will review and either approve or reject. You will not see the action complete until it is approved.
Wave 5 means the action was risky enough to require explicit human approval. Approvers receive the action in the Surfit dashboard and can approve, reject, or modify it. The agent receives a clear signal that its action is pending — it knows not to retry or proceed.
Scoring incorporates the agent's history, the destination system, the action type, content sensitivity, and any cross-system patterns Surfit detects in real time.
Check the client's MCP logs for connection errors. The most common causes: (1) the API key is invalid or revoked, (2) the URL is missing the /mcp suffix, (3) the JSON config has a syntax error from a missing comma or trailing comma.
The bearer token is missing or wrong. Verify the key in your config matches the key shown in your Surfit admin dashboard. Keys can be revoked and re-issued at any time.
Tune your Wave thresholds in the Surfit admin dashboard. Each customer has independent threshold settings. You can also write natural-language policies that override defaults for specific action patterns.
If the agent has been given direct credentials for Slack / GitHub / etc. in addition to Surfit, it may bypass Surfit. The architectural fix is to remove the direct credentials from the agent's environment entirely. Surfit then becomes the only path to the live system.
The MCP server is a stateless translator. It does not store your API key, credentials, or action data — it forwards each request to the Surfit governance engine using whatever bearer token your client supplies. All transit is HTTPS-only. The cert is auto-renewed via Let's Encrypt.
Each Surfit tenant has isolated credential storage in the main Surfit engine, encrypted at rest with per-tenant keys. The MCP server cannot read these credentials — only the Surfit engine can, and only for the tenant whose API key authorized the request.
Connect Surfit to your agent stack in 60 seconds.
Get an API keyQuestions? hello@surfit.ai