Sybill MCP

Coming soon

OAUTH 2.1

CRM

CRM & Sales

Every sales call summary, deal insight, and account conversation history your revenue agent needs lives in Sybill. Sybill MCP gives your agent per-user OAuth access to AI-generated sales intelligence scoped to the authorizing rep.

  • Acts as the user: Call summaries and deal data stay scoped to the Sybill account that authorized the agent.
  • Credentials stay vaulted: AES-256, resolved at request time, never in LLM context.
  • Scoped before every call: User permissions enforced. 90-day audit trail.
Sybill MCP
agent · Acme Q3
Run
Summarize the last 3 calls with Acme Corp and list any open commitments.
S
sybill_calls_list
112ms
Revenue agent
3 Acme calls found. Open commitments: pricing deck promised by Friday, security questionnaire requested (pending), executive intro call to be scheduled by Sarah.
Sources: Sybill call summaries, Acme Corp account
sybillmcp
3
18:29
Message Claude...

Tools your agent reaches for on Sybill MCP, scoped per user.

CALL ANY TOOL
Access AI-generated call summaries, deal context, and account conversation history. Same toolkit, every framework, no auth plumbing.
sybill_calls_list
List calls
List recent sales calls with AI-generated summaries, next steps, and sentiment scores.
Parameters
Name
Type
Required
Description
account_name
string
Optional
Filter by account or company name
limit
integer
Optional
Max calls to return (default 10)
from_date
string
Optional
Start date (ISO 8601)
sybill_call_summary_get
Get call summary
sybill_magic_summary_get
Get magic summary
sybill_deals_get
Get deal context
sybill_accounts_get
Get account history
Build your Agent
Drop the toolkit in, point it at the user, and your agent can pull Sybill call summaries and deal context from the first run.
Python · LlamaIndex
import { ScalekitClient } from "@scalekit-sdk/node";
import { DynamicStructuredTool } from "@langchain/core/tools";
import { createReactAgent } from "@langchain/langgraph/prebuilt";
import { z } from "zod";

const sk = new ScalekitClient(envUrl, clientId, clientSecret);

const { tools } = await sk.tools.listScopedTools("user_123", {
filter: { connectionNames: ["sybillmcp"], toolNames: ["sybill_calls_list", "sybill_call_summary_get", "sybill_magic_summary_get"] },
pageSize: 100,
});

const lcTools = tools.map((t) => new DynamicStructuredTool({
name: t.tool.definition.name,
description: t.tool.definition.description,
schema: z.object({}).passthrough(),
func: async (args) => {
const { data } = await sk.tools.executeTool({
toolName: t.tool.definition.name,
identifier: "user_123",
params: args,
});
return JSON.stringify(data);
},
}));

const agent = createReactAgent({ llm, tools: lcTools });
import { ScalekitClient } from "@scalekit-sdk/node";
import OpenAI from "openai";

const sk = new ScalekitClient(envUrl, clientId, clientSecret);
const openai = new OpenAI();

const { tools } = await sk.tools.listScopedTools("user_123", {
filter: { connectionNames: ["sybillmcp"], toolNames: ["sybill_calls_list", "sybill_call_summary_get", "sybill_magic_summary_get"] },
pageSize: 100,
});

const llmTools = tools.map((t) => ({
type: "function",
function: {
name: t.tool.definition.name,
description: t.tool.definition.description,
parameters: t.tool.definition.input_schema,
},
}));

const resp = await openai.responses.create({
model: "gpt-4o", input: prompt, tools: llmTools,
});
import { ScalekitClient } from "@scalekit-sdk/node";
import Anthropic from "@anthropic-ai/sdk";

const sk = new ScalekitClient(envUrl, clientId, clientSecret);
const anthropic = new Anthropic();

const { tools } = await sk.tools.listScopedTools("user_123", {
filter: { connectionNames: ["sybillmcp"], toolNames: ["sybill_calls_list", "sybill_call_summary_get", "sybill_magic_summary_get"] },
pageSize: 100,
});

const llmTools = tools.map((t) => ({
name: t.tool.definition.name,
description: t.tool.definition.description,
input_schema: t.tool.definition.input_schema,
}));

const msg = await anthropic.messages.create({
model: "claude-sonnet-4-6", max_tokens: 1024,
tools: llmTools,
messages: [{ role: "user", content: prompt }],
});
import { Agent } from "@google/adk/agents";
import {
MCPToolset, StreamableHTTPConnectionParams,
} from "@google/adk/tools/mcp";

const toolset = new MCPToolset({
connectionParams: new StreamableHTTPConnectionParams({
url: "https://mcp.scalekit.com/sybillmcp",
headers: { Authorization: `Bearer ${userScopedToken}` },
}),
});

