Grain
Overview
Section titled “Overview”The Grain integration brings meeting transcripts, notes, and action items into Monday Morning. This gives your agent full context from client conversations, standups, and planning meetings — so it can reference decisions and extract tasks without you summarizing anything manually.
In the desktop app, ingested meetings surface in the comms inbox stage occupant alongside email and Slack items, where a meeting can be triaged and converted into an issue or a spec.
Tool Group
Section titled “Tool Group”mm_import_meeting_notes and mm_save_grain_note belong to the opt-in imports tool group. They are not listed in the agent’s tool catalog until you opt in via the Monday Morning server entry in .mcp.json:
"env": { "MM_TOOL_GROUPS": "imports" }The tools still dispatch by name even when not listed. Reading stored meeting context uses mm_get with entity: "meeting_context" — a core universal verb that is always listed.
Prerequisites
Section titled “Prerequisites”- A Grain account with meeting recordings
- A Grain plan that includes API access, and an API token
There is also a separate, OAuth-based Claude.ai Grain MCP you can connect in Claude.ai’s own integration settings for ad-hoc meeting search in conversations. It is independent of the Monday Morning plugin; the plugin is what persists meeting context into your project’s .mm/ directory. You can use both.
Step 1: Get a Grain API Token
Section titled “Step 1: Get a Grain API Token”- Log into grain.com and go to Settings → Integrations → API
- Click Generate Token (or copy an existing one)
- Copy the token value
Step 2: Configure in Monday Morning
Section titled “Step 2: Configure in Monday Morning”The import tools read the token from the GRAIN_API_TOKEN environment variable in the MCP server’s environment:
export GRAIN_API_TOKEN="your_grain_api_token_here"The desktop app’s Grain plugin settings (Settings → Plugins, Configure on the Grain row) also hold an API Token field for the app’s own surfaces, plus a Grain MCP URL (leave the default unless you are on a self-hosted or staging Grain instance) and per-project Filter Keywords.
Step 3: Verify the Connection
Section titled “Step 3: Verify the Connection”Ask your agent to import recent meetings:
Import my recent Grain meeting notes into this projectThe agent will call mm_import_meeting_notes. If configured correctly, meeting notes appear as markdown files in .mm/notes/ (named meeting-*.md).
Available Tools
Section titled “Available Tools”| Tool | Description | Requires API Token |
|---|---|---|
mm_import_meeting_notes | Import meeting notes from Grain by meeting ID, search query, or date range. Deduplicates by meeting ID and can create tasks from action items when given a spec_path. | Yes |
mm_save_grain_note | Save a Grain meeting note locally as markdown. Handles deduplication via meeting ID. | No (local file operation) |
mm_get with entity: "meeting_context" | Retrieve recent meeting context for a project — summaries, decisions, and open action items within a configurable lookback period. | No (reads local files) |
The old mm_get_project_meeting_context name is deprecated — it still dispatches, but new work should call mm_get with entity: "meeting_context".
Common Workflows
Section titled “Common Workflows”Import meetings from the past week
Section titled “Import meetings from the past week”Import all Grain meetings from the past 7 days into this projectThe agent calls mm_import_meeting_notes with a date range, pulling in transcripts and notes.
Extract action items into a spec
Section titled “Extract action items into a spec”Import the meeting from yesterday and add action items to the 2026-03-28-auth-redesign specThe agent calls mm_import_meeting_notes with a spec_path, creating tasks in that spec from the meeting’s action items.
Get meeting context for a planning session
Section titled “Get meeting context for a planning session”What decisions were made in recent meetings about this project?The agent calls mm_get with entity: "meeting_context" to retrieve summaries and decisions from stored meeting notes.
Search and save a specific meeting
Section titled “Search and save a specific meeting”Using the Claude.ai MCP path, search for a meeting and then save it locally:
Find the meeting where we discussed the API redesign, then save those notes to this projectThe agent searches via the Grain MCP, then calls mm_save_grain_note to persist the result.
Troubleshooting
Section titled “Troubleshooting”“No Grain API token found” error
Set GRAIN_API_TOKEN in the environment the MCP server runs in.
“Unauthorized” error when importing Your API token is invalid or expired. Generate a new one at Settings → Integrations → API in Grain.
No API section in Grain settings API access is not available on all Grain plans. Check your subscription tier or contact Grain support.
The agent says it can’t see the import tools
The imports group is not opted in. Add "MM_TOOL_GROUPS": "imports" to the server’s env in .mcp.json — or ask the agent to call the tool by its exact name; delisted tools still dispatch.
Duplicate meeting notes The plugin tracks imported meetings by ID and automatically deduplicates. If you see duplicates, they may have been imported through different paths (e.g., both manually and via the import tool).
Empty transcripts Grain needs time to process recordings after a meeting ends. If a transcript is empty, wait a few minutes and try again.