Capabilities
18 focused tools, with clear boundaries.
Read tools retrieve your own and shared meeting knowledge. Write tools manage action items, folders, and session sharing. Read tools require mcp:read; write tools require mcp:write.
For shared content, pass both session_id and owner_id to get_session, get_transcript, and get_action_items. Deep-research fetch accepts shared:owner_id:session_id (the fetch_id from list_shared_sessions). Search covers only your own sessions. Shared sessions cannot be edited or put in folders: update_action_items rejects owner_id and folder tools reject it too. share_session grants other people read access; confirm with the user unless they clearly asked. unshare_session accepts exactly one of recipient_id, email, or everyone: true; everyone also invalidates the old link. Share events, Teams sources, and per-invite scopes are deferred.
search_sessionsSearch across your Wave sessions using semantic search. Start here for cross-session questions, then fetch only the relevant session details. Returns sessions that match the query based on meaning, not just keywords. Sessions of type "phone" include a `phone` object (direction inbound/outbound, to_number, from_number, status, ongoing).
query, limit?, folder?, tag?, tag_mode?
list_sessionsList your recent Wave sessions. Returns session summaries with metadata. For synthesis, start with 10–20 and paginate; use 100 only for an explicitly exhaustive request. Sessions of type "phone" include a `phone` object (direction inbound/outbound, to_number, from_number, status, ongoing — for inbound bridge calls the other party is unknown so from_number is null).
limit?, type?, since?, cursor?, folder?, tag?, tag_mode?
list_foldersList the user's folders. Users organize sessions into folders in the Wave app. Use this to discover folder ids/names, then pass `folder` to list_sessions or search_sessions to scope results (useful for work/personal separation on a single account). Each folder also carries `pinned`, `sort_order` (sort for the sessions inside it), `order` (manual position) and `last_opened_at` when set; absence means not pinned / newest first / no manual position / never opened. Folders are returned in display order: pinned first, then by `order` ascending (folders with an order before those without), then by name.
get_sessionGet full details for a specific Wave session, including the summary and optionally the transcript. Sessions of type "phone" include a `phone` object (direction inbound/outbound, to_number, from_number, status, ongoing). For a session shared with the user, pass its owner_id too; the result adds owner_id, owner_name, access "shared" and the share scope, and omits anything the owner did not share.
session_id, include_transcript?, owner_id?
get_transcriptGet the transcript for a Wave session with speaker attribution. For a session shared with the user, pass its owner_id too.
session_id, format?, owner_id?
get_action_itemsRead the structured action items attached to a Wave session, plus the current version. Returned items have provenance: source="agent" means the item was written by an AI, source="user" means the user wrote or edited it. Pair with update_action_items using `expected_version` for safe round-trip edits. For a session shared with the user, pass its owner_id too; shared action items are read-only (read_only: true) and carry no provenance or version.
searchSearch the user's Wave sessions (meetings, calls, recordings) by meaning. Returns matching sessions as citable results with id, title, and url. This is the deep-research search interface; in interactive chats prefer search_sessions, which returns richer structured data.
fetchFetch the full content of a Wave session by id: summary plus speaker-labeled transcript, with metadata. Use ids returned by `search`, or a `fetch_id` ("shared:{owner_id}:{session_id}") from list_shared_sessions for a session someone shared with the user. This is the deep-research fetch interface; in interactive chats prefer get_session / get_transcript.
list_shared_sessionsList sessions other Wave users have shared with the user, newest share first. Each row has session_id, owner_id, owner_name, title, shared_at, the share scope (which of summary / transcript / audio / action_items the owner shared) and a fetch_id. To read one, pass BOTH session_id and owner_id to get_session, get_transcript or get_action_items (or fetch_id to fetch). Shared sessions are read-only and are not covered by search_sessions or search.
list_session_accessFor one of the user's own sessions, list the people who have access (recipient_id, name, email, shared_at, how they got it) and the emailed invites nobody has accepted yet. An existing share link cannot be read back; share_session without emails creates one.
update_action_itemsWrite back the structured action items for a Wave session. The array fully replaces the current list — preserve items by keeping their `id`. Items you add without an `id` get one assigned. Pass `expected_version` (from a prior get_action_items call) to reject the write if the user edited in between. Defaults `source` to "agent" for new items you add.
session_id, action_items, expected_version?
create_folderCreate a folder for organizing sessions. Folders are non-exclusive (a session can be in many folders). If a folder with the same case-insensitive name already exists, returns it instead of erroring — safe to retry.
add_session_to_folderAdd a session to a folder. Non-exclusive: a session can belong to many folders simultaneously. Idempotent — calling this for a session already in the folder is a no-op.
remove_session_from_folderRemove a session from a folder. The session itself is not deleted; only the folder link is removed.
update_folderRename, recolour, pin, reorder, or change the session sort of a folder. Pass any of `name` (trimmed, 1–100 chars), `color` (hex "#RRGGBB", or null to clear it), `pinned` (boolean; pinned folders sort first everywhere), `sort_order` ("newest" | "oldest" | "title" — the remembered sort for the sessions inside the folder), or `order` (integer from 0 to 2^53 - 1; manual position, folders with an order sort ascending before those without) — at least one is required; anything omitted is left unchanged. Membership is not touched: use add_session_to_folder / remove_session_from_folder for that. Use list_folders to find the folder_id.
folder_id, name?, color?, pinned?, sort_order?, order?
delete_folderDelete a folder. Only the folder itself is removed — the sessions in it are never deleted and stay in any other folders they belong to. This cannot be undone, so confirm with the user before deleting a folder they did not explicitly ask to remove. Use list_folders to find the folder_id.
share_sessionShare one of the user's own sessions with other people. This grants them read access to the session, so confirm with the user before calling unless they clearly asked to share it. With `emails` (1–10 addresses, optional `message` up to 500 characters), Wave emails each person an invite and returns which addresses were sent and which were skipped (with a reason). Without `emails`, returns a share link (app.wave.co/i/…, valid 30 days) that anyone signed in to Wave can use to get access.
session_id, emails?, message?
unshare_sessionRemove access to one of the user's own sessions. Pass exactly one of: `recipient_id` (from list_session_access) to remove that person; `email` to cancel a pending emailed invite; or `everyone: true` to remove every person and reset the share link, so the old link stops working (a new, unsent link is returned). Confirm with the user before removing access they did not explicitly ask to remove.
session_id, recipient_id?, email?, everyone?