Connect Your AI Agent with Grain for Slack

Integrate Grain MCP server into your Slack workspace for instant access to your AI agent.

Back to MCP Servers
Grain
Grain
Grain joins your calls to take notes, document the next steps, and file automated meeting notes in platforms like Slack, HubSpot, and more.

Categories

Productivity

Available Tools

Tools that your AI agent can use through this MCP server to interact with Grain

Update Recording

Renames a recording and/or adds and removes tags on it. All fields are optional — pass only what you want to change. Use List Recordings first to find the recording's ID. Example: to retitle a recording and tag it, pass title and addTags: ["qa-verified"] together. See the documentation

Manage Recording Sharing

Shares or unshares a recording with a specific user or team. Use List Recordings to find the recording's ID, and List Users or List Teams to resolve the target's ID. Set operation to share to grant access or unshare to revoke it, and targetType to user or team. Example: recordingId: "pppp6666-qq77-rr88-ss99-tttt00000000", operation: "share", targetType: "user", targetId: "d91b7ed0-a149-425c-9623-0664148e4fc1" shares the recording with that user and returns {"success": true}. See the documentation

List Users

Lists the users in your Grain workspace (id, name, email). Use this to resolve a user's ID before sharing a recording with them via Manage Recording Sharing, or to identify who's who when reviewing recording participants. Example: returns [{"id": "d91b7ed0-a149-425c-9623-0664148e4fc1", "name": "Danny Archer", "email": "[email protected]"}]. See the documentation

List Teams

Lists the teams in your Grain workspace (id, name). Use this to resolve a team's ID before sharing a recording with it via Manage Recording Sharing. Example: returns [{"id": "a414c333-c9fe-4fdc-9131-fb31796699b2", "name": "Pipedream"}]. See the documentation

List Recordings

Lists Grain recordings, optionally filtered by start datetime range (ISO8601), title search, participant scope, team, or meeting type. Automatically paginates and returns up to Max Results recordings. Use this to find recording IDs for Get Recording and Get Transcript. Example: titleSearch: "Acme" returns recordings like [{"id": "pppp6666-qq77-rr88-ss99-tttt00000000", "title": "Acme Renewal Call", "start_datetime": "2026-01-05T15:00:00Z", "media_type": "video", ...}]. Pass fields to return only the fields you need instead of the full object. See the documentation

List Meeting Types

Lists the meeting types configured in your Grain workspace (id, name, scope), where scope is internal or external. Use this to understand how recordings are categorized, or to resolve a meeting type's ID for filtering. Example: returns [{"id": "e8b894a9-7ecf-4330-a282-527c085618fd", "name": "Sales", "scope": "external"}, {"id": "815747d1-9e25-40f6-a3b8-e1908e25151e", "name": "1:1s", "scope": "internal"}]. See the documentation

Get Transcript

Fetches the full transcript of a Grain recording. The json format returns structured segments with speaker, participant ID, start/end times in milliseconds, and text; txt, vtt, and srt return plain text or subtitle formats. Use List Recordings to find recording IDs; use Get Recording for the recording's metadata instead of its transcript. Example: recordingId: "pppp6666-qq77-rr88-ss99-tttt00000000" with format: "txt" returns plain text like "Speaker 1: Thanks for joining today...". See the documentation

Get Recording

Fetches a specific recording by its ID from Grain, returning its metadata (title, times, URL, tags, teams, meeting type). Enable the optional include props to add highlights, participants, AI action items, AI summary, calendar event, HubSpot data, or screenshares to the response. Use List Recordings to find recording IDs, and Get Transcript to fetch the full transcript. Example: recordingId: "pppp6666-qq77-rr88-ss99-tttt00000000" with aiSummary: true returns the recording's metadata plus {"ai_summary": {"text": "..."}}. See the documentation

Download Recording

Downloads a Grain recording's media file (video or audio) and writes it to File Stash, returning filePath, filename, and contentType. Only recordings with processed media have a downloadable file — check media_type (video or audio, not transcript) from List Recordings or Get Recording first. Use Get Transcript instead if you only need the spoken content, not the media file itself. Example: recordingId: "8a089fcb-0961-4393-8da2-f0db5f8cfd79" downloads the file and returns {"filePath": "/tmp/grain-recording-8a089fcb-....mp4", "filename": "grain-recording-8a089fcb-....mp4", "contentType": "video/mp4"}. See the documentation