> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended** (the `-y` flags skip prompts, so the command runs without an interactive terminal):
> ```bash
> npx -y @scalekit-inc/cli setup -y
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup -y
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for other Agent Skills-compatible agents in `~/.agents/skills`.
> Skills: integrate-agentkit, implement-saaskit, add-mcp-oauth, implement-sso, implement-scim.
> [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Connect AI agents to the Sybill MCP server

The Sybill MCP connector routes your AI agent's tool calls to Sybill's own MCP server through Scalekit. Each user signs in to Sybill once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 7 tools.

**Authentication:** OAuth 2.1/DCR
**Categories:** CRM & Sales, AI, Analytics
**Tools:** 7: 7 read, 0 write, 0 destructive
**Users sign in with:** OAuth
**OAuth app:** Scalekit's or your own
**Built by:** Vendor MCP
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=SYBILMCP)

## Setup

1. ### Install the SDK

   **Node.js**

   ```bash
   npm install @scalekit-sdk/node dotenv
   ```

   **Python**

   ```bash
   pip install scalekit-sdk-python python-dotenv
   ```

2. ### Set your credentials

   Add your Scalekit credentials to your `.env` file. Find values in **[app.scalekit.com](https://app.scalekit.com)** > **Developers** > **API Credentials**.

   ```sh title=".env"
   SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
   SCALEKIT_CLIENT_ID=<your-client-id>
   SCALEKIT_CLIENT_SECRET=<your-client-secret>
   ```

3. ### Create the Sybill MCP connection

   In **AgentKit > Connections**, create a Sybill MCP connection. The name you give it is the `connection_name` your code passes. See [Configure connections](/agentkit/connections/).

   Scalekit credentials are available for Sybill MCP server, so you don't need to register an OAuth app.

4. ### Authorize a user and make your first call

   **Node.js** (`quickstart.mts`)

   ```typescript
   import { ScalekitClient } from '@scalekit-sdk/node'
   import 'dotenv/config'
   import { createInterface } from 'node:readline/promises'

   const scalekit = new ScalekitClient(
     process.env.SCALEKIT_ENVIRONMENT_URL,
     process.env.SCALEKIT_CLIENT_ID,
     process.env.SCALEKIT_CLIENT_SECRET,
   )
   const actions = scalekit.actions

   const connector = 'sybilmcp'
   const identifier = 'user_123'

   // Generate an authorization link for the user
   const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
   console.log('Authorize Sybill MCP:', link)
   const rl = createInterface({ input: process.stdin, output: process.stdout })
   await rl.question('Press Enter after authorizing...')
   rl.close()

   // Make your first call
   const result = await actions.executeTool({
     connector,
     identifier,
     toolName: 'sybilmcp_list_accounts',
     toolInput: {},
   })
   console.log(result)
   ```

   ```bash
   npx tsx quickstart.mts
   ```

   **Python** (`quickstart.py`)

   ```python
   import os
   from scalekit import ScalekitClient
   from dotenv import load_dotenv
   load_dotenv()

   scalekit_client = ScalekitClient(
       env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),
       client_id=os.getenv("SCALEKIT_CLIENT_ID"),
       client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),
   )
   actions = scalekit_client.actions

   connection_name = "sybilmcp"
   identifier = "user_123"

   # Generate an authorization link for the user
   link_response = actions.get_authorization_link(
       connection_name=connection_name,
       identifier=identifier,
   )
   print("Authorize Sybill MCP:", link_response.link)
   input("Press Enter after authorizing...")

   # Make your first call
   result = actions.execute_tool(
       tool_input={},
       tool_name="sybilmcp_list_accounts",
       connection_name=connection_name,
       identifier=identifier,
   )
   print(result)
   ```

   ```bash
   python quickstart.py
   ```

   Each user signs in once. See [Authorize a user](/agentkit/tools/authorize/) for the full flow and statuses.

## Tools

Pass the exact name to `execute_tool`, with an input like each tool's example. To ask for a tool that's missing, use the [request form](https://scalekitsupport.portal.usepylon.com/forms/request-a-connector-tool).

**Node.js**

```typescript
const result = await actions.executeTool({
  toolName: 'sybilmcp_ask_sybill',
  toolInput: {
    message: '<message>',
  },
  connector: 'sybilmcp',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="sybilmcp_ask_sybill",
    tool_input={
        "message": "<message>",
    },
    connection_name="sybilmcp",
    identifier="user_123",
)
```

`result.data` is the app's response as JSON, and `result.execution_id` (`executionId` in Node.js) is the ID of the call.

### `sybilmcp_ask_sybill`

Ask Sybill · Read-only

Ask Sybill AI about your sales calls, deals, accounts, or contacts.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `message` (`string`, required): Your question about sales calls, deals, accounts, or contacts.

Example input: `{"message":"<message>"}`

### `sybilmcp_get_account`

Get Account · Read-only

Get full details of a single CRM account including contacts, owner, and synced CRM fields.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `account_id` (`string`, required): Unique ID of the account. Get it from List Accounts.

Example input: `{"account_id":"<account_id>"}`

### `sybilmcp_get_conversation`

Get Conversation · Read-only

Get full details of a single conversation including summary, transcript, and recording URLs.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `conversation_id` (`string`, required): Unique ID of the conversation. Get it from List Conversations.

Example input: `{"conversation_id":"<conversation_id>"}`

### `sybilmcp_get_deal`

Get Deal · Read-only

Get full details of a single CRM deal including summary, contacts, owner, pipeline, and stage.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `deal_id` (`string`, required): Unique ID of the deal. Get it from List Deals.

Example input: `{"deal_id":"<deal_id>"}`

### `sybilmcp_list_accounts`

List Accounts · Read-only

List CRM accounts with optional filters for name, website, owner, and date ranges.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `created_after` (`string`, optional): Return records created after this ISO 8601 datetime.
- `created_before` (`string`, optional): Return records created before this ISO 8601 datetime.
- `cursor` (`string`, optional): Pagination cursor from the previous response to fetch the next page.
- `last_activity_after` (`string`, optional): Return records with last activity after this ISO 8601 datetime.
- `last_activity_before` (`string`, optional): Return records with last activity before this ISO 8601 datetime.
- `limit` (`integer`, optional): Maximum number of items to return per page. Default: `20`.
- `name` (`string`, optional): Filter by account or deal name (partial match supported).
- `owner` (`string`, optional): Filter by owner email address.
- `website` (`string`, optional): Filter by account website domain.

Example input: `{}`

### `sybilmcp_list_conversations`

List Conversations · Read-only

List sales conversations with optional filters for date range, meeting type, and attendees.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `attendees` (`string`, optional): Filter conversations by attendee email address.
- `crm_name` (`string`, optional): Filter by CRM name (e.g. Salesforce, HubSpot).
- `cursor` (`string`, optional): Pagination cursor from the previous response to fetch the next page.
- `limit` (`integer`, optional): Maximum number of items to return per page. Default: `20`.
- `meeting_type` (`string`, optional): Filter conversations by meeting category (e.g. prospect_demo, customer_onboarding, one_on_one).
- `source_id` (`string`, optional): Filter by source/integration ID.
- `started_after` (`string`, optional): Return conversations that started after this ISO 8601 datetime.
- `started_before` (`string`, optional): Return conversations that started before this ISO 8601 datetime.
- `title` (`string`, optional): Filter conversations by title (partial match supported).

Example input: `{}`

### `sybilmcp_list_deals`

List Deals · Read-only

List CRM deals with optional filters for name, stage, amount, owner, and close date.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `amount_max` (`string`, optional): Return deals with amount less than or equal to this value.
- `amount_min` (`string`, optional): Return deals with amount greater than or equal to this value.
- `close_date_after` (`string`, optional): Return deals with close date after this date (YYYY-MM-DD).
- `close_date_before` (`string`, optional): Return deals with close date before this date (YYYY-MM-DD).
- `closed` (`string`, optional): Filter by closed status: true for closed deals, false for open.
- `cursor` (`string`, optional): Pagination cursor from the previous response to fetch the next page.
- `last_activity_after` (`string`, optional): Return records with last activity after this ISO 8601 datetime.
- `last_activity_before` (`string`, optional): Return records with last activity before this ISO 8601 datetime.
- `limit` (`integer`, optional): Maximum number of items to return per page. Default: `20`.
- `name` (`string`, optional): Filter by account or deal name (partial match supported).
- `owner` (`string`, optional): Filter by owner email address.
- `stage` (`string`, optional): Filter deals by pipeline stage name.

Example input: `{}`

## Related

Other CRM & Sales connectors ([all 65](/agentkit/connectors/?category=crm-sales)):

- [HubSpot](/agentkit/connectors/hubspot/): Scalekit connector, OAuth, 457 tools
- [Salesforce](/agentkit/connectors/salesforce/): Scalekit connector, OAuth, 74 tools
- [Close](/agentkit/connectors/close/): Scalekit connector, OAuth, 103 tools


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
