Fireflies MCP server for AI agents

Live

BEARER TOKEN

MEETING NOTES

Transcription

Fireflies gives your agent meeting notes and transcripts: read transcripts with speaker-attributed sentences and AI summaries, ask AskFred about meetings, send the notetaker into live calls, and share, clip, and organize recordings.

  • Per-user credentials: each call uses the actual user's access token, never a shared bot.
  • Encrypted per-tenant vault: AES-256, resolved at request time, never in LLM context.
  • Scoped before every call: pre-call scope check, 90-day SIEM-exportable audit chain.
Fireflies
agent · Acme Q3
Run
What did we commit to in yesterday's call with Acme?
S
fireflies_transcript_get
127ms
Meeting agent
Your team committed to sending the security questionnaire by Friday and booking a technical review next week.
Sources: 1 transcript, AI summary
fireflies
1 transcript
18:29
Message Claude...

Tools your meeting notes agent reaches for on Fireflies, scoped per user.

CALL ANY TOOL
36 tools for meeting notes in Fireflies: list and read transcripts, ask AskFred, upload recordings, send the bot into live meetings, create bites, share and update meetings, and read team analytics.
fireflies_active_meetings_list
List active meetings
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.
Parameters
Name
Type
Required
Description
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"]
fireflies_analytics_get
Get analytics
fireflies_apps_list
List apps
fireflies_askfred_thread_continue
Askfred thread continue
fireflies_askfred_thread_create
Create askfred thread
fireflies_askfred_thread_delete
Delete askfred thread
fireflies_askfred_thread_get
Get askfred thread
fireflies_askfred_threads_list
List askfred threads
fireflies_audio_upload
Upload audio
fireflies_audit_events_list
List audit events
fireflies_bite_create
Create bite
fireflies_bite_get
Get bite
fireflies_bites_list
List bites
fireflies_channel_get
Get channel
fireflies_contacts_list
List contacts
fireflies_live_action_item_create
Create live action item
fireflies_live_action_items_list
List live action items
fireflies_live_meeting_add
Add live meeting
fireflies_meeting_access_revoke
Meeting access revoke
fireflies_meeting_channel_update
Update meeting channel
fireflies_meeting_privacy_update
Update meeting privacy
fireflies_meeting_state_update
Update meeting state
fireflies_rule_executions_list
List rule executions
fireflies_transcript_delete
Delete transcript
fireflies_transcript_get
Get transcript
fireflies_transcripts_list
List transcripts
fireflies_user_group_member_add
Add user group member
fireflies_user_group_member_remove
Remove user group member
fireflies_user_groups_list
List user groups
fireflies_user_role_set
Set user role

For more tools, view docs.

Build your Agent
Same auth pattern across LangChain, OpenAI, Anthropic, and Google ADK.
Python · LlamaIndex
import { ScalekitClient } from "@scalekit-sdk/node";
import { createReactAgent } from "@langchain/langgraph/prebuilt";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);

// Fireflies tools scoped to this user
const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["fireflies"], toolNames: [
    "fireflies_transcripts_list",
    "fireflies_transcript_get",
    "fireflies_askfred_thread_create"] },
  pageSize: 100,
});

const agent = createReactAgent({ llm, tools });
await agent.invoke({ messages: [{ role: "user", content: "Summarize what we committed to in yesterday's call with Acme" }] });
import OpenAI from "openai";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
const openai = new OpenAI();

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["fireflies"] }, pageSize: 100,
});

const res = await openai.chat.completions.create({
  model: "gpt-5",
  messages: [{ role: "user", content: "Summarize what we committed to in yesterday's call with Acme" }],
  tools,
});

// Execute the tool call with the user's vaulted Fireflies access token
await sk.tools.executeTool(res.choices[0].message.tool_calls[0], "user_123");
import Anthropic from "@anthropic-ai/sdk";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
const anthropic = new Anthropic();

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["fireflies"] }, pageSize: 100,
});

const msg = await anthropic.messages.create({
  model: "claude-sonnet-5",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Summarize what we committed to in yesterday's call with Acme" }],
  tools,
});

// Tool call runs with the user's vaulted Fireflies access token
await sk.tools.executeTool(msg.content, "user_123");
import { Agent } from "@google/adk/agents";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["fireflies"] }, pageSize: 100,
});

const agent = new Agent({
  name: "meeting_agent",
  model: "gemini-2.5-pro",
  instruction: "Fireflies tools scoped to this user",
  tools,
});

