> **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 Weflow

The Weflow connector lets your AI agent act in each user's Weflow account. Each user connects their own Weflow access token once, and Scalekit sends it with every call, so your agent never handles credentials. It comes with 11 tools.

**Authentication:** Bearer Token
**Categories:** CRM & Sales, Transcription, Analytics
**Tools:** 11: 11 read, 0 write, 0 destructive
**Users sign in with:** Access token
**Built by:** Scalekit connector
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=WEFLOW)

## 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 Weflow connection

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

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 = 'weflow'
   const identifier = 'user_123'

   // Generate an authorization link for the user
   const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
   console.log('Authorize Weflow:', 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: 'weflow_recordings_list',
     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 = "weflow"
   identifier = "user_123"

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

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

   ```bash
   python quickstart.py
   ```

   Each user opens the link once and enters their Weflow credentials there. 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: 'weflow_recording_clips_list',
  toolInput: {
    uid: '<uid>',
  },
  connector: 'weflow',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="weflow_recording_clips_list",
    tool_input={
        "uid": "<uid>",
    },
    connection_name="weflow",
    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.

### `weflow_recording_clips_list`

List Recording Clips · Read-only

List saved clips created from a recording.
Returns each clip's id, title, start/end time, and creator.
Use weflow_recording_clips_list to see the highlighted moments saved from a recording.
Requires a recording id from weflow_recordings_list.

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

Inputs:

- `uid` (`string`, required): The recording's UUID or numeric id, from weflow_recordings_list.

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

### `weflow_recording_comments_list`

List Recording Comments · Read-only

List threaded comments on a recording, with replies nested under their parent comment.
Returns each comment's author, text, timestamp, and nested replies.
Use weflow_recording_comments_list to read discussion left on a recording.
Requires a recording id from weflow_recordings_list.

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

Inputs:

- `uid` (`string`, required): The recording's UUID or numeric id, from weflow_recordings_list.

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

### `weflow_recording_get`

Get Recording · Read-only

Get full metadata for a single recording by id.
Returns the recording's title, dates, duration, participants, and any Salesforce records linked to it.
Use weflow_recording_get once you have a recording id from weflow_recordings_list.

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

Inputs:

- `uid` (`string`, required): The recording's UUID or numeric id, from weflow_recordings_list.

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

### `weflow_recording_interaction_metrics_list`

List Recording Interaction Metrics · Read-only

List per-participant conversation analytics for a recording, such as talk ratio, longest monologue, and questions asked per hour.
Returns one interaction-metrics object per participant.
Use weflow_recording_interaction_metrics_list to analyze how a conversation was balanced between participants.
Requires a recording id from weflow_recordings_list.

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

Inputs:

- `uid` (`string`, required): The recording's UUID or numeric id, from weflow_recordings_list.

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

### `weflow_recording_scorecards_list`

List Recording Scorecards · Read-only

List cached coaching scorecards for a recording, one per scoring template that has been run against it.
Returns each scorecard's template, criteria scores, and overall result.
Use weflow_recording_scorecards_list to review how a call was scored for coaching purposes.
Requires a recording id from weflow_recordings_list.

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

Inputs:

- `uid` (`string`, required): The recording's UUID or numeric id, from weflow_recordings_list.

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

### `weflow_recording_summary_get`

Get Recording Summary · Read-only

Get the AI-generated summary of a recording for a given summary template.
Returns the generated summary text for the recording.
Use weflow_recording_summary_get after picking a template with weflow_summary_templates_list, or omit the template to use the company's default.
Requires a recording id from weflow_recordings_list.

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

Inputs:

- `uid` (`string`, required): The recording's UUID or numeric id, from weflow_recordings_list.
- `templateId` (`string`, optional): UUID of the summary template to use, from weflow_summary_templates_list. If omitted, the company's default summary template is used.

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

### `weflow_recording_trackers_list`

List Recording Trackers · Read-only

List trackers that matched on a recording, with each tracker's matched phrases.
Returns each tracker's name and the phrase matches found in the conversation.
Use weflow_recording_trackers_list to see which tracked keywords or topics came up in a call.
Requires a recording id from weflow_recordings_list.

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

Inputs:

- `uid` (`string`, required): The recording's UUID or numeric id, from weflow_recordings_list.

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

### `weflow_recording_transcript_get`

Get Recording Transcript · Read-only

Get the full transcript of a recording, grouped by speaker with per-word timestamps.
Returns an array of transcript segments, or an empty array if transcription never produced output.
Use weflow_recording_transcript_get to read or search what was said in a recording.
Requires a recording id from weflow_recordings_list.

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

Inputs:

- `uid` (`string`, required): The recording's UUID or numeric id, from weflow_recordings_list.

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

### `weflow_recording_video_get`

Get Recording Video · Read-only

Get pre-signed URLs to stream or download a recording's video.
Returns a stream URL, a download URL, and their expiration timestamp — the URLs expire after 1 hour.
Use weflow_recording_video_get to access the video itself; use weflow_recording_get for the recording's metadata.
Requires a recording id from weflow_recordings_list.

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

Inputs:

- `uid` (`string`, required): The recording's UUID or numeric id, from weflow_recordings_list.

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

### `weflow_recordings_list`

List Recordings · Read-only

List call and meeting recordings for the company, newest first.
Returns a page of recordings (id, title, dates, participants, Salesforce links) plus a nextCursor and hasMore flag for pagination.
Use weflow_recordings_list to browse or filter recordings; use weflow_recording_get for one recording's full metadata by id.

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

Inputs:

- `cursor` (`string`, optional): Pagination cursor from a previous response's nextCursor field, used to fetch the next page. Leave unset for the first page.
- `endDate` (`string`, optional): Only return recordings that occurred on or before this date, as an ISO 8601 datetime.
- `limit` (`integer`, optional): Number of recordings to return per page, from 1 to 100. Defaults to 20. Default: `20`.
- `sfEventId` (`string`, optional): Only return the recording linked to this Salesforce event id. Returns an empty list if no recording matches.
- `startDate` (`string`, optional): Only return recordings that occurred on or after this date, as an ISO 8601 datetime.

Example input: `{}`

### `weflow_summary_templates_list`

List Summary Templates · Read-only

List the AI summary templates available for the company.
Returns each template's id and name.
Use weflow_summary_templates_list to find a template id to pass to weflow_recording_summary_get.

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

Inputs: none.

Example input: `{}`

## Related

Other CRM & Sales connectors ([all 64](/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 |
