← Back to all apps

Read AI

Productivityby Read AI, Inc
Launched Mar 9, 2026 on ChatGPT

Read AI brings your meeting intelligence directly into your AI workflows. Connect your Read AI account to access meeting summaries, transcripts, action items, key questions, and more — all retrievable through natural conversation.

Read AI can look up recent meetings, pull the full transcript from a specific call, surface action items from last week's syncs, or find what key questions came up in a discussion.

What you can do:

  • Browse and filter your meetings by date range
  • Retrieve summaries, chapter breakdowns, and topics from any meeting
  • Pull action items and key questions to stay on top of follow-ups
  • Access full transcripts for deep dives or verbatim references

Whether you're prepping for a follow-up, catching up on a meeting you missed, or building workflows around your recorded conversations, Read AI's MCP integration makes your meeting data a first-class part of your AI experience.

2ChatGPT Tools
Read AI, IncDeveloper
ProductivityCategory

Available Tools

Get Meeting By Id

get_meeting_by_id
Full Description

Retrieve a single ReadAI meeting (owned by or shared with the authenticated user) by its ULID identifier, with optional expansion of rich meeting content.

When to call this tool ---------------------- Call this tool only when:

  • You already have a specific meeting ID (a ULID), and
  • The user wants information about that *one* meeting, such as:
    • Metadata (title, times, participants, platform, report URL)
    • Summary / chapter summaries
    • Action items / key questions
    • Topics discussed
    • Full transcript
    • Metrics/analytics
    • A link to download the recording

Do NOT call this tool:

  • To search or browse meetings by title, date, participant, or keywords

(use a dedicated list/search tool instead).

  • When working with multiple meetings at once.
  • With guessed or fabricated IDs. Only use IDs explicitly provided by the user

or returned from another tool.

Parameters ---------- id : str The ReadAI meeting identifier in ULID format.

  • 26-character, case-insensitive, base32 ULID string

(e.g. "01KA3883FYZSFZXE391Q0FMV39").

  • Must come from:
    • A previous tool (e.g., a meeting list/search tool), or
    • Explicit user input.
    • Do not invent, modify, or "fix" IDs.

expand : Optional[List[ExpandableEnum]] Optional list specifying which additional sections of the meeting record should be fully populated.

Only sections listed here are fetched; all others remain None. Request the smallest set that satisfies the user’s need. Each additional expand value can increase latency and resource usage, especially "transcript".

Allowed values (strings):

  • "summary": concise natural-language overview of the meeting.
  • "chapter_summaries": breakdown into labeled sections/chapters.
  • "action_items": follow-up tasks and next steps.
  • "key_questions": important or open questions discussed.
  • "topics": main themes/subjects covered.
  • "transcript": detailed spoken content of the meeting, including who spoke and what they said, suitable for verbatim quotes and fine‑grained analysis.
  • "metrics": high-level analytics (e.g., read_score, sentiment, engagement).
  • "recording_download": url to download the meeting recording.

Output ------ MeetingEvent A single meeting object with:

  • Base metadata (id, title, start/end times, scheduled times, platform,

platform_id, report_url, folders).

  • Owner and participants (with name/email and attendance status).
  • Expandable fields populated only if requested in expand:
    • summary: Optional[str]
    • chapter_summaries: Optional[List[Chapter]]
    • action_items: Optional[List[str]]
    • key_questions: Optional[List[str]]
    • topics: Optional[List[str]]
    • transcript: Optional[Transcript]
    • metrics: Optional[Metrics]
    • recording_download: Optional[RecordingDownload]

Behavior and edge cases -----------------------

  • Authentication:
    • Access token is handled internally; do not supply it as a parameter.
  • If missing or invalid, the tool fails with errors such as:
    • "Unauthorized: No access token provided"
    • "Invalid token: No subject in access token claims".
  • Not found / access issues:
    • If the ID is invalid or the meeting is not accessible to the user,

the tool fails with "Not Found".

  • Idempotency:
    • Read-only and idempotent. Calling with the same arguments returns the same

logical result.

Usage examples for agents ------------------------- 1) User: "Give me the summary and action items from meeting 01H9T5X9G5K3M7Y8R0D8AYZ5WQ." -> Call: { "id": "01H9T5X9G5K3M7Y8R0D8AYZ5WQ", "expand": ["summary", "action_items"] }

2) User: "Who said 'We should move this to next quarter' in meeting <meeting_ulid>?" -> You need detailed speech text: { "id": "<meeting_ulid>", "expand": ["transcript"] }

Parameters (1 required, 1 optional)
Required
idstring

Meeting ULID

Optional
expandarray

List of expandable fields

Default: null

List Meetings

list_meetings
Full Description

List ReadAI meetings for the authenticated user with optional start-time filters and cursor-based pagination.

When to call this tool ---------------------- Call this tool when:

  • You need to browse or filter a user's meetings by time range.
  • You need meeting IDs (ULIDs) that can later be used with a "get_meeting_by_id"

tool for detailed inspection.

  • You want a page of recent meetings (optionally with summaries or metrics).

Do NOT call this tool:

  • When you already know the specific meeting ID and only need that single

meeting (use the "get_meeting_by_id" tool instead).

  • To search by title, participant, or arbitrary keywords (use a search tool

if available).

  • To guess or fabricate meeting IDs.

