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

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

**Authentication:** Bearer Token
**Categories:** Transcription, AI, Productivity
**Tools:** 36: 18 read, 14 write, 4 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=FIREFLIES)

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

   In **AgentKit > Connections**, create a Fireflies 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 = 'fireflies'
   const identifier = 'user_123'

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

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

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

   ```bash
   python quickstart.py
   ```

   Each user opens the link once and enters their Fireflies 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: 'fireflies_active_meetings_list',
  toolInput: {},
  connector: 'fireflies',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="fireflies_active_meetings_list",
    tool_input={},
    connection_name="fireflies",
    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.

### `fireflies_active_meetings_list`

List Active Meetings · Read-only

List the meetings the Fireflies bot is currently in (in progress, either recording or paused), optionally for one user's email or only those in the active or paused state.
Returns each meeting's id, title, organizer email, meeting link, start time, scheduled end time, privacy setting, and state (active or paused).
Use this to find the meeting ID that fireflies_live_action_items_list, fireflies_live_action_item_create, fireflies_live_soundbite_create, and fireflies_meeting_state_update need. Use fireflies_transcripts_list for finished meetings, and fireflies_live_meeting_add to send the bot into a call it is not yet in.
Regular users can only list their own meetings; listing another user's meetings needs admin privileges and a user in the same team. Fireflies can answer HTTP 200 with an errors array next to partial data, so use whatever data is present instead of treating the call as failed.

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

Inputs:

- `email` (`string`, optional): Email address of the team member whose in-progress meetings to list. Omit it to list the connected user's own meetings. Regular users can only pass their own email; admins can pass the email of any user in their team. The email must belong to a user in the same team as the connected user. Example: rep@company.com
- `states` (`array`, optional): Only return meetings in these states. active means the Fireflies bot is in the meeting and actively recording; paused means the bot is still in the meeting but recording is temporarily stopped. Omit it to return meetings in both states; an empty list is treated the same as omitting it. Example: ["active"]

Example input: `{}`

### `fireflies_analytics_get`

Get Analytics · Read-only

Get Fireflies conversation and meeting analytics for the team and for each user, optionally limited to a date range.
Returns team-level meeting counts and durations, averages and totals for filler words, questions, monologues, silence, talk-to-listen ratio, words per minute and average sentiment percentages, plus a per-user breakdown of speaking time, word counts, questions, filler words, monologues and meeting counts, each with its change versus the previous period where Fireflies provides one. Durations are in minutes, except the longest-monologue fields, which are in seconds.
Use this for team or per-user talk-time and meeting-volume metrics over a period. Use fireflies_transcripts_list to find the individual meetings behind the numbers, fireflies_transcript_get for one meeting's content, and fireflies_users_list for the team roster without metrics.
Requires a Business or higher plan (without it Fireflies returns paid_required: "You need to be subscribed to a business or higher plan to perform this action"), and start_time and end_time must be at most 30 days apart (a longer range returns invalid_arguments) and admin privileges (without them Fireflies returns require_elevated_privilege: "The user does not have admin privileges to view analytics for team."). Fireflies can answer HTTP 200 with an errors array next to partial data, so use whatever data is present instead of treating the call as failed.

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

Inputs:

- `end_time` (`string`, optional): End of the reporting period as an ISO 8601 datetime; analytics are limited to activity up to this moment. Pair it with start_time for a closed range. Leave empty to send no end filter. Example: 2025-01-31T23:59:59.000Z
- `start_time` (`string`, optional): Start of the reporting period as an ISO 8601 datetime; analytics are limited to activity from this moment onward. Pair it with end_time for a closed range. Leave empty to send no start filter. Example: 2025-01-01T00:00:00.000Z

Example input: `{}`

### `fireflies_apps_list`

List AI App Outputs · Read-only

List the outputs that Fireflies AI Apps generated for meetings, optionally filtered by AI App ID or by transcript ID.
Returns each output's transcript_id, user_id (the owner of the AI App), app_id, title, prompt, response, and created_at as Unix time in milliseconds. Page with limit (max 10) and skip.
Use this to read what an AI App produced for a meeting or across meetings. Use fireflies_transcript_get for a meeting's own summary and sentences, and fireflies_transcripts_list to find transcript IDs.
To filter by meeting, take the transcript ID from fireflies_transcripts_list first; AI App IDs come from the app_id field of earlier results. An unknown transcript_id can make Fireflies answer HTTP 200 with an INTERNAL_SERVER_ERROR entry in the errors array instead of an empty list, so check the ID before retrying. Fireflies can answer HTTP 200 with an errors array next to partial data, so use whatever data is present instead of treating the call as failed.

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

Inputs:

- `app_id` (`string`, optional): Return only the outputs produced by this AI App, identified by its app ID (the app_id field of an earlier result). Leave empty to include every AI App. Example: 01JABCDEF3GHJKMNPQRSTVWXYA
- `limit` (`integer`, optional): Maximum number of AI App outputs to return in one call, from 1 to 10. Fireflies returns 10 records by default, which is also the maximum for a single request, so use skip to page through more. Defaults to 10. Default: `10`.
- `skip` (`integer`, optional): Number of AI App outputs to skip before returning results, used with limit for paging. Add the previous limit to the previous skip to get the next page, for example skip 10 with limit 10 for the second page. Leave empty or use 0 to start at the first output.
- `transcript_id` (`string`, optional): Return only the AI App outputs generated for this meeting, using the id field from fireflies_transcripts_list. Leave empty to include outputs from every meeting. Example: 01HZX2ABCDEF3GHJKMNPQRSTVW

Example input: `{}`

### `fireflies_askfred_thread_get`

Get AskFred Thread · Read-only

Fetch one AskFred conversation thread by its ID, including every question and answer in it.
Returns the thread's id, title, linked transcript_id, owner user_id, and created_at, plus each message's id, thread_id, query (the question), answer, suggested_queries (follow-up questions), status (processing, completed, or failed), created_at, and updated_at.
Use this to read or review a thread's history. Use fireflies_askfred_threads_list to find thread IDs without loading the messages, and fireflies_askfred_thread_continue to ask another question inside the thread.
Requires a thread ID from fireflies_askfred_threads_list or from the thread_id of a fireflies_askfred_thread_create result. A message with status processing is still being answered, so call again later for its final answer. Fireflies can answer HTTP 200 with an errors array next to partial data, so use whatever data is present instead of treating the call as failed.

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

Inputs:

- `thread_id` (`string`, required): ID of the AskFred thread to fetch, taken from the id field returned by fireflies_askfred_threads_list or from the thread_id on the message returned by fireflies_askfred_thread_create. Example: thread_abc123

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

### `fireflies_askfred_threads_list`

List AskFred Threads · Read-only

List the AskFred conversation threads owned by the connected Fireflies user, optionally only those linked to one transcript.
Returns a summary of each thread with its id, title, linked transcript_id (when it is tied to one meeting), owner user_id, and created_at timestamp; the messages are left out and the query takes no limit or paging arguments.
Use this to find thread IDs. Use fireflies_askfred_thread_get for the full questions and answers of one thread, fireflies_askfred_thread_create to start a new conversation, and fireflies_askfred_thread_continue to add a follow-up question to a thread.
Lists only threads that belong to the user who owns the API key. Fireflies can answer HTTP 200 with an errors array next to partial data, so use whatever data is present instead of treating the call as failed.

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

Inputs:

- `transcript_id` (`string`, optional): Return only the AskFred threads linked to this Fireflies transcript, using the id returned by fireflies_transcripts_list. Leave blank to return all of your threads. Example: 01HZX2ABCDEF3GHJKMNPQRSTVW

Example input: `{}`

### `fireflies_audit_events_list`

List Audit Events · Read-only

