Resolve Urls
Turns Grain entity IDs into clickable shareable URLs. Call this whenever you are about to
show a link to a meeting, clip, collection, or story to the user (for example: "share this
meeting", "send me the link", or when citing a source). NEVER build a Grain URL by hand or
guess one from an ID — hand-built URLs are almost always wrong. This tool is the only correct
way to get a URL.
Add Clips To Story
Adds one or more clips to an existing story. Use list_stories or fetch_story to find the story ID, and create_clip or list_clips to get clip IDs.
Create Story
Creates a new story with the given title.
Fetch Story
Fetches detailed information about a single Grain story by ID, including its items
(clips and text sections). Use list_stories first to find story IDs.
List Stories
Returns a paginated list of Grain stories you have access to, ordered by most recent.
Stories are curated collections of clips and text sections created from meetings.
If the list contains more than `limit` stories, the response will also contain a
non-null `cursor` value that can be used to fetch the next page by calling the tool again.
Update Collection Share State
Changes the visibility of a collection (also known as a playlist). Options: 'restricted' (only shared users), 'workspace' (all workspace members), 'public' (anyone with the link).
Add Recordings To Collection
Adds one or more recordings to an existing collection (also known as a playlist) by recording ID. Use list_meetings or search_in_transcripts first to find recording IDs.
Create Collection
Creates a new empty collection (also known as a playlist) with the given title.
The collection is created with restricted visibility (only you can see it).
Use add_recordings_to_collection to add meetings, and update_collection_share_state
to change visibility.
Fetch Collection
Fetches detailed information about a single Grain collection (also known as a playlist) by ID,
including the list of recordings it contains with their URLs.
List Collections
Returns a paginated list of Grain collections (also known as playlists) you have access to,
ordered by most recent.
A collection is a curated group of meetings (recordings) that belong together.
If the list contains more than `limit` collections, the response will also contain a
non-null `cursor` value that can be used to fetch the next page of collections in the list
by calling the tool again and passing the `cursor` along with the same `filters`.
The list will be empty if there are no collections matching the supplied filters.
Fetch Deal
Fetches information about a single HubSpot deal by ID.
In addition to returning the same data as returned by list_all_deals, this returns
data about all the activity that has occurred on the deal.
List Open Deals
List status of open hubspot-linked deals that are synced in Grain.
If the list contains more than `limit` deals, the response will also contain a
non-null `cursor` value that can be used to fetch the next page of deals in the list
by calling the tool again and passing the `cursor` along with the same `filters`.
The list will be empty if there are no open deals matching the supplied filters.
If also looking to include closed deals, use `list_all_deals` instead.
List All Deals
List status of hubspot-linked deals that are synced in Grain.
If the list contains more than `limit` deals, the response will also contain a
non-null `cursor` value that can be used to fetch the next page of deals in the list
by calling the tool again and passing the `cursor` along with the same `filters`.
The list will be empty if there are no deals matching the supplied filters.
Fetch Meeting Coaching Feedback
Fetches AI-generated sales coaching feedback and scorecard for a single Grain meeting by ID.
The response format is the same as is returned by list_coaching_feedback.
List Coaching Feedback
List AI-generated sales-coaching feedback and scorecards for a filtered set of meetings.
If the list contains more than `limit` meetings, the response will also contain a
non-null `cursor` value that can be used to fetch the next page of meetings in the list
by calling the tool again and passing the `cursor` along with the same `filters`.
The list will be empty if there are no meetings matching the supplied filters.
List Workspace Users
Get information about all the users in the logged-in Grain user's workspace. Each user's person ID is also returned and can be used to list recordings attended by that person.
Tag Meetings
Add or remove a tag from one or more meetings by recording ID. Creates the tag if it doesn't exist (on add).
List Clips
Returns a paginated list of Grain clips you have access to, ordered by most recent.
Clips are short segments from meeting recordings.
If the list contains more than `limit` clips, the response will also contain a
non-null `cursor` value that can be used to fetch the next page by calling the tool again.
Only returns clips whose media has finished processing, so newly-created clips may take
a few minutes to appear.
Create Clip
Creates a clip on a recording between the given timestamps.
Use search_in_transcripts first to find the recording and relevant transcript timestamps,
then call this tool with the meeting ID and start/end timestamps.
Choose start_ms and end_ms to capture a complete thought or topic — avoid cutting off mid-sentence.
The server snaps start_ms/end_ms to transcript word boundaries, so they don't need to be exact.
Invalid ranges (start_ms >= end_ms, or end_ms past the recording's duration) returns an error.
Search In Transcripts
Searches transcripts of Grain meetings and returns the matching segments rather than
the full transcript. Useful for locating specific content, topics, quotes, decisions,
action items, or moments across one or many meetings without loading entire transcripts.
Uses hybrid semantic + keyword search over transcript segments — coherent conversation
chunks annotated with summaries, topics, entities, and speaker info. Results are
grouped by meeting and ordered by relevance.
Get Dossier For Company
Fetches the Company Intelligence dossier for a single company by `company_id`
(the id returned by `search_companies`). The dossier is returned as markdown plus
metadata. If the company exists but has no dossier generated yet, `markdown` and
the metadata fields are null. Read-only: this never triggers dossier generation.
Search Companies
Returns filtered lists of companies that were participants of Grain meetings you have
access to.
Use one call with all requested company names when the user asks about multiple
companies. Set `limit` low, usually 1-3, when company names are specific.
Search Persons
Returns a filtered list of persons that were participants of Grain meetings you have
access to.
Fetch Meeting Transcript
Fetches the full transcript of a single Grain meeting by ID. Returns the entire
conversation as markdown, which can be large for long meetings.
Fetch User Recording Notes
Fetches the current user's private notes for a single Grain meeting by ID. Returns the notes as markdown text, or a message if no notes exist.
Fetch Meeting Action Items
Fetches the action items extracted from a single Grain meeting by ID.
Each action item includes the task description, timestamp, status (pending or completed),
the assignee (person_id and name, or null when unassigned), and the due date (or null
when not set). `end_timestamp_ms` is null when the action item has no end time.
In some cases, older meetings may not have had action items generated for them.
Fetch Meeting Notes
Fetches the AI notes payload from a single Grain meeting by ID.
In some cases, older meetings may not have had notes generated for them. In these cases
you can use `fetch_meeting_transcript` instead to determine the content of the meeting.
Fetch Meeting
Fetches information about a single Grain meeting by ID.
The response format is the same as is returned by list_meetings.
Create Smart Topic
Creates a new smart topic in your Grain workspace. A smart topic is a saved classifier
that marks where meetings discuss a given subject, based on example keywords and phrases.
Provide 1-50 examples: short examples (1-2 words) are treated as keywords, longer ones as
semantic phrases.
Only workspace admins can create smart topics, and the topic is associated with your team.
Matching runs asynchronously: existing meetings are scored over the following minutes, so
the new topic may return no meetings immediately when used with the `smart_topics` filter.
To reconfigure an existing topic, use the Grain app — this tool only creates new topics.
List Smart Topics
Lists the smart topics configured in your Grain workspace. Smart topics are saved
classifiers that mark where meetings discuss a given subject. Use the returned `id`
values with the `smart_topics` filter on the meeting-listing tools (e.g. list_meetings)
to find meetings matching a topic. Deactivated topics are hidden unless
`include_inactive` is true.
List Attended Meetings
Returns a filtered list of Grain meetings you have attended, ordered by most recent.
If the list contains more than `limit` meetings, the response will also contain a
non-null `cursor` value that can be used to fetch the next page of meetings in the list
by calling the tool again and passing the `cursor` along with the same `filters`.
The list will be empty if there are no meetings matching the supplied filters.
If also looking to include meetings the user didn't attend, use `list_meetings` instead.
List Meetings
Returns a filtered list of Grain meetings you have access to, ordered by most recent.
If the list contains more than `limit` meetings, the response will also contain a
non-null `cursor` value that can be used to fetch the next page of meetings in the list
by calling the tool again and passing the `cursor` along with the same `filters`.
The list will be empty if there are no meetings matching the supplied filters.
If only looking for meetings the user attended, use `list_attended_meetings` instead.
Update My Settings
Update your personal settings.
Set a field to null to unset your override and fall back to your team's setting.
My Settings
Get your personal settings.
For overrideable settings, a null value means the team setting is being applied.
You can use `update_my_settings` to change these settings.
My Team
Get the settings of the team you belong to.
You can use `my_settings` to see your personal setting overrides.
Myself
Get information about the logged-in Grain user.