const agent = new Agent({
name: "agent", model: "gemini-2.0-flash",
tools: await toolset.getTools(),
});
Try these prompts
Paste any prompt into your revenue agent to start pulling sales intelligence from Sybill.
Search & recall
Copy the prompt
Copied
Summarize the last [N] calls with [account name].
Copy the prompt
Copied
What open commitments came out of my calls this week?
Copy the prompt
Copied
Get the magic summary for [call ID].
Deal intelligence
Copy the prompt
Copied
What is the deal health for [opportunity name]?
Copy the prompt
Copied
Show stakeholder sentiment across all calls with [account].
Copy the prompt
Copied
List all calls where pricing was discussed this quarter.
SEE HOW AUTH WORKS
Reps authorize Sybill once. Their credentials stay vaulted, every call summary is scoped to their account, and every access is logged.
1
Authorize
Your user connects
Sybill MCP
once. We tie it to their identity and the meetings they approved — no shared bot account, no org-wide access
Who:
user ‘A’
when:
Once per user
access:
Limited to user
2
Store
Their
Sybill MCP
token lives in a vault scoped to them. User A's meetings are never reachable by an agent acting for user B, even on the same connection
vault:
encrypted
scope:
per-user
tokens:
auto-refreshed
3
Resolve
When your agent calls a
Sybill MCP
tool, we fetch the right token server-side. It never touches your agent, never appears in the LLM context, never shows up in your logs
speed:
~40ms
check:
before every call
seen by:
nobody
4
Audit
Every
Sybill MCP
tool call is logged — who triggered it, which meeting was fetched, what came back. 90 days of history, tied to the user who authorized it
history:
90 days
export:
SIEM-ready
logged:
every call
Test other agents
Same per-user auth pattern across other CRM and sales intelligence connectors.
No items found.
Why Scalekit
Secure your agent's access. Connectors ship in minutes
Other connector libraries treat auth as a demo afterthought. Scalekit starts with user identity, scope enforcement, and audit.
01.
Shared tokens break per-user analytics
A shared token looks fine in a demo. In production every call looks like a service account. Scalekit resolves the real user credential so attribution, audit, and scope stay accurate.
// shared token
 audit → bot_service_account
 user_filter → broken

 // scalekit
 audit → user_abc
 scope → enforced ✓
02.
Authentication is not authorization
03.
Multi-tenancy is architectural
04.
Sybill MCP today. Others tomorrow.
“Our agents act across Salesforce, Gong, Google Drive, and more, on behalf of every customer. Scalekit behind the scenes meant we can keep adding tools without ever rebuilding how credentials or tool calling work.”
Venu Madhav Kattagoni
Head of Engineering / Von
FAQs
Frequently Asked Questions
Does the agent access Sybill as the rep or a shared account?
As the rep. Each sales rep authorizes once and Scalekit resolves their credential at request time. Call summaries and deal data are scoped to that rep's Sybill account.
Where is the Sybill OAuth token stored?
In Scalekit's AES-256 vault, namespaced per tenant. Tokens never appear in prompts or LLM context.
Can I restrict the agent to specific call data?
Yes. Use listScopedTools to allow summary retrieval without granting deal health or account history access.
What happens when a rep revokes Sybill access?
The connection is invalidated on the next tool call. Subsequent requests fail closed. Other reps remain unaffected.
Can the agent combine Sybill summaries with CRM data in one workflow?
Yes. A single agent can pull Sybill summaries and Salesforce or HubSpot deal data in the same workflow, each using the same rep identity.
Start in your coding agent
Up and running in one command
Install the Scalekit skill in your editor of choice. Connector, auth, tools, prompt, all wired up
Claude Code REPL
/plugin marketplace add scalekit-inc/claude-code-authstack
/plugin install agentkit@scalekit-auth-stack
Cursor Code REPL
# ~/.cursor/mcp.json
{
""mcpServers"": {
""sybillmcp"": {
""url"": ""https://mcp.scalekit.com/sybillmcp"",
""headers"": { ""Authorization"": ""Bearer $SCALEKIT_TOKEN"" }
}
}
}
Codex Code REPL
# ~/.codex/config.toml
[mcp_servers.sybillmcp]
url = ""https://mcp.scalekit.com/sybillmcp""
auth_env = ""SCALEKIT_TOKEN""
Copilot Code REPL
# .vscode/mcp.json
{
""servers"": {
""sybillmcp"": {
""url"": ""https://mcp.scalekit.com/sybillmcp"",
""type"": ""http""
}
}
}