# Wispr Flow MCP

```json
{
  "name": "Wispr Flow MCP",
  "slug": "wispr_flow_mcp",
  "url": "https://composio.dev/toolkits/wispr_flow_mcp",
  "markdown_url": "https://composio.dev/toolkits/wispr_flow_mcp.md",
  "logo_url": "https://logos.composio.dev/api/wispr_flow_mcp",
  "categories": [
    "productivity & project management"
  ],
  "is_composio_managed": false,
  "updated_at": "2026-09-30T05:38:17.783Z"
}
```

![Wispr Flow MCP logo](https://logos.composio.dev/api/wispr_flow_mcp)

## Description

Securely connect your AI agents and chatbots (Claude, ChatGPT, Cursor, etc) with Wispr Flow MCP or direct API to read meeting notes, fetch transcripts, list participants, and retrieve upcoming meeting pre-reads through natural language.

## Summary

Wispr Flow MCP is a meeting intelligence service that captures notes, transcripts, participants, and meeting artifacts.
Give authorized agents read-only access within existing Wispr Flow permissions.

## Categories

- productivity & project management

## Toolkit Details

- Tools: 14

## Images

- Logo: https://logos.composio.dev/api/wispr_flow_mcp

## Authentication

- **Dcr Oauth**
  - Type: `custom`
  - Description: Dcr Oauth authentication for Wispr Flow MCP.
  - Setup:
    - Configure Dcr Oauth credentials for Wispr Flow MCP.
    - Use the credentials when creating an auth config in Composio.

## Suggested Prompts

- Summarize today's product sync meeting transcript
- List participants and roles from last meeting
- Fetch pre-read files for tomorrow's demo

## Supported Tools

| Tool slug | Name | Description |
|---|---|---|
| `WISPR_FLOW_MCP_GET_ACCOUNT_INFO` | Get account info | Get the authenticated user's own identity — their name and any display-name aliases they appear under on their calendar. Call this first for first-person questions ('what did I commit to', 'my meetings', 'who did I meet with', 'did I owe him') so you know which person the user is among a meeting's attendees. |
| `WISPR_FLOW_MCP_GET_CALENDAR_EVENT` | Get calendar event | Get a single calendar event by its calendar_id (the id returned by search_calendar_events or resolve_calendar_link). Returns title, time, attendees, description, and conference URL. Every timestamp in the response is UTC (ISO 8601, ending in 'Z'). Convert times to the user's local time zone before presenting them — do not show the raw UTC time to the user. |
| `WISPR_FLOW_MCP_GET_MEETING` | Get meeting | Get a bounded range of the markdown notes, the complete derived markdown summary, the complete attendee list without email addresses, and (when requested and available) a bounded range of the recorded transcript of a specific meeting. Use after search_meetings to answer anything about what was discussed, decided, the action items, or who-said-what. Returns start/end times for when the meeting happened. The raw Lexical notes JSON is intentionally omitted; use `content` for the paginated markdown note body and `summary` for the Flow Summary body, whose next-steps section holds the meeting's action items. Prefer view_transcript={} and synthesize your answer from the transcript itself: the notes are an auto-generated summary that can drop details, while the transcript is the verbatim source of truth. Omit view_transcript only when you've judged the notes alone are enough (e.g. a quick high-level recap). Transcript responses are character-bounded; when truncated, use the continuation offset in the marker to request the next range. Content is also character-bounded and returns its first range by default; use view_content with the continuation offset to read more. The summary is always returned in full. share_link is the meeting's notes page in Wispr Flow. Give it to the user whenever they ask for a link. Who else can open it depends on that meeting's sharing setting, and this server cannot read or change that setting. If the user wants to change who a link works for, tell them to open the Wispr Flow app, go to the Notetaker tab, click the menu to the right of the meeting, and click Share — that opens the sharing settings for that meeting. A meeting with no share_link has no notes page yet — say so rather than guessing a URL. Every timestamp in the response is UTC (ISO 8601, ending in 'Z'). Convert times to the user's local time zone before presenting them — do not show the raw UTC time to the user. |
| `WISPR_FLOW_MCP_GET_MEETING_BY_CALENDAR_ID` | Get meeting by calendar | Get the recorded meeting — a bounded range of its markdown notes, the complete derived markdown summary, and (when requested and available) a bounded transcript range — captured for a calendar event, by its calendar_id (from search_calendar_events or resolve_calendar_link). Use this to answer 'what was discussed / decided / the action items' for a meeting on the user's calendar. Returns start/end times for when the meeting happened. The raw Lexical notes JSON is intentionally omitted; use paginated `content` and complete `summary`, whose next-steps section holds the meeting's action items. Prefer view_transcript={} and synthesize from the transcript itself: the notes are an auto-generated summary that can drop or distort details, while the transcript is the verbatim source of truth. Omit view_transcript only when you've judged the notes alone are enough. When truncated, use the continuation offset in the marker to request the next range. Content returns its first bounded range by default; use view_content with its continuation offset to read more. Errors if no recording is linked to that event. share_link is the meeting's notes page in Wispr Flow. Give it to the user whenever they ask for a link. Who else can open it depends on that meeting's sharing setting, and this server cannot read or change that setting. If the user wants to change who a link works for, tell them to open the Wispr Flow app, go to the Notetaker tab, click the menu to the right of the meeting, and click Share — that opens the sharing settings for that meeting. A meeting with no share_link has no notes page yet — say so rather than guessing a URL. Every timestamp in the response is UTC (ISO 8601, ending in 'Z'). Convert times to the user's local time zone before presenting them — do not show the raw UTC time to the user. |
| `WISPR_FLOW_MCP_GET_MEETING_PARTICIPANTS_ENRICHED` | Get meeting participants enriched | Who was in a meeting and which one of them is the user. Returns the user's own name/email/domain plus every participant (speaker-map people and calendar attendees) with name, contact_id, emails, whether they spoke, organizer, and relationship to the user (self \| colleague \| external \| unknown, by email domain). Omits the caller, mention-origin people, and Google room/equipment attendees. Calendar RSVP is not included. When listed, get_participant_contacts takes contact_ids from this result for LinkedIn, job title, and company. |
| `WISPR_FLOW_MCP_GET_SCRATCHPAD_NOTE` | Get scratchpad note | Get a bounded range of a specific note's normalized text. The first range is returned by default. Call after search_scratchpad_notes when the user wants the note's content; when truncated, repeat with view_content.start_char set to the exact continuation offset in the marker. |
| `WISPR_FLOW_MCP_GET_UPCOMING_MEETING` | Get upcoming meeting | Get a single upcoming calendar event by calendar_id, with its latest pre-read when one is available. Refuses past events — use get_meeting_by_calendar_id for the recorded notes of a past event, or get_calendar_event for generic event metadata. Pass include_preread=false to skip the pre-read fetch. Every timestamp in the response is UTC (ISO 8601, ending in 'Z'). Convert times to the user's local time zone before presenting them — do not show the raw UTC time to the user. |
| `WISPR_FLOW_MCP_LIST_MEETING_SERIES` | List meeting series | Given a meeting_id (from search_meetings) for a recurring meeting, list every recorded occurrence of that recurring series — newest first, including the meeting you passed in. Use to answer 'what did we discuss last time this met', 'what's recurred across these syncs', or to catch up before today's instance. Errors if the meeting isn't linked to a recurring calendar series. Each occurrence has the same shape as a search_meetings result (call get_meeting for full notes/transcript). Results are paginated, newest first. If the response's has_more is true there are more matches: call again with cursor set to the returned next_cursor (copied verbatim) to continue. When more remain, a 'more' field spells out how many and how to continue. To answer 'all'/'every'/'ever' questions, keep paging until has_more is false. Paging is capped at 1000 results per query; truncated=true means more matches exist beyond the cap — narrow the query. Every timestamp in the response is UTC (ISO 8601, ending in 'Z'). Convert times to the user's local time zone before presenting them — do not show the raw UTC time to the user. |
| `WISPR_FLOW_MCP_LIST_UPCOMING_MEETINGS` | List upcoming meetings | List the user's upcoming calendar events in the next window_hours (default 24, max 168), soonest first, with an attendee preview (up to 5 structured attendees plus attendee_count) and each event's latest pre-read attached when one has been generated. Use to answer 'what meetings are coming up' or 'prep me for my next meeting'. For today or another whole local day, use search_calendar_events with since/until. Events without a generated pre-read return preread: null — pre-reads are produced on-demand by the desktop app, not by this tool. Results are paginated, newest first. If the response's has_more is true there are more matches: call again with cursor set to the returned next_cursor (copied verbatim) to continue. When more remain, a 'more' field spells out how many and how to continue. To answer 'all'/'every'/'ever' questions, keep paging until has_more is false. Paging is capped at 1000 results per query; truncated=true means more matches exist beyond the cap — narrow the query. Every timestamp in the response is UTC (ISO 8601, ending in 'Z'). Convert times to the user's local time zone before presenting them — do not show the raw UTC time to the user. |
| `WISPR_FLOW_MCP_RESOLVE_CALENDAR_LINK` | Resolve calendar link | Resolve a calendar/meeting URL the user pasted (a Google Calendar event link, or a Meet/Zoom conference link) to the matching calendar event — title, time, attendees, conference URL, and its calendar_id. Use this whenever the user pastes such a link instead of guessing at its contents. To then pull the event again later, use get_calendar_event with the returned calendar_id. Every timestamp in the response is UTC (ISO 8601, ending in 'Z'). Convert times to the user's local time zone before presenting them — do not show the raw UTC time to the user. |
| `WISPR_FLOW_MCP_RESOLVE_SHARE_LINK` | Resolve share link | Resolve a Wispr Flow shared-notes link the user pasted (https://notes.wisprflow.ai/shared/…) to the shared meeting note: its title, Flow Summary (whose next-steps section holds the meeting's action items), owner, and the caller's role. Use this whenever the user pastes such a link instead of guessing at its contents — shared notes are usually other people's meetings, which search_meetings/get_meeting (the user's own meetings) will never find. The owner also receives their user-authored My Notes. Set view_transcript={} when the user needs source-level detail: a bounded transcript range is returned only when the caller owns the note or is an explicitly invited recipient AND the owner's organization shares transcripts. Domain/team access, anyone-with-link access, or a notes-only organization returns transcript=null plus a transcript_access explanation when requested. When truncated, use the continuation offset in the marker to request the next range. Errors if the link is not a share link or no shared note is accessible for it. Every timestamp in the response is UTC (ISO 8601, ending in 'Z'). Convert times to the user's local time zone before presenting them — do not show the raw UTC time to the user. |
| `WISPR_FLOW_MCP_SEARCH_CALENDAR_EVENTS` | Search calendar events | Search or list the user's Google Calendar events. Use to find meetings by who's on them (attendee_emails — the precise way to answer 'meetings with alex@acme.com', or 'with both alex and bob' via attendee_match=all), by keyword in the title/description, or within a date window. For a whole local calendar day (including earlier events), use since and until. Returns each event's title, time, conference URL, and an attendee preview (up to 5 structured attendees plus attendee_count). Use get_calendar_event for the complete attendee list. Note: these are calendar events, not the recorded meeting notes. Results are paginated, newest first. If the response's has_more is true there are more matches: call again with cursor set to the returned next_cursor (copied verbatim) to continue. When more remain, a 'more' field spells out how many and how to continue. To answer 'all'/'every'/'ever' questions, keep paging until has_more is false. Paging is capped at 1000 results per query; truncated=true means more matches exist beyond the cap — narrow the query. Every timestamp in the response is UTC (ISO 8601, ending in 'Z'). Convert times to the user's local time zone before presenting them — do not show the raw UTC time to the user. |
| `WISPR_FLOW_MCP_SEARCH_MEETINGS` | Search meetings | Search or list the user's meetings captured by Wispr Flow Meeting Recorder. Use when the user asks about their meetings, calls, standups, 1:1s, syncs, or anything discussed in a recorded conversation. Returns the most recently modified meetings when no query is given. For meetings on a particular day, pass since/until (when the meeting happened, half-open). Filter by who was there with attendee_emails (matched against the meeting's linked calendar event) — the precise way to answer 'my meetings with alex@acme.com'. Each result lists up to 5 attendees (more are summarized — call get_meeting for the full list), start/end times, and a has_transcript flag; when true, follow up with get_meeting and view_transcript={} and answer from the transcript rather than the lossy notes summary. share_link is the meeting's notes page in Wispr Flow. Give it to the user whenever they ask for a link. Who else can open it depends on that meeting's sharing setting, and this server cannot read or change that setting. If the user wants to change who a link works for, tell them to open the Wispr Flow app, go to the Notetaker tab, click the menu to the right of the meeting, and click Share — that opens the sharing settings for that meeting. A meeting with no share_link has no notes page yet — say so rather than guessing a URL. Results are paginated, newest first. If the response's has_more is true there are more matches: call again with cursor set to the returned next_cursor (copied verbatim) to continue. When more remain, a 'more' field spells out how many and how to continue. To answer 'all'/'every'/'ever' questions, keep paging until has_more is false. Paging is capped at 1000 results per query; truncated=true means more matches exist beyond the cap — narrow the query. Every timestamp in the response is UTC (ISO 8601, ending in 'Z'). Convert times to the user's local time zone before presenting them — do not show the raw UTC time to the user. |
| `WISPR_FLOW_MCP_SEARCH_SCRATCHPAD_NOTES` | Search scratchpad notes | Search or list the user's notes (Wispr Flow scratchpad). Use whenever the user asks about their notes, scratchpad, jottings, or anything they've written down. Returns the most recently modified notes when no query is given; case-insensitive substring match otherwise. Results are paginated, newest first. If the response's has_more is true there are more matches: call again with cursor set to the returned next_cursor (copied verbatim) to continue. When more remain, a 'more' field spells out how many and how to continue. To answer 'all'/'every'/'ever' questions, keep paging until has_more is false. Paging is capped at 1000 results per query; truncated=true means more matches exist beyond the cap — narrow the query. |

## Supported Triggers

None listed.

## Installation and MCP Setup

### Path 1: SDK Installation

#### Path 1, Step 1: Install Composio

Install the Composio SDK
```python
pip install composio_openai
```

```typescript
npm install @composio/openai
```

#### Path 1, Step 2: Initialize Composio and Create Tool Router Session

Import and initialize Composio client, then create a Tool Router session
```python
from openai import OpenAI
from composio import Composio
from composio_openai import OpenAIResponsesProvider

composio = Composio(provider=OpenAIResponsesProvider())
openai = OpenAI()
session = composio.create(user_id='your-user-id')
```

```typescript
import OpenAI from 'openai';
import { Composio } from '@composio/core';
import { OpenAIResponsesProvider } from '@composio/openai';

const composio = new Composio({
  provider: new OpenAIResponsesProvider(),
});
const openai = new OpenAI({});
const session = await composio.create('your-user-id');
```

#### Path 1, Step 3: Execute Wispr Flow MCP Tools via Tool Router with Your Agent

Get tools from Tool Router session and execute Wispr Flow MCP actions with your Agent
```python
tools = session.tools
response = openai.responses.create(
  model='gpt-4.1',
  tools=tools,
  input=[{
    'role': 'user',
    'content': 'Get meeting notes and transcript for "Weekly Product Sync" from yesterday'
  }]
)
result = composio.provider.handle_tool_calls(
  response=response,
  user_id='your-user-id'
)
print(result)
```

```typescript
const tools = session.tools;
const response = await openai.responses.create({
  model: 'gpt-4.1',
  tools: tools,
  input: [{
    role: 'user',
    content: 'Get meeting notes and transcript for "Weekly Product Sync" from yesterday'
  }],
});
const result = await composio.provider.handleToolCalls(
  'your-user-id',
  response.output
);
console.log(result);
```

### Path 2: MCP Server Setup

#### Path 2, Step 1: Install Composio

Install the Composio SDK for Python or TypeScript
```python
pip install composio claude-agent-sdk
```

```typescript
npm install @composio/core ai @ai-sdk/openai @ai-sdk/mcp
```

#### Path 2, Step 2: Initialize Client and Create Tool Router Session

Import and initialize the Composio client, then create a Tool Router session for Wispr Flow MCP
```python
from composio import Composio
from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions

composio = Composio(api_key='your-composio-api-key')
session = composio.create(user_id='your-user-id')
url = session.mcp.url
```

```typescript
import { Composio } from '@composio/core';

const composio = new Composio({ apiKey: 'your-api-key' });
const session = await composio.create('your-user-id');
console.log(`Tool Router session created: ${session.mcp.url}`);
```

#### Path 2, Step 3: Connect to AI Agent

Use the MCP server with your AI agent (Anthropic Claude or Mastra)
```python
import asyncio

options = ClaudeAgentOptions(
    permission_mode='bypassPermissions',
    mcp_servers={
        'tool_router': {
            'type': 'http',
            'url': url,
            'headers': {
                'x-api-key': 'your-composio-api-key'
            }
        }
    },
    system_prompt='You are a helpful assistant with access to Wispr Flow MCP tools.',
    max_turns=10
)

async def main():
    async with ClaudeSDKClient(options=options) as client:
        await client.query('Summarize key decisions from "Weekly Product Sync" from yesterday')
        async for message in client.receive_response():
            if hasattr(message, 'content'):
                for block in message.content:
                    if hasattr(block, 'text'):
                        print(block.text)

asyncio.run(main())
```

```typescript
import { openai } from '@ai-sdk/openai';
import { experimental_createMCPClient as createMCPClient } from '@ai-sdk/mcp';
import { generateText } from 'ai';

const client = await createMCPClient({
  transport: {
    type: 'http',
    url: session.mcp.url,
    headers: {
      'x-api-key': 'your-composio-api-key',
    },
  },
});

const tools = await client.tools();
const { text } = await generateText({
  model: openai('gpt-4o'),
  tools,
  messages: [{
    role: 'user',
    content: 'Summarize key decisions from "Weekly Product Sync" from yesterday'
  }],
  maxSteps: 5,
});

console.log(`Agent: ${text}`);
```

## Why Use Composio?

### 1. AI Native Wispr Flow MCP Integration

- Supports both Wispr Flow MCP and direct API based integrations
- Structured, LLM-friendly schemas for reliable tool execution
- Rich coverage for reading and querying your Wispr Flow MCP data

### 2. Managed Auth

- Built-in OAuth handling with automatic token refresh and rotation
- Central place to manage, scope, and revoke Wispr Flow MCP access
- Per user and per environment credentials instead of hard-coded keys

### 3. Agent Optimized Design

- Tools are tuned using real error and success rates to improve reliability over time
- Comprehensive execution logs so you always know what ran, when, and on whose behalf

### 4. Enterprise Grade Security

- Fine-grained RBAC so you control which agents and users can access Wispr Flow MCP
- Scoped, least privilege access to Wispr Flow MCP resources
- Full audit trail of agent actions to support review and compliance

## Use Wispr Flow MCP with any AI Agent Framework

Choose a framework you want to connect Wispr Flow MCP with:

- [ChatGPT](https://composio.dev/toolkits/wispr_flow_mcp/framework/chatgpt)
- [Claude Cowork](https://composio.dev/toolkits/wispr_flow_mcp/framework/claude-cowork)
- [Hermes](https://composio.dev/toolkits/wispr_flow_mcp/framework/hermes-agent)
- [Atomic Agent](https://composio.dev/toolkits/wispr_flow_mcp/framework/atomic-agent)

## Related Toolkits

- [Google Sheets](https://composio.dev/toolkits/googlesheets) - Google Sheets is a cloud-based spreadsheet tool for real-time collaboration and data analysis. It lets teams work together from anywhere, updating information instantly.
- [Notion](https://composio.dev/toolkits/notion) - Notion is a collaborative workspace for notes, docs, wikis, and tasks. It streamlines team knowledge, project tracking, and workflow customization in one place.
- [Airtable](https://composio.dev/toolkits/airtable) - Airtable combines the flexibility of spreadsheets with the power of a database for easy project and data management. Teams use Airtable to organize, track, and collaborate with custom views and automations.
- [Asana](https://composio.dev/toolkits/asana) - Asana is a collaborative work management platform for teams to organize and track projects. It streamlines teamwork, boosts productivity, and keeps everyone aligned on goals.
- [Google Tasks](https://composio.dev/toolkits/googletasks) - Google Tasks is a to-do list and task management tool integrated into Gmail and Google Calendar. It helps you organize, track, and complete tasks across your Google ecosystem.
- [Linear](https://composio.dev/toolkits/linear) - Linear is a modern issue tracking and project planning tool for fast-moving teams. It helps streamline workflows, organize projects, and boost productivity.
- [Jira](https://composio.dev/toolkits/jira) - Jira is Atlassian’s platform for bug tracking, issue tracking, and agile project management. It helps teams organize work, prioritize tasks, and deliver projects efficiently.
- [Clickup](https://composio.dev/toolkits/clickup) - ClickUp is an all-in-one productivity platform for managing tasks, docs, goals, and team collaboration. It streamlines project workflows so teams can work smarter and stay organized in one place.
- [Monday](https://composio.dev/toolkits/monday) - Monday.com is a customizable work management platform for project planning and collaboration. It helps teams organize tasks, automate workflows, and track progress in real time.
- [Addressfinder](https://composio.dev/toolkits/addressfinder) - Addressfinder is a data quality platform for verifying addresses, emails, and phone numbers. It helps you ensure accurate customer and contact data every time.
- [Agiled](https://composio.dev/toolkits/agiled) - Agiled is an all-in-one business management platform for CRM, projects, and finance. It helps you streamline workflows, consolidate client data, and manage business processes in one place.
- [AirOps MCP](https://composio.dev/toolkits/airops_mcp) - AirOps MCP is AirOps' managed content platform exposing brand context, knowledge bases, and workflows. Use it to give agents brand-aware content, automate content workflows, and track Brand Kit edits.
- [Amazing Marvin](https://composio.dev/toolkits/amazing_marvin) - Amazing Marvin is a personal productivity app for tasks, projects, habits, planning, time tracking, and rewards. It helps you build a flexible workflow that matches how you actually work.
- [AnyDB](https://composio.dev/toolkits/any_db) - AnyDB is a flexible collaborative database platform for organizing records, files, and automated workflows. It helps teams centralize data, collaborate on records, and automate routine tasks.
- [ApptiveGrid](https://composio.dev/toolkits/apptivegrid) - ApptiveGrid is a collaborative no-code database and app platform for spaces, grids, forms, and structured records. It helps teams organize operational data, collect inputs, and build lightweight business apps without custom backend work.
- [Ascora](https://composio.dev/toolkits/ascora) - Ascora is a cloud-based field service management platform for service businesses. It streamlines scheduling, invoicing, and customer operations in one place.
- [Atlassian MCP](https://composio.dev/toolkits/atlassian_mcp) - Atlassian Rovo MCP connects agents to Jira, Jira Service Management, Confluence, Bitbucket, Compass, and Teamwork Graph workflows. It lets teams surface and act on Atlassian data while respecting existing user permissions.
- [Basecamp](https://composio.dev/toolkits/basecamp) - Basecamp is a project management and team collaboration tool by 37signals. It helps teams organize tasks, share files, and communicate efficiently in one place.
- [Beeminder](https://composio.dev/toolkits/beeminder) - Beeminder is an online goal-tracking platform that uses monetary pledges to keep you motivated. Stay accountable and hit your targets with real financial incentives.
- [Boxhero](https://composio.dev/toolkits/boxhero) - Boxhero is a cloud-based inventory management platform for SMBs, offering real-time updates, barcode scanning, and team collaboration. It helps businesses streamline stock tracking and analytics for smarter inventory decisions.

## Frequently Asked Questions

### Do I need my own developer credentials to use Wispr Flow MCP with Composio?

Yes, Wispr Flow MCP requires you to configure your own Dcr Oauth credentials. Once set up, Composio handles secure credential storage and management for you.

### Can I use multiple toolkits together?

Yes! Composio's Tool Router enables agents to use multiple toolkits. [Learn more](https://docs.composio.dev/tool-router/overview).

### Is Composio secure?

Composio is SOC 2 and ISO 27001 compliant with all data encrypted in transit and at rest. [Learn more](https://trust.composio.dev).

### What if the API changes?

Composio maintains and updates all toolkit integrations automatically, so your agents always work with the latest API versions.

---
[See all toolkits](https://composio.dev/toolkits) · [Composio docs](https://docs.composio.dev/llms.txt)