List audit events (Beta) for the connected Fireflies team within one category, optionally narrowed to one action, a date range, or the person who performed it.
Returns each event's id, time, category, action, severity, status, message, the actor (user_id, email, full_name, ip_address, any of which can be null), the affected resource (type and id), the OCSF class_uid, activity_id, and type_uid, and a metadata JSON string whose keys depend on the action, plus has_more and next_cursor for paging.
Use this to see who deleted, viewed, shared, downloaded, or changed meetings, teammates, roles, and settings, and who logged in or out. Use fireflies_rule_executions_list for what Fireflies automation rules did to meetings, and fireflies_users_list to resolve actor user IDs and emails.
Requires an Enterprise plan and an API key that belongs to a team admin (otherwise Fireflies returns paid_required or require_elevated_privilege). category is required. Page with limit (1 to 50) and the next_cursor value of the previous page while has_more is true. Fireflies can answer HTTP 200 with an errors array next to partial data, so use whatever data is present instead of treating the call as failed.

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

Inputs:

- `category` (`string`, required): Group of audit events to return. Required. MEETING_OPERATIONS covers meeting deleted, privacy updated, viewed, shared, access revoked, downloaded, title updated, moved to a channel, and soundbite created. TEAM_OPERATIONS covers teammate added or removed and user group members added or removed. USER_OPERATIONS covers user role changes and team settings updates. AUTHENTICATION covers user login and logout. Example: MEETING_OPERATIONS. One of: `MEETING_OPERATIONS`, `TEAM_OPERATIONS`, `USER_OPERATIONS`, `AUTHENTICATION`.
- `action` (`string`, optional): Return only events of this specific action, which must belong to the chosen category. MEETING_OPERATIONS actions: MEETING_DELETED, MEETING_PRIVACY_UPDATED, MEETING_VIEWED (a meeting summary was viewed), MEETING_SHARED, MEETING_ACCESS_REVOKED, MEETING_DOWNLOADED (a transcript or recording was downloaded), MEETING_TITLE_UPDATED, MEETING_MOVED_TO_CHANNEL, SOUNDBITE_CREATED. TEAM_OPERATIONS actions: TEAMMATE_ADDED, TEAMMATE_REMOVED, USER_GROUP_MEMBER_ADDED, USER_GROUP_MEMBER_REMOVED. USER_OPERATIONS actions: USER_ROLE_CHANGED, SETTINGS_UPDATED. AUTHENTICATION actions: LOGIN, LOGOUT. Leave empty to return every action in the category. Example: MEETING_DELETED. One of: `MEETING_DELETED`, `MEETING_PRIVACY_UPDATED`, `MEETING_VIEWED`, `MEETING_SHARED`, `MEETING_ACCESS_REVOKED`, `MEETING_DOWNLOADED`, `MEETING_TITLE_UPDATED`, `MEETING_MOVED_TO_CHANNEL`, `SOUNDBITE_CREATED`, `TEAMMATE_ADDED`, `TEAMMATE_REMOVED`, `USER_ROLE_CHANGED`, `USER_GROUP_MEMBER_ADDED`, `USER_GROUP_MEMBER_REMOVED`, `SETTINGS_UPDATED`, `LOGIN`, `LOGOUT`.
- `actor_email` (`string`, optional): Return only events performed by the Fireflies user with this email address. Fireflies resolves the email to a user ID, and it takes precedence over actor_user_id when both are set. Example: alice@example.com
- `actor_user_id` (`string`, optional): Return only events performed by the Fireflies user with this user ID, as returned in user_id by fireflies_users_list or in an earlier event's actor. If actor_email is also set, actor_email takes precedence and this value is ignored. Example: user_abc123
- `cursor` (`string`, optional): Paging cursor. Pass the next_cursor value from the previous response to fetch the next page, and keep the same category and filters. Omit it for the first page. Example: eyJpZCI6IjdhMWM0ZDVlIn0=
- `date_from` (`string`, optional): Return only events that occurred from this date, as an ISO 8601 timestamp. Example: 2026-10-01T00:00:00.000Z
- `date_to` (`string`, optional): Return only events that occurred up to this date, as an ISO 8601 timestamp. Example: 2026-10-14T23:59:59.000Z
- `limit` (`integer`, optional): Maximum number of events to return, from 1 to 50. Defaults to 20. Use next_cursor to fetch further pages. Example: 20. Default: `20`.

Example input: `{"category":"MEETING_OPERATIONS"}`

### `fireflies_bite_get`

Get Bite · Read-only

Get one Fireflies bite, a short clip (also called a soundbite) cut from a meeting recording, by its ID.
Returns the bite's name, AI summary and summary status, processing status (pending, processing, ready, or error), media type, start and end time, privacies (who can open it), creation date, source meeting, creator, thumbnail and preview links, media sources, and the caption lines with speaker name, text, and start and end time.
Use this for the full detail and captions of one bite, or to check whether a new bite has finished processing. Use fireflies_bites_list to find bite IDs (it omits captions), fireflies_bite_create to clip a new bite, and fireflies_transcript_get for the full sentences of the whole meeting.
Requires a bite ID from fireflies_bites_list or fireflies_bite_create; an unknown ID returns a null bite with no errors array, not an object_not_found error. Fireflies can answer HTTP 200 with an errors array next to partial data, so use whatever data is present instead of treating the call as failed.

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

Inputs:

- `bite_id` (`string`, required): ID of the Fireflies bite to fetch, taken from the id field returned by fireflies_bites_list or fireflies_bite_create. This is the bite ID, not the transcript ID of the meeting it was cut from. Example: 01JABCDEF2GHJKMNPQRSTVWXYZ

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

### `fireflies_bites_list`

List Bites · Read-only

List Fireflies bites, short clips (also called soundbites) cut from meeting recordings, for the owner of the connected API key (mine or my_team) or for one transcript (transcript_id).
Returns each bite's id, name, AI summary, summary status, processing status (pending, processing, ready, or error), media type, start and end time, privacies, creation date, transcript_id, creator, source meeting, thumbnail and preview links, and media sources, without caption lines. Page with limit (max 50) and skip.
Use this to find bite IDs or to see which clips exist for a meeting. Use fireflies_bite_get for one bite's captions, fireflies_bite_create to clip a new bite, and fireflies_transcripts_list to find transcript IDs.
Requires at least one of mine, my_team, or transcript_id; with none of them Fireflies returns the args_required error. Fireflies can answer HTTP 200 with an errors array next to partial data, so use whatever data is present instead of treating the call as failed.

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

Inputs:

- `limit` (`integer`, optional): Maximum number of bites to return in one call, up to 50 (Fireflies' documented maximum). Fireflies does not document a default page size, so pass an explicit limit such as 25. Example: 25
- `mine` (`boolean`, optional): Set to true to return only the bites that belong to the owner of the connected API key. At least one of mine, my_team, or transcript_id must be provided. Example: true
- `my_team` (`boolean`, optional): Set to true to request the my_team result set. Fireflies documents it only as fetching results for the owner of the API key, so how it differs from mine is not specified; use transcript_id when you need every bite of one meeting. At least one of mine, my_team, or transcript_id must be provided. Example: true
- `skip` (`integer`, optional): Number of bites to skip before returning results, used with limit for paging. Add the previous limit to the previous skip to get the next page. Use 0 or leave blank for the first page. Example: 25
- `transcript_id` (`string`, optional): Return only the bites cut from this transcript (meeting), using the id field from fireflies_transcripts_list. At least one of mine, my_team, or transcript_id must be provided. Example: 01HZX2ABCDEF3GHJKMNPQRSTVW

Example input: `{}`

### `fireflies_channel_get`

Get Channel · Read-only

Get one Fireflies channel by its ID, including the people who belong to it.
Returns the channel's id, title, privacy flag (is_private), creator email (created_by), created_at and updated_at timestamps, and a members list with each member's user_id, email, and name.
Use this when you already have a channel ID and want its details and membership. Use fireflies_channels_list to find channel IDs or compare channels, fireflies_users_list for the whole team roster, and fireflies_meeting_channel_update to move meetings into a channel.
Requires a channel ID from fireflies_channels_list, and access to that channel: a public channel in your team or a private channel you are a member of. An ID that does not exist or is not accessible to you returns the object_not_found error. Fireflies can answer HTTP 200 with an errors array next to partial data, so use whatever data is present instead of treating the call as failed.

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

Inputs:

- `channel_id` (`string`, required): ID of the Fireflies channel to fetch, taken from the id field returned by fireflies_channels_list. The API key owner must be able to see the channel (a public channel in their team, or a private channel they belong to); otherwise Fireflies returns object_not_found. Example: 01JABCDEF3GHJKMNPQRSTVWXYZ

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

### `fireflies_channels_list`

List Channels · Read-only

List every Fireflies channel the connected user can access: the public channels in their team plus the private channels they belong to.
Returns each channel's id, title, privacy flag (is_private), creator email (created_by), created_at and updated_at timestamps, and a members list with each member's user_id, email, and name. The call takes no filters and no paging.
Use this to find channel IDs, see who is in which channel, or pick a destination for fireflies_meeting_channel_update. Use fireflies_channel_get when you already have one channel ID, and fireflies_users_list for the whole team roster.
Fireflies can answer HTTP 200 with an errors array next to partial data, so use whatever data is present instead of treating the call as failed.

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

Inputs: none.

Example input: `{}`

### `fireflies_contacts_list`

List Contacts · Read-only

List the contacts of the connected Fireflies user, meaning the people who have taken part in the user's meetings.
Returns each contact's email, name, profile picture URL (null when none), and last meeting date in YYYY-MM-DD format (null when unknown).
Use this to find who the user has met with and when they last met. Use fireflies_users_list for the teammates in the Fireflies team and fireflies_transcripts_list, filtered by participant email, to find the meetings themselves.
Fireflies can answer HTTP 200 with an errors array next to partial data, so use whatever data is present instead of treating the call as failed.

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

Inputs: none.

Example input: `{}`

### `fireflies_live_action_items_list`

List Live Action Items · Read-only

List the action items captured so far for a meeting that is in progress.
Returns an array where each entry has the action item text (action_item) and the name of the person it is associated with (name, which can be empty). It includes items Fireflies created automatically during the meeting and items added with fireflies_live_action_item_create.
Use this while a meeting is live. Use fireflies_transcript_get for the action items in the summary of a finished meeting, and fireflies_live_action_item_create to add one.
Requires a meeting ID from fireflies_active_meetings_list. Only the meeting organizer or a team admin can view live action items. Fireflies can answer HTTP 200 with an errors array next to partial data, so use whatever data is present instead of treating the call as failed.

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

Inputs:

- `meeting_id` (`string`, required): ID of the live meeting to read action items for, from the id field returned by fireflies_active_meetings_list. Example: 01HZX2ABCDEF3GHJKMNPQRSTVW

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

### `fireflies_rule_executions_list`

List Rule Executions · Read-only

List Fireflies automation rule executions grouped by meeting, optionally filtered by rule, meeting, date range, or test versus production runs.
Returns, for each meeting, its meeting_id, title, organizer email, host, attendees, and user group IDs, and the rule runs on it with extension_id (the rule ID), extension_title (the rule name), stopped_at, user_name (the meeting organizer), and the action the rule took (share group_ids, channel_id, or privacy value), plus has_more and next_cursor for paging.
Use this to see which automation rules fired on which meetings and what they did. Use fireflies_audit_events_list for who performed manual actions such as sharing or deleting, and fireflies_transcripts_list to find the meetings themselves.
Requires an Enterprise plan (otherwise Fireflies returns paid_required). Page meetings with limit (1 to 50) and next_cursor; logs_per_meeting caps the runs returned per meeting (1 to 20). Fireflies can answer HTTP 200 with an errors array next to partial data, so use whatever data is present instead of treating the call as failed.

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

Inputs:

- `cursor` (`string`, optional): Paging cursor. Pass the next_cursor value from the previous response to fetch the next page, and keep the same filters. Omit it for the first page. Example: 1705329001000_01K8DV541XM97WMGRCX66TPSWG
- `date_from` (`string`, optional): Return only executions from this date, as an ISO 8601 timestamp. Example: 2026-10-01T00:00:00.000Z
- `date_to` (`string`, optional): Return only executions up to this date, as an ISO 8601 timestamp. Example: 2026-10-14T23:59:59.000Z
- `is_test` (`boolean`, optional): Choose which kind of rule evaluations to return. true returns only test evaluations, false returns only non-test (production) executions, and leaving it empty returns both. Example: false
- `limit` (`integer`, optional): Maximum number of meeting groups to return, from 1 to 50. Defaults to 10. Use next_cursor to fetch further pages. Example: 10. Default: `10`.
- `logs_per_meeting` (`integer`, optional): Maximum number of rule execution logs to return for each meeting, from 1 to 20. Defaults to 5. Example: 5. Default: `5`.
- `meeting_id` (`string`, optional): Return only executions for this meeting, using the same ID as a transcript ID from fireflies_transcripts_list. Example: 01HZX2ABCDEF3GHJKMNPQRSTVW
- `rule_id` (`string`, optional): Return only executions of this automation rule. Rule IDs appear as extension_id in this tool's own results. Example: 01JB4XK2M9QZ7R3T5V8W0YABCD

Example input: `{}`

### `fireflies_transcript_get`

Get Transcript · Read-only

Get one Fireflies meeting transcript with its speaker-attributed sentences, AI summary, and participants.
Returns the meeting metadata including its privacy setting, the summary (overview, action items, keywords, outline, topics), every sentence with speaker_name, speaker_id, text, and start and end time, and the audio_url and video_url recording links (they expire after about 24 hours and need a Pro plan or above).
Use this for the content of one meeting. Use fireflies_transcripts_list to find transcript IDs first.
Requires a transcript ID from fireflies_transcripts_list. Fireflies can answer HTTP 200 with an errors array next to partial data, so use whatever data is present instead of treating the call as failed.

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

Inputs:

- `transcript_id` (`string`, required): ID of the Fireflies transcript to fetch, from fireflies_transcripts_list. Example: 01HZX2ABCDEF3GHJKMNPQRSTVW

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

### `fireflies_transcripts_list`

List Transcripts · Read-only

List Fireflies meeting transcripts, optionally filtered by date range, participants, organizers, host, keyword, or ownership.
Returns each transcript's id, title, date, duration, host and organizer email, participant emails, meeting link, and transcript URL. Page with limit (max 50) and skip. Send only one of mine, host_email, organizers, or participants per call: Fireflies rejects a combination with invalid_arguments.
Use this to find transcript IDs. Use fireflies_transcript_get for the sentences, summary, and recording URLs of one transcript, and fireflies_users_list to resolve team members.
Fireflies can answer HTTP 200 with an errors array next to partial data, so use whatever data is present instead of treating the call as failed.

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

Inputs:

- `from_date` (`string`, optional): Return transcripts created after this ISO 8601 timestamp. Example: 2025-01-01T00:00:00.000Z
- `host_email` (`string`, optional): Return only meetings hosted by this email address. Example: rep@company.com
- `keyword` (`string`, optional): Return transcripts whose meeting title matches this text (maximum 255 characters). Example: quarterly review
- `limit` (`integer`, optional): Number of transcripts to return, from 1 to 50. Defaults to 25. Default: `25`.
- `mine` (`boolean`, optional): Set to true to return only meetings organized by the owner of the connected API key. Defaults to false.
- `organizers` (`array`, optional): Return meetings organized by any of these email addresses. Example: ["rep@company.com", "manager@company.com"]
- `participants` (`array`, optional): Return meetings attended by any of these email addresses. Example: ["buyer@customer.com"]
- `skip` (`integer`, optional): Number of transcripts to skip, for paging. Add the previous limit to the previous skip to get the next page.
- `to_date` (`string`, optional): Return transcripts created before this ISO 8601 timestamp. Example: 2025-01-31T23:59:59.000Z

Example input: `{}`

### `fireflies_user_get`

Get User · Read-only

Get the profile of one Fireflies user, or of the owner of the connected API key when no user ID is given.
Returns the user's user_id, email, name, admin flag, number of transcripts, minutes consumed, most recent transcript and meeting, enabled integrations, calendar sync status, and the user groups they belong to (id, name, handle).
Use this for the detail of one person or to check your own account. Use fireflies_users_list to list every team member and find user IDs, fireflies_user_groups_list to see who else is in a group, and fireflies_contacts_list for the people the user has met with.
The user ID is optional; take it from fireflies_users_list when you want someone other than the API key owner. Fireflies answers object_not_found if the user ID does not exist and not_in_team if the user is not in your team. Fireflies can answer HTTP 200 with an errors array next to partial data, so use whatever data is present instead of treating the call as failed.

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

Inputs:

- `user_id` (`string`, optional): ID of the Fireflies user to fetch, taken from the user_id field of fireflies_users_list. Omit this field or pass null to get the details of the owner of the connected API key; do not send an empty string. Example: user_456

Example input: `{}`

### `fireflies_user_groups_list`

List User Groups · Read-only

List the user groups in the connected Fireflies team, optionally only the groups the connected user belongs to.
Returns each group's id, name, and handle, and its members with user_id, first_name, last_name, and email.
Use this to find group IDs for fireflies_user_group_member_add and fireflies_user_group_member_remove and to see who is in each group. Use fireflies_user_get for the groups of a single user (without their co-members) and fireflies_users_list for every team member.
Fireflies answers not_authorized when the connected user lacks permission to access user groups for this team. Fireflies can answer HTTP 200 with an errors array next to partial data, so use whatever data is present instead of treating the call as failed.

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

Inputs:

- `mine` (`boolean`, optional): Set to true to return only the user groups that the owner of the connected API key belongs to. Set to false, or omit this field or pass null, to return every user group in the team. Example: true

Example input: `{}`

### `fireflies_users_list`

List Users · Read-only

List the users in the connected Fireflies team.
Returns each user's user_id, email, name, admin flag, and transcript count.
Use this to resolve organizer or participant emails and user IDs. Use fireflies_transcripts_list to list their meetings.
Fireflies can answer HTTP 200 with an errors array next to partial data, so use whatever data is present instead of treating the call as failed.

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

Inputs: none.

Example input: `{}`

### `fireflies_askfred_thread_continue`

Continue AskFred Thread · Write

Add a follow-up question to an existing AskFred conversation thread and get the AI-generated answer, with the thread's earlier questions and answers kept as context.
Returns the new message with its id, thread_id, query, answer, suggested_queries (follow-up questions), status, created_at, and updated_at, plus the cost in AI credits charged.
Use this to keep a conversation going in a thread you already have. Use fireflies_askfred_thread_create to start a new conversation, fireflies_askfred_thread_get to re-read the whole thread, and fireflies_askfred_threads_list to find a thread ID.
Requires a thread ID from fireflies_askfred_threads_list or fireflies_askfred_thread_create. Each call appends a new message to that thread and spends AI credits; the API has no operation to remove a single message, so the only way to undo it is to delete the whole thread with fireflies_askfred_thread_delete. Fireflies returns object_not_found when the thread does not exist or is not accessible, require_ai_credits when the account has insufficient AI credits (upgrade the plan or purchase additional credits), and invalid_language_code for an unsupported response_language. Fireflies can answer HTTP 200 with an errors array next to partial data, so read errors before assuming the change was applied and use whatever data is present.

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

Inputs:

- `query` (`string`, required): The follow-up question to ask inside the existing thread, as a non-empty natural-language question of up to 2000 characters. AskFred answers it with the earlier questions and answers of the thread as context. Example: Can you provide more details about the budget allocation?
- `thread_id` (`string`, required): ID of the existing AskFred thread to continue, taken from the id field returned by fireflies_askfred_threads_list or from the thread_id on the message returned by fireflies_askfred_thread_create. Example: thread_abc123
- `format_mode` (`string`, optional): Format of the answer text. Use markdown for rich formatting with headers, lists, and bold or italic text. Use plaintext for concise text without any formatting, suitable for systems that cannot render markdown. Leave blank to use the Fireflies default. Example: markdown. One of: `markdown`, `plaintext`.
- `generate_suggestions` (`boolean`, optional): Whether Fireflies generates suggested follow-up questions, returned as suggested_queries on the new message. This tool always reads suggested_queries, so leaving this blank generates them. Set false to skip them for a faster response, in which case suggested_queries comes back null. Set true to force generation, which adds some latency. Example: false
- `response_language` (`string`, optional): Language code for the answer, such as en for English or es for Spanish. Leave blank to let Fireflies choose the language. Fireflies returns invalid_language_code when the code is not supported; the supported codes are listed on the Fireflies Language Codes documentation page. Example: es

Example input: `{"query":"<query>","thread_id":"<thread_id>"}`

### `fireflies_askfred_thread_create`

Create AskFred Thread · Write

Start a new AskFred conversation thread by asking one question about a single Fireflies meeting, or about the meetings picked by filters, and get the AI-generated answer.
Returns the new message with its id, thread_id, query, answer, suggested_queries (follow-up questions), status, created_at, and updated_at, plus the cost in AI credits charged. Keep the thread_id to continue the conversation.
Use this to begin a new conversation, and use fireflies_transcript_get instead when a meeting's stored transcript or summary is enough. Use fireflies_askfred_thread_continue to ask a follow-up inside an existing thread, fireflies_askfred_thread_get to re-read a thread, and fireflies_askfred_thread_delete to remove a thread you no longer need.
Each call adds a new thread to the connected user's AskFred history and spends AI credits. Fireflies returns require_ai_credits when the account has no access to AI credits (a plan upgrade is needed), object_not_found when transcript_id does not exist or is not accessible, invalid_language_code for an unsupported response_language, and invalid_arguments when the query is empty or over 2000 characters, when both transcript_id and filters are given, or when filters.start_time is more than 1 year in the past or not before end_time. Fireflies can answer HTTP 200 with an errors array next to partial data, so read errors before assuming the change was applied and use whatever data is present.

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

Inputs:

- `query` (`string`, required): The question to ask AskFred about your meetings, as a natural-language question of 1 to 2000 characters. An empty question or one longer than 2000 characters makes Fireflies return invalid_arguments. Example: What action items came out of the Q4 planning meeting?
- `filters` (`object`, optional): Criteria that select which meetings AskFred searches when the question is not tied to one transcript_id. Provide either transcript_id or filters, not both: sending both makes Fireflies return invalid_arguments. Use start_time and end_time (ISO 8601 timestamps) for a time window, then narrow further with channel_ids, organizers (email addresses), participants (email addresses), and transcript_ids. Omit any criterion you do not need. When start_time is omitted it defaults to 30 days before end_time, and when end_time is omitted it defaults to today; start_time cannot be more than 1 year in the past and must be before end_time, so pick a window that falls inside the past year. Example (adjust the dates so the window falls within the past year): {"start_time": "2026-09-01T00:00:00.000Z", "end_time": "2026-09-30T23:59:59.000Z", "participants": ["buyer@customer.com"]}
- `format_mode` (`string`, optional): Format of the answer text. Use markdown for rich formatting with headers, lists, and bold or italic text. Use plaintext for concise text without any formatting, suitable for systems that cannot render markdown. Leave blank to use the Fireflies default. Example: markdown. One of: `markdown`, `plaintext`.
- `generate_suggestions` (`boolean`, optional): Whether Fireflies generates suggested follow-up questions, returned as suggested_queries on the new message. This tool always reads suggested_queries, so leaving this blank generates them. Set false to skip them for a faster response, in which case suggested_queries comes back null. Set true to force generation, which adds some latency. Example: false
- `response_language` (`string`, optional): Language code for the answer, such as en for English or es for Spanish. Leave blank to let Fireflies choose the language. Fireflies returns invalid_language_code when the code is not supported; the supported codes are listed on the Fireflies Language Codes documentation page. Example: es
- `transcript_id` (`string`, optional): ID of one Fireflies transcript to ask about, taken from the id field returned by fireflies_transcripts_list. AskFred then answers from only that meeting. Provide either transcript_id or filters, not both: sending both makes Fireflies return invalid_arguments. Leave blank when you use filters instead. Example: 01HZX2ABCDEF3GHJKMNPQRSTVW

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

### `fireflies_audio_upload`

Upload Audio · Write

Upload an audio or video recording from a URL to Fireflies for transcription, optionally with a title, attendees, language, webhook, and meeting date.
Returns success, the title Fireflies gave the file, and a status message confirming the file was queued for processing. The transcript is created afterwards, so the response carries no transcript ID or text; pass a webhook URL to be notified, then find the new meeting with fireflies_transcripts_list.
Use this to import an existing recording from an https link to an mp3, mp4, wav, m4a, or ogg file; the link can be public, a signed URL, or protected with credentials passed in download_auth. Use fireflies_live_meeting_add to record a meeting that is happening now. Passing attendees can make Fireflies write the notes to connected CRMs such as Salesforce or HubSpot, adding them to or creating a contact, so include attendees only when the user wants that. An unwanted upload can be removed with fireflies_transcript_delete once it appears in fireflies_transcripts_list.
Requires a paid Fireflies plan (free plan users get a paid_required error), uploads not disabled by the organization admin (otherwise feature_disabled), and a file of at least 50 kB unless bypass_size_check is true (otherwise payload_too_small). Fireflies can answer HTTP 200 with an errors array next to partial data, so read errors before assuming the change was applied and use whatever data is present.

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

Inputs:

- `url` (`string`, required): Direct HTTPS link to the audio or video file Fireflies should download and transcribe. The link must be publicly reachable, or reachable with the credentials in download_auth, and must download the file itself rather than open a preview page. Supported formats: mp3, mp4, wav, m4a, ogg. Files on a local machine cannot be uploaded. A signed URL with a short expiry (for example an AWS S3 presigned URL) works for private files. Example: https://example.com/recordings/q3-pipeline-review.mp3
- `attendees` (`array`, optional): People who were in the recorded meeting, up to 100. Each attendee can have a displayName (the name shown in the meeting platform, such as Zoom or Google Chat), an email, and a phoneNumber. Fireflies uses attendees to push the meeting notes to active CRM integrations such as Salesforce or HubSpot, adding the notes to an existing contact or creating a new one. All three attendee fields are optional. Example: [{"displayName": "Dana Rivera", "email": "dana@acme.com", "phoneNumber": "+14155550123"}]
- `bypass_size_check` (`boolean`, optional): Set to true to skip Fireflies' file size validation, which normally rejects audio files smaller than 50 kB with the payload_too_small error. Use it only for very short clips. Example: true
- `client_reference_id` (`string`, optional): Your own identifier for this upload, up to 128 characters. Fireflies includes it in webhook events so you can tell which upload an event belongs to. Example: crm-call-48213
- `custom_language` (`string`, optional): Language code of the spoken audio so Fireflies transcribes in that language, for example es for Spanish or de for German. An unrecognized code makes Fireflies return invalid_language_code; the valid codes are listed on the Fireflies Language Codes documentation page. Example: es
- `download_auth` (`object`, optional): Credentials Fireflies uses when downloading a media file that sits behind authentication. Leave it out for a publicly reachable URL. The object has a required type that says which method to use: none for a public file, bearer_token to send an Authorization: Bearer header, or basic_auth to send HTTP Basic credentials. With bearer_token, also provide bearer with the token. With basic_auth, also provide basic with a password and, optionally, a username. Provide only the block that matches type; Fireflies rejects mixed methods. The media URL must use HTTPS, and Fireflies uses the credentials only to download the file and does not store them permanently. Example: {"type": "bearer_token", "bearer": {"token": "your-bearer-token"}}
- `meeting_date` (`string`, optional): Date and time the meeting actually took place, as an ISO 8601 datetime. Offsets are normalized to UTC and nonexistent calendar dates are rejected. Use it when importing historical recordings so the meeting is dated correctly. It must not be in the future. If omitted, Fireflies uses the upload time. Example: 2026-03-14T15:00:00Z
- `save_video` (`boolean`, optional): Set to true to save the video of the uploaded file, or false to not save it. Example: true
- `title` (`string`, optional): Title for the new meeting transcript, up to 256 characters. If omitted, Fireflies uses the file's original name. Example: Q3 Pipeline Review with Acme
- `webhook` (`string`, optional): URL of a webhook that Fireflies notifies when transcription of this upload completes. Use it to learn when the transcript is ready, because the upload response does not contain the transcript ID. Example: https://example.com/hooks/fireflies-transcription-done

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

### `fireflies_bite_create`

Create Bite · Write

Create a bite, a short clip (also called a soundbite), from a finished Fireflies meeting by giving the start and end time of the moment, with an optional name, summary, media type, and visibility.
Returns the new bite's id, name, summary, processing status (pending, processing, ready, or error; a new bite starts as pending while Fireflies processes the clip), media type, start and end time, privacies, creator, source meeting, and thumbnail, preview, and media source links. Setting privacies to public lets anyone with the bite's link open it. The Fireflies API has no operation to delete a bite, so this cannot be undone through the API, and repeating the call may create another bite.
Use this to clip a moment from a finished meeting by time range. Use fireflies_live_soundbite_create to capture a moment in a meeting that is still in progress from a natural-language prompt, fireflies_bite_get to check whether the new bite is ready, and fireflies_bites_list to see existing bites.
Requires a transcript ID from fireflies_transcripts_list and the start and end time of the moment in seconds, which you can read from the sentences returned by fireflies_transcript_get. If the response includes an errors array, the bite may still have been created: call fireflies_bites_list with the transcript_id to check before retrying, and use whatever data is present.

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

Inputs:

- `end_time` (`number`, required): Where the bite ends, in seconds, as a number that can have decimals. It must be greater than start_time. To clip a specific moment, use the end_time of its last sentence from fireflies_transcript_get; Fireflies does not state the unit of those sentence times, so check the clip it creates. Example: 75.5
- `start_time` (`number`, required): Where the bite starts, in seconds, as a number that can have decimals. It must be less than end_time. To clip a specific moment, use the start_time of its first sentence from fireflies_transcript_get; Fireflies does not state the unit of those sentence times, so check the clip it creates. Example: 30
- `transcript_id` (`string`, required): ID of the transcript (meeting) to cut the bite from, taken from the id field returned by fireflies_transcripts_list. Example: 01HZX2ABCDEF3GHJKMNPQRSTVW
- `media_type` (`string`, optional): Whether the bite is a video or an audio clip. Must be video or audio. Leave blank to use Fireflies' default. Example: video. One of: `video`, `audio`.
- `name` (`string`, optional): Title for the bite, up to 256 characters. Leave blank to let Fireflies choose the name. Example: Customer agrees to pricing
- `privacies` (`array`, optional): Who can see the bite, as a list of one or more of public, team, and participants: public lets anyone with the bite's link open it, team makes it visible to your team members, and participants makes it visible to the meeting's participants. Combine values to allow several groups. Leave blank to use Fireflies' default visibility, which is not documented, so set privacies explicitly whenever who can see the clip matters; an empty list is treated the same as leaving it blank. Example: ["team", "participants"]
- `summary` (`string`, optional): Short description of what the bite contains, up to 500 characters. Leave blank to omit it; Fireflies may fill it in. Example: The buyer confirms the annual pricing and asks for a start date.

Example input: `{"end_time":75.5,"start_time":30,"transcript_id":"<transcript_id>"}`

### `fireflies_live_action_item_create`

Create Live Action Item · Write

Add an action item to a meeting that is in progress from a natural-language prompt; Fred, the Fireflies AI assistant, writes the item, and it joins that meeting's live action items, which the meeting organizer and team admins can see.
Returns a success flag only, not the new item, so call fireflies_live_action_items_list to read it back. The API has no operation to edit or delete a live action item, so this cannot be undone through the API; it is not idempotent, so repeating the call may add a duplicate item.
Use this to capture a follow-up during a live call. Use fireflies_live_action_items_list to read the items, and fireflies_live_soundbite_create to clip a moment instead.
Requires a meeting ID from fireflies_active_meetings_list. Only the meeting organizer or a team admin can create live action items. Rate limited to 10 requests per hour across all user tiers, and it uses AI credits, so Fireflies answers insufficient_ai_credits when the account has none left. Fireflies can answer HTTP 200 with an errors array, so read errors before assuming the item was created.

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

Inputs:

- `meeting_id` (`string`, required): ID of the live meeting to add the action item to, from the id field returned by fireflies_active_meetings_list. Example: 01K8DV541XM97WMGRCX66TPSWG
- `prompt` (`string`, required): Natural-language description of the action item to create, from 5 to 255 characters. Fred, the Fireflies AI assistant, interprets the prompt and creates the matching action item, so say who should do what and by when. Example: Dana to send the revised pricing proposal to the customer by Friday

Example input: `{"meeting_id":"<meeting_id>","prompt":"<prompt>"}`

### `fireflies_live_meeting_add`

Add Bot to Live Meeting · Write

Send the Fireflies notetaker bot into a meeting that is in progress, using its meeting link, so the bot joins the call and records and transcribes it.
Returns a success flag and a message from Fireflies. This cannot be undone through the API, which has no operation that removes the bot; fireflies_meeting_state_update pauses recording and fireflies_transcript_delete deletes the transcript afterwards.
Use this for a call happening now. Use fireflies_audio_upload for a recording that already exists, and fireflies_active_meetings_list to see meetings the Fireflies bot is already in.
Rate limited to 3 requests per 20 minutes per user; on Business and Enterprise plans the team shares a pool of 3 requests per paid seat per 20 minutes, up to 60, of which a single user can use at most half (rounded up, never less than 3). Over the limit Fireflies answers too_many_requests with a Retry-After header. The link must be on a platform Fireflies supports (for example Zoom, Google Meet or Microsoft Teams). Fireflies can answer HTTP 200 with an errors array, so read errors before assuming the bot joined and use whatever data is present.

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

Inputs:

- `meeting_link` (`string`, required): Full http or https URL that people use to join the meeting the bot should enter, for example a Zoom, Google Meet or Microsoft Teams link. The meeting platform must be one Fireflies supports, otherwise Fireflies answers with an unsupported_platform error. Example: https://meet.google.com/abc-defg-hij
- `attendees` (`array`, optional): The people expected to take part in the meeting, as a list. Each attendee can have a displayName (the name shown for that person on the meeting platform, such as Google Meet or Zoom), an email address and a phoneNumber; all three are optional. Omit the whole list if you do not know the participants. Example: [{"displayName": "Dana Lee", "email": "dana@company.com"}, {"displayName": "Sam Ortiz", "phoneNumber": "+14155550123"}]
- `duration` (`integer`, optional): Expected length of the meeting in minutes, from 15 to 120. Defaults to 60 minutes if omitted. Example: 45. Default: `60`.
- `language` (`string`, optional): Language code of the meeting, so Fireflies transcribes it in the right language. Defaults to English if omitted. Maximum 5 characters; an unrecognized code makes Fireflies answer with an invalid_language_code error. See the Fireflies language codes list for the valid values. Example: en
- `meeting_password` (`string`, optional): Password of the meeting, only if the meeting platform requires one to join. Maximum 32 characters. Omit it for meetings without a password. Example: 482915
- `title` (`string`, optional): Name of the meeting, used to identify the transcribed file in Fireflies. Maximum 256 characters. If omitted, Fireflies sets a default title automatically. Example: Weekly Pipeline Review

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

### `fireflies_live_soundbite_create`

Create Live Soundbite · Write

Create a soundbite, a short clip, from a meeting that is in progress using a natural-language prompt; Fred, the Fireflies AI assistant, picks the moment that matches.
Returns a success flag only, not the soundbite itself. The API has no operation to delete a soundbite, so this cannot be undone through the API; it is not idempotent, so repeating the call may create a duplicate soundbite.
Use this to capture a moment while the call is live. Use fireflies_bite_create to clip a finished meeting's transcript by start and end time, and fireflies_live_action_item_create to record a follow-up instead.
Requires a meeting ID from fireflies_active_meetings_list. Only the meeting organizer or a team admin can create live soundbites. Rate limited to 10 requests per hour across all user tiers, and it uses AI credits, so Fireflies answers insufficient_ai_credits when the account has none left. Fireflies can answer HTTP 200 with an errors array, so read errors before assuming the soundbite was created.

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

Inputs:

- `meeting_id` (`string`, required): ID of the live meeting to create the soundbite in, from the id field returned by fireflies_active_meetings_list. Example: 01K8DV541XM97WMGRCX66TPSWG
- `prompt` (`string`, required): Natural-language description of the soundbite (a short clip from the meeting) to create, from 5 to 255 characters. Fred, the Fireflies AI assistant, interprets the prompt and creates the matching soundbite, so describe the moment you want to capture. Example: The moment the customer agrees to the pricing terms

Example input: `{"meeting_id":"<meeting_id>","prompt":"<prompt>"}`

### `fireflies_meeting_channel_update`

Update Meeting Channel · Write

Move one to five Fireflies meeting transcripts into a single channel; a meeting belongs to only one channel, so this replaces each meeting's previous channel.
Returns each updated transcript's id, title, date, duration, host and organizer email, privacy, meeting link, and channels. The order of the results can differ from the order of transcript_ids, so match them by id.
Use this to organize meetings into a channel. Use fireflies_channels_list or fireflies_channel_get to find a channel ID, and fireflies_meeting_privacy_update to change a meeting's own access level. The update is all-or-nothing: if any transcript is not found, not accessible, or not permitted, none are moved. The response shows only the new channels, and fireflies_transcripts_list and fireflies_transcript_get do not return a meeting's channel, so the previous channel is not discoverable; Fireflies has no operation to remove a meeting from a channel, so confirm the target channel with the user before moving.
Requires transcript IDs from fireflies_transcripts_list and a channel ID from fireflies_channels_list. You need team admin privileges or ownership of every meeting, and all meetings must be owned by users in your team (otherwise Fireflies returns require_elevated_privilege or object_not_found). An empty transcript_ids list, more than 5 IDs, or a missing channel_id returns invalid_arguments. Fireflies can answer HTTP 200 with an errors array next to partial data, so read errors before assuming the change was applied and use whatever data is present.

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

Inputs:

- `channel_id` (`string`, required): ID of the single target channel, taken from the id field returned by fireflies_channels_list. Every listed meeting is set to this channel, replacing any channel it had before. Example: 01JABCDEF3GHJKMNPQRSTVWXYZ
- `transcript_ids` (`array`, required): IDs of the Fireflies transcripts to move into the channel, from the id field returned by fireflies_transcripts_list. Provide 1 to 5 IDs; an empty list or more than 5 makes Fireflies return invalid_arguments, so split larger sets into several calls. Example: ["01HZX2ABCDEF3GHJKMNPQRSTVW", "01HZX2ABCDEF3GHJKMNPQRSTVX"]

Example input: `{"channel_id":"<channel_id>","transcript_ids":["01HZX2ABCDEF3GHJKMNPQRSTVW","01HZX2ABCDEF3GHJKMNPQRSTVX"]}`

### `fireflies_meeting_privacy_update`

Update Meeting Privacy · Write

Set the privacy level of one Fireflies meeting transcript, which controls who can access it (anyone with the link, the owner only, participants, teammates, or a combination of teammates and participants).
Returns the updated transcript's id, title, new privacy value, date, duration, host and organizer email, participants, meeting link, owner, channels, and the people it is shared with.
Use this to widen or restrict access for a whole audience; the link level opens the meeting to anyone who has its link. Use fireflies_meeting_share to give specific people access and fireflies_meeting_access_revoke to remove one shared person. Fireflies does not return the previous level, and fireflies_transcripts_list and fireflies_transcript_get do not show privacy, so restore the old level only if the user told you what it was before the change.
Requires a transcript ID from fireflies_transcripts_list and either meeting ownership or team admin privileges, and the meeting owner must be in your team (otherwise Fireflies returns require_elevated_privilege or object_not_found). Fireflies can answer HTTP 200 with an errors array next to partial data, so read errors before assuming the change was applied and use whatever data is present.

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

Inputs:

- `privacy` (`string`, required): The privacy level to apply, which decides who can access the meeting. Must be one of: link (anyone with the link can access the meeting), owner (only the meeting owner), participants (only the meeting participants), participatingteammates (only participants who are also teammates; beta, available through the API and MCP only and not yet in the Fireflies dashboard), teammatesandparticipants (teammates and participants), teammates (only teammates). Example: teammates. One of: `link`, `owner`, `participants`, `participatingteammates`, `teammatesandparticipants`, `teammates`.
- `transcript_id` (`string`, required): ID of the Fireflies transcript whose privacy level should change, taken from the id field returned by fireflies_transcripts_list. Example: 01HZX2ABCDEF3GHJKMNPQRSTVW

Example input: `{"privacy":"link","transcript_id":"<transcript_id>"}`

### `fireflies_meeting_share`

Share Meeting · Write

Share one Fireflies meeting transcript with up to 50 email addresses, either by granting those people access to view it (EMAIL) or by creating a password-protected guest link (PASSWORD_LINK, beta).
Recipients can view the transcript without being on the same team, and with PASSWORD_LINK they are also emailed the link (never the password, which you must send separately). Returns success, a message with extra detail (success is false with a message when the invitees are already invited), and share_slug, which is set only for PASSWORD_LINK; the guest link is https://app.fireflies.ai/view/p/{share_slug}.
Use this to give specific people or guests access to one meeting. It gives people outside your team access to the meeting content, so confirm the recipients first and set expiry_days for guest links. EMAIL access can be removed per person with fireflies_meeting_access_revoke. Fireflies documents no way to revoke a PASSWORD_LINK other than letting its expiry_days elapse or calling this tool again with a different password, which stops the old password working. Use fireflies_meeting_privacy_update to change who can see the meeting in general.
Requires a transcript ID from fireflies_transcripts_list. Only the meeting owner or a team admin in the same team as the owner can share a meeting (otherwise Fireflies returns require_elevated_privilege). Rate limit: 60 requests per hour per user, on top of the general API limits. PASSWORD_LINK is in beta, is being rolled out progressively, and must be enabled for your organization by Fireflies support. Fireflies can answer HTTP 200 with an errors array next to partial data, so read errors before assuming the change was applied and use whatever data is present.

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

Inputs:

- `emails` (`array`, required): Email addresses of the people to share the meeting with, up to 50 per call. With share_type EMAIL these people get access with their Fireflies account; with PASSWORD_LINK they are notified with the link, and the password is never included in that email, so send it to them separately. Example: ["buyer@customer.com", "legal@customer.com"]
- `meeting_id` (`string`, required): ID of the meeting transcript to share, taken from the id field returned by fireflies_transcripts_list. This is the transcript ID, not the meeting title or meeting link. Example: 01HZX2ABCDEF3GHJKMNPQRSTVW
- `expiry_days` (`integer`, optional): Number of days until the shared access expires. Must be 7, 14, or 30. Leave empty and the share does not expire. It applies to password-protected links too: once it elapses, the link no longer opens the meeting. Example: 7. One of: `7`, `14`, `30`.
- `password` (`string`, optional): Password that protects the shared link. Required when share_type is PASSWORD_LINK and rejected with invalid_arguments for any other share type. Must be 8 to 128 characters and cannot contain line breaks. Passing a different password on a later call rotates it, and the previous password stops working. Example: Review-2026-ChangeMe
- `share_type` (`string`, optional): How the meeting is shared. EMAIL (the default) grants the listed email addresses access, and recipients open the meeting with their Fireflies account. PASSWORD_LINK (beta) creates a password-protected link that anyone with the link and the password can open without a Fireflies account, and it requires the password field. A meeting has at most one password-protected link per sharer, so calling again returns the existing link instead of creating another. Example: EMAIL. One of: `EMAIL`, `PASSWORD_LINK`. Default: `EMAIL`.

Example input: `{"emails":["buyer@customer.com","legal@customer.com"],"meeting_id":"<meeting_id>"}`

### `fireflies_meeting_state_update`

Update Meeting State · Write

Pause or resume recording for one live meeting that the Fireflies bot is currently in; while paused the bot stays in the meeting but recording is temporarily stopped.
Returns success and the action that was executed (pause_recording or resume_recording).
Use this to stop or restart the recording during a meeting that is in progress. Use fireflies_active_meetings_list to find the live meeting's ID and its current state, and fireflies_live_meeting_add to send the bot into a meeting that it has not joined yet. Recording is stopped while paused, so resuming does not recover what was said during the pause. To continue recording, call this tool with resume_recording.
Requires a live meeting ID from fireflies_active_meetings_list, and you must be the meeting organizer or a team admin (otherwise Fireflies returns require_elevated_privilege or object_not_found). Rate limit: 10 requests per hour on every plan, counting every pause and resume call, after which Fireflies returns too_many_requests. Fireflies can answer HTTP 200 with an errors array next to partial data, so read errors before assuming the change was applied and use whatever data is present.

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

Inputs:

- `action` (`string`, required): What to do with the recording. Must be one of: pause_recording (temporarily stop recording while the bot stays in the meeting) or resume_recording (start recording again after a pause). Example: pause_recording. One of: `pause_recording`, `resume_recording`.
- `meeting_id` (`string`, required): ID of the live meeting to pause or resume, taken from the id field returned by fireflies_active_meetings_list. Example: 01K8DV541XM97WMGRCX66TPSWG

Example input: `{"action":"pause_recording","meeting_id":"<meeting_id>"}`

### `fireflies_meeting_title_update`

Update Meeting Title · Write

Rename one Fireflies meeting transcript by setting a new title; the old title is overwritten and everyone with access to the meeting sees the new name.
Returns the updated transcript's id, title, date, duration, host and organizer email, participants, privacy, meeting link, transcript URL, live flag, owner, and channels.
Use this to change a meeting's title. Use fireflies_meeting_privacy_update to change who can see the meeting and fireflies_meeting_channel_update to move it to a channel. To undo, call this tool again with the previous title, so read it first from fireflies_transcripts_list, which returns the title.
Requires a transcript ID from fireflies_transcripts_list and team admin privileges, and the meeting owner must be in your team (otherwise Fireflies returns require_elevated_privilege or object_not_found). Fireflies can answer HTTP 200 with an errors array next to partial data, so read errors before assuming the change was applied and use whatever data is present.

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

Inputs:

- `title` (`string`, required): The new title for the meeting, 5 to 250 characters of plain text without special characters. Example: Q3 Pipeline Review with Acme
- `transcript_id` (`string`, required): ID of the Fireflies transcript to rename, taken from the id field returned by fireflies_transcripts_list. Example: 01HZX2ABCDEF3GHJKMNPQRSTVW

Example input: `{"title":"<title>","transcript_id":"<transcript_id>"}`

### `fireflies_user_group_member_add`

Add User Group Member · Write

Add one teammate, identified by email address, to a Fireflies user group, which changes that group's membership for everyone who uses the group.
Returns the updated group with its id, name, handle, and full member list (user_id, first_name, last_name, email).
Use this to put a teammate into a group; undo it with fireflies_user_group_member_remove using the same group ID and email. Use fireflies_user_groups_list to find group IDs and current members and fireflies_users_list to confirm the teammate's email.
The connected user must be a team admin and managing user groups requires a Business plan or higher. The teammate must already be in your team, and Fireflies answers bad_request if they are already a member of the group. A successful call is recorded as a USER_GROUP_MEMBER_ADDED audit event. Fireflies can answer HTTP 200 with an errors array next to partial data, so read errors before assuming the change was applied and use whatever data is present.

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

Inputs:

- `group_id` (`string`, required): ID of the Fireflies user group to add the teammate to, taken exactly as returned in the id field of fireflies_user_groups_list. This is the group's id, not its handle or display name. Example: group_123
- `user_email` (`string`, required): Email address of the teammate to add to the group. It must be a valid email address that belongs to a person in your Fireflies team; find it in the email field of fireflies_users_list or in the members of fireflies_user_groups_list. Fireflies answers invalid_arguments if the value is not a valid email address and object_not_found if no teammate matches it. Example: jane.smith@example.com

Example input: `{"group_id":"<group_id>","user_email":"<user_email>"}`

### `fireflies_user_role_set`

Set User Role · Write

Set the role of one Fireflies team member to admin or user, which grants or removes that person's team admin privileges.
Returns the updated user with user_id, email, name, the is_admin flag, number of transcripts, minutes consumed, most recent transcript and meeting, integrations, calendar sync status, and the user groups they belong to (id, name, handle).
Use this to promote a teammate to admin or demote an admin to a regular user. Use fireflies_users_list to find user IDs and each person's current is_admin flag, and fireflies_user_get to check one person's role afterwards. It can be reversed by calling it again with the other role, but only by a team admin, so do not demote the connected user themselves: they would lose the admin rights needed to undo it. Promoting someone to admin gives them team admin privileges, so confirm the target user_id and role before calling.
The connected user must be a team admin (otherwise Fireflies answers require_elevated_privilege), the target user must be in your team (not_in_team), and the team must keep at least one admin (admin_must_exist). A successful call is recorded as a USER_ROLE_CHANGED audit event. Fireflies can answer HTTP 200 with an errors array next to partial data, so read errors before assuming the change was applied and use whatever data is present.

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

Inputs:

- `role` (`string`, required): The role to assign, either admin or user. admin makes the person a team admin, who can for example manage user groups and change roles; user makes them a regular member without admin rights. Any other value is rejected. Example: admin. One of: `admin`, `user`.
- `user_id` (`string`, required): ID of the team member whose role you want to change, taken from the user_id field of fireflies_users_list. The user must belong to your team. Example: user_456

Example input: `{"role":"admin","user_id":"<user_id>"}`

### `fireflies_askfred_thread_delete`

Delete AskFred Thread · Destructive

Delete one AskFred conversation thread, together with every question and answer in it, from the connected user's AskFred history.
Returns the deleted thread's id, title, linked transcript_id, owner user_id, and created_at so the deletion can be confirmed. Deletion is permanent and cannot be undone through the API.
Use this only when the user explicitly asks to remove a conversation. Use fireflies_askfred_thread_get to review a thread before deleting it and fireflies_askfred_thread_continue to keep the conversation going; this tool removes only the thread and its messages, and fireflies_transcript_delete is the tool that deletes a meeting transcript.
Requires a thread ID from fireflies_askfred_threads_list. Fireflies returns object_not_found when the thread ID does not exist or you do not have access to it. Fireflies can answer HTTP 200 with an errors array next to partial data, so read errors before assuming the change was applied and use whatever data is present.

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

Inputs:

- `thread_id` (`string`, required): ID of the AskFred thread to delete permanently, taken from the id field returned by fireflies_askfred_threads_list. The thread and all of its messages are removed and the deletion cannot be undone through the API. Example: thread_abc123

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

### `fireflies_meeting_access_revoke`

Revoke Shared Meeting Access · Destructive

Revoke one person's shared access to a Fireflies meeting transcript, identified by their email address.
Returns success and a message (for example Revoked meeting access). Only the given email's access is revoked. Fireflies documents no way to revoke a password-protected guest link itself: to cut off a leaked link, rotate its password by calling fireflies_meeting_share again with PASSWORD_LINK and a different password, or wait for its expiry. To give access again, share the meeting anew with fireflies_meeting_share.
Use this to stop sharing a meeting with one person. Use fireflies_meeting_share to share it, fireflies_meeting_privacy_update to change who can see it in general, and fireflies_transcript_delete to remove the meeting entirely.
Requires a transcript ID from fireflies_transcripts_list and an email address the meeting was shared with (otherwise Fireflies returns object_not_found). No read tool lists the current recipients, so take the email from the requester or from an earlier fireflies_meeting_share call. Only the meeting owner or a team admin can revoke shared access (otherwise Fireflies returns require_elevated_privilege). Fireflies can answer HTTP 200 with an errors array next to partial data, so read errors before assuming the change was applied and use whatever data is present.

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

Inputs:

- `email` (`string`, required): Email address of the person whose shared access should be removed. It must be an address the meeting was shared with, otherwise Fireflies returns object_not_found. Only this person's access is revoked. Example: buyer@customer.com
- `meeting_id` (`string`, required): ID of the meeting transcript whose shared access should be revoked, taken from the id field returned by fireflies_transcripts_list. This is the transcript ID, not the meeting title or meeting link. Example: 01HZX2ABCDEF3GHJKMNPQRSTVW

Example input: `{"email":"<email>","meeting_id":"<meeting_id>"}`

### `fireflies_transcript_delete`

Delete Transcript · Destructive

Delete one Fireflies meeting transcript by its ID, removing it from Fireflies.
Returns the deleted transcript's id, title, date, duration, host and organizer email, Fireflies user emails, participant emails, and meeting link. The Fireflies API has no operation to restore a deleted transcript, so treat the deletion as irreversible.
Use this only when the user explicitly asks to remove a meeting. Use fireflies_meeting_privacy_update to restrict who can see a meeting, fireflies_meeting_access_revoke to remove one shared person's access, and fireflies_meeting_title_update to rename it, all without deleting it.
Requires a transcript ID from fireflies_transcripts_list. You can delete meetings you own; deleting another team member's meeting requires team admin privileges (otherwise Fireflies returns require_elevated_privilege). Rate limit: 10 requests per minute on every plan, after which Fireflies returns too_many_requests with a retryAfter timestamp. Fireflies can answer HTTP 200 with an errors array next to partial data, so read errors before assuming the change was applied and use whatever data is present.

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

Inputs:

- `transcript_id` (`string`, required): ID of the Fireflies transcript to delete, taken from the id field returned by fireflies_transcripts_list. This is the transcript ID, not the meeting title, meeting link, or calendar ID. Deleting cannot be undone through the API. Example: 01HZX2ABCDEF3GHJKMNPQRSTVW

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

### `fireflies_user_group_member_remove`

Remove User Group Member · Destructive

Remove one teammate, identified by email address, from a Fireflies user group.
Returns the updated group with its id, name, handle, and remaining member list (user_id, first_name, last_name, email).
Use this to take a teammate out of one group. The group itself remains and the teammate stays on the team, but anything that depends on membership in the group may stop applying to them until you re-add them with fireflies_user_group_member_add using the same group ID and email. Use fireflies_user_groups_list to find group IDs and current members.
The connected user must be a team admin and managing user groups requires a Business plan or higher. Fireflies answers object_not_found if the group does not exist, no teammate matches the email, or the teammate is not a member of the group. A successful call is recorded as a USER_GROUP_MEMBER_REMOVED audit event. Fireflies can answer HTTP 200 with an errors array next to partial data, so read errors before assuming the change was applied and use whatever data is present.

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

Inputs:

- `group_id` (`string`, required): ID of the Fireflies user group to remove the teammate from, taken exactly as returned in the id field of fireflies_user_groups_list. This is the group's id, not its handle or display name. Example: group_123
- `user_email` (`string`, required): Email address of the teammate to remove. It must be the email of a current member of this group; find it in the members of that group in fireflies_user_groups_list. Fireflies answers invalid_arguments if the value is not a valid email address and object_not_found if the group does not exist, no teammate matches the email, or the teammate is not in the group. Example: jane.smith@example.com

Example input: `{"group_id":"<group_id>","user_email":"<user_email>"}`

## Related

Other Transcription connectors ([all 27](/agentkit/connectors/?category=transcription)):

- [Chorus](/agentkit/connectors/chorus/): Scalekit connector, Username and password, 9 tools
- [Diarize](/agentkit/connectors/diarize/): Scalekit connector, Access token, 3 tools
- [Gong](/agentkit/connectors/gong/): Scalekit connector, OAuth, 69 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 |