await agent.run("Summarize what we committed to in yesterday's call with Acme");
Try these prompts
Copy any prompt into your agent. Each maps directly to a Fireflies tool. Click to copy, paste into your agent, done.
Transcripts
Copy the prompt
Copied
List my meetings from last week that mention pricing.
Copy the prompt
Copied
Summarize the transcript of yesterday's Acme call.
Copy the prompt
Copied
Upload this recording URL for transcription with the title Customer Webinar.
AskFred and bites
Copy the prompt
Copied
Ask Fred what objections came up in this week's sales calls.
Copy the prompt
Copied
Create a bite from minute 12 to minute 14 of this meeting.
Copy the prompt
Copied
Continue this AskFred thread and ask for the next steps.
Live meetings and sharing
Copy the prompt
Copied
Send the Fireflies notetaker into this meeting link.
Copy the prompt
Copied
Pause recording in the meeting the bot is in now.
Copy the prompt
Copied
Share this transcript with jane@acme.com.
SEE HOW AUTH WORKS
Each user connects their own Fireflies access token once, and Scalekit sends it with every call. Tokens stay vaulted, every call is scope checked, and every action is logged.
1
Authorize
Your user connects
Fireflies
once. We tie it to their identity and the meetings they approved — no shared bot account, no org-wide access
Who:
user ‘A’
when:
Once per user
access:
Limited to user
2
Store
Their
Fireflies
token lives in a vault scoped to them. User A's meetings are never reachable by an agent acting for user B, even on the same connection
vault:
encrypted
scope:
per-user
tokens:
auto-refreshed
3
Resolve
When your agent calls a
Fireflies
tool, we fetch the right token server-side. It never touches your agent, never appears in the LLM context, never shows up in your logs
speed:
~40ms
check:
before every call
seen by:
nobody
4
Audit
Every
Fireflies
tool call is logged — who triggered it, which meeting was fetched, what came back. 90 days of history, tied to the user who authorized it
history:
90 days
export:
SIEM-ready
logged:
every call
Test other agents
See the same per-user auth pattern across other transcription and productivity connectors.
Support and Ops Teams
Meeting prep
Pulls agenda, participant context, and open action items before every meeting.
GTM and RevOps Teams
Sales call prep agent
Reads tomorrow's calls from Google Calendar, mines past Granola notes and Attio history for context, and delivers each rep a prep brief in Slack, scoped to the calls that rep actually owns.
GTM and RevOps Teams
Deal intelligence agent
Pulls recent Gong calls, scores deal risk with an LLM, cross-references the record in Attio, and DMs each owner their at-risk deals in Slack. Every read is scoped to that rep's own access.
Test other agents
See the same per-user auth pattern across other transcription and productivity connectors.
OPS
Meeting prep agent
Assemble the agenda, HubSpot attendee history, and open action items from Gmail before every meeting on the calendar.
SALES
Sales call prep agent
Read tomorrow's calls from Google Calendar, mine Granola notes and Attio history, and deliver each rep a prep brief in Slack.
SALES
Deal intelligence agent
Score Gong call risk with an LLM, cross-reference the Attio record, and DM each owner their at-risk deals in Slack.
Why Scalekit
Secure your agent's access. Connectors ship in minutes
01.
Shared tokens break per-user analytics
A shared Fireflies access token looks fine in a demo. In production every share and transcript change looks like one service account, and you cannot tell which user triggered it. Scalekit resolves the credential of the actual user who triggered the agent, never a shared bot.
// shared token
audit → bot_service_account

// scalekit
audit → user_abc ✓
02.
Authentication is not authorization
03.
Multi-tenancy is architectural
04.
Fireflies today. Ten connectors tomorrow.
“Our agents act across Salesforce, Gong, Google Drive, and more, on behalf of every customer. Scalekit behind the scenes meant we can keep adding tools without ever rebuilding how credentials or tool calling work.”
Venu Madhav Kattagoni
Head of Engineering / Von
FAQs
Frequently Asked Questions
Does the agent access Fireflies as the user or through a shared token?
As the user. Each user connects their own Fireflies access token once, and Scalekit sends it with every call. Audit logs attribute every share, upload, and transcript change to that user, not a shared service account.
Where is the Fireflies access token stored?
In Scalekit's managed AES-256 token vault, namespaced per tenant. To rotate it, the user reconnects with a new access token. Revocation is a single dashboard action. Credentials never appear in prompts, logs, or LLM context.
Can I limit what the agent does in Fireflies?
Yes. Filter by tool name in listScopedTools to expose only what you want, for example the transcript and AskFred tools without fireflies_transcript_delete, which removes a meeting transcript from Fireflies. Scalekit also enforces scope checks before every API call.
What happens when a user revokes Fireflies access?
The connection is invalidated on the next tool call. Subsequent requests for that user fail closed with a clear error. Other users in the tenant remain unaffected. The event is logged for audit.
Can the agent join meetings that are already in progress?
Yes. fireflies_live_meeting_add sends the Fireflies notetaker into a live meeting by its link. While the bot is in the call, fireflies_meeting_state_update pauses or resumes recording, and fireflies_live_action_items_list reads the action items captured so far.
Start in your coding agent
Up and running in one command
Install the Scalekit skill in your editor of choice. Connector, auth, tools, prompt, all wired up
Claude Code REPL
/plugin marketplace add scalekit-inc/claude-code-authstack
/plugin install agentkit@scalekit-auth-stack
Cursor Code REPL
# ~/.cursor/mcp.json
{
""mcpServers"": {
""fireflies"": {
""url"": ""https://mcp.scalekit.com/fireflies"",
""headers"": { ""Authorization"": ""Bearer $SCALEKIT_TOKEN"" }
}
}
}
Codex Code REPL
# ~/.codex/config.toml
[mcp_servers.fireflies]
url = ""https://mcp.scalekit.com/fireflies""
auth_env = ""SCALEKIT_TOKEN""
Copilot Code REPL
# .vscode/mcp.json
{
""servers"": {
""fireflies"": {
""url"": ""https://mcp.scalekit.com/fireflies"",
""type"": ""http""
}
}
}