Parameters ---------- limit : int, default 10 (max 10) Maximum number of meetings to return in this page.

  • Must be ≤ 10.
  • If omitted, defaults to 10.

start_datetime_gt : Optional[datetime] Only include meetings whose start time is strictly greater than this value (exclusive lower bound). ISO 8601 string, e.g. "2025-11-01T00:00:00Z".

start_datetime_gte : Optional[datetime] Only include meetings whose start time is greater than or equal to this value (inclusive lower bound). ISO 8601 string.

  • Typically use either start_datetime_gt or start_datetime_gte, not both.

start_datetime_lt : Optional[datetime] Only include meetings whose start time is strictly less than this value (exclusive upper bound). ISO 8601 string.

start_datetime_lte : Optional[datetime] Only include meetings whose start time is less than or equal to this value (inclusive upper bound). ISO 8601 string.

  • Typically use either start_datetime_lt or start_datetime_lte, not both.
  • For a closed interval [A, B], use:
    • start_datetime_gte = A
    • start_datetime_lte = B

cursor : Optional[str] Cursor for pagination.

  • First page: omit or pass null.
  • Next page: pass the ID of the last meeting returned in the previous page

(previous_response.data[-1].id), which acts as a "start after this" pointer.

expand : Optional[List[ExpandableEnum]] Optional list specifying which extra sections of *each* meeting should be fully populated.

Only sections listed here are fetched; all others remain None. Because this is a list endpoint, expansions apply to every meeting in the page and can be expensive. Request only what the user needs.

Allowed values (strings), with the same meanings as in get_meeting_by_id:

  • "summary": concise overview of each meeting.
  • "chapter_summaries": section/chapter breakdown.
  • "action_items": follow-up tasks per meeting.
  • "key_questions": important or open questions per meeting.
  • "topics": main themes/subjects per meeting.
  • "transcript": full spoken content per meeting.
  • "metrics": analytics such as read_score, sentiment, engagement.
  • "recording_download": url to download the meeting recording.

Returns ------- ListMeetingResponse A paginated list of meetings with:

  • object: str – always "list".
  • url: str – API-style URL for this collection.
  • has_more: bool – True if there are more meetings beyond this page.
  • data: List[MeetingEvent] – meetings matching the filters, each with:
    • Core metadata (id, title, start/end times, platform, etc.).
    • Owner and participants.
    • Any expandable fields populated according to expand.

Behavior and edge cases -----------------------

  • Authentication:
    • Access token is handled internally; do not pass it as a parameter.
  • If missing or invalid, the tool raises errors such as:
    • "Unauthorized: No access token provided"
    • "Invalid token: No subject in access token claims".
  • Filtering:
    • All provided filters are combined with logical AND.
    • Conflicting ranges (e.g., lower bound after upper bound) will typically

return an empty result.

  • Prefer at most one lower-bound parameter (gt or gte) and one upper-

bound parameter (lt or lte).

  • Pagination:
    • limit controls the number of meetings per page (max 10).
    • Use has_more plus cursor (last meeting's id from data) to fetch

subsequent pages.

  • Idempotency:
    • Read-only and idempotent. Repeating the same call yields the same logical

results, except for new meetings created in the underlying system.

Usage examples for agents ------------------------- 1) Get the 10 most recent meetings (no filters, first page): -> Call: { "limit": 10 }

2) Get meetings in November 2025, including brief summaries: -> Call: { "limit": 10, "start_datetime_gte": "2025-11-01T00:00:00", "start_datetime_lte": "2025-11-30T23:59:59", "expand": ["summary"] }

3) Page through all recent meetings since 2025-11-01: First page: -> Call: { "limit": 10, "start_datetime_gte": "2025-11-01T00:00:00" } Next page (if has_more is true): -> Call: { "limit": 10, "start_datetime_gte": "2025-11-01T00:00:00", "cursor": "<id_of_last_meeting_from_previous_page>" }

4) Find candidate meetings to inspect in detail later:

  • First, list meetings with summaries and metrics:

{ "limit": 5, "expand": ["summary", "metrics"] }

  • Then, pick a specific meeting ID and call readai_get_meeting_by_id

with expand=["transcript"] if you need the full conversation.

Parameters (0 required, 7 optional)
Optional
cursorstring

Cursor for the next page. For the first page, omit this. For subsequent pages, set this to the ID (ULID) of the last meeting (`data[-1].id`) returned in the previous response.

Default: null
expandarray

List of expandable fields

Default: null
limitinteger

The number of results to return

Default: 10
start_datetime_gtstring

Only return meetings with start times strictly after this datetime (exclusive lower bound). Use ISO 8601 format, e.g. '2025-11-01T00:00:00' or '2025-11-01T00:00:00Z'.

Default: null
start_datetime_gtestring

Only return meetings with start times on or after this datetime (inclusive lower bound). Use ISO 8601 format, e.g. '2025-11-01T00:00:00'

Default: null
start_datetime_ltstring

Only return meetings with start times strictly before this datetime (exclusive upper bound). Use ISO 8601 format, e.g. '2025-11-01T23:59:59'

Default: null
start_datetime_ltestring

Only return meetings with start times on or before this datetime (inclusive upper bound). Use ISO 8601 format, e.g. '2025-11-01T23:59:59'

Default: null