Skip to content

Zoom Codex connector: paginate transcript retrieval to avoid model-facing truncation #1

Description

@kushagrasharma

Summary

The Zoom Codex connector currently returns meeting transcripts inline from zoom.get_meeting_assets. For longer transcripts, the raw MCP/tool result can contain the full transcript, but the model-facing function_call_output may be truncated before the agent can reason over the full meeting.

This looks like a connector/API-shape issue rather than a Zoom transcript data-loss issue: the connector can retrieve the full structured transcript, but Codex receives a truncated inline blob.

No private transcript text, attendee names, customer data, patient/clinical details, or company-sensitive details are included in this report.

Sanitized evidence

Observed on a meeting transcript with generic characteristics:

  • Meeting length: about 33 minutes
  • Raw connector result included the full transcript in structuredContent
  • Raw result had 1271 transcript items
  • First transcript timestamp: 00:00:55.000
  • Last transcript timestamp: 00:33:46.000
  • Model-facing function_call_output was truncated around 00:06:25 and resumed around 00:26:05
  • The output included a truncation marker similar to ...16153 tokens truncated...

Because the agent only sees the truncated model-facing output, it cannot reliably summarize, extract action items, answer questions about the omitted middle of the meeting, or verify completeness.

Current behavior

zoom.get_meeting_assets accepts only:

{ "meetingId": "..." }

It returns transcript data inline as a large JSON payload when a transcript is available. There are no cursor, page, time-range, search, or max-size parameters for transcript retrieval.

zoom.get_recording_resource is not an adequate fallback for transcript-only meetings. In the observed case, the meeting had has_transcript=true and has_recording=false; attempting the recording-resource path returned 404.

Requested behavior

Please add a dedicated transcript retrieval API/tool that allows agents to fetch transcripts incrementally and verify completeness without relying on one huge inline payload.

Suggested tool shape:

get_meeting_transcript({
  meetingId: string,
  start_time?: string,
  end_time?: string,
  cursor?: string,
  page_size?: number,
  max_chars?: number,
  format?: "items" | "text" | "vtt" | "srt"
})

Suggested response metadata:

{
  transcript_source: string,
  total_items: number,
  returned_items: number,
  next_cursor?: string,
  truncated: boolean,
  items?: TranscriptItem[],
  text?: string
}

It would also help to expose one or both of:

  • search_meeting_transcript({ meetingId, query, start_time?, end_time?, cursor?, page_size? })
  • get_meeting_action_items({ meetingId, transcript_range?, source? })

Compatibility suggestion

Consider changing get_meeting_assets so it returns transcript metadata/reference only, rather than embedding the full transcript inline. For example:

{
  has_transcript: true,
  transcript: {
    available: true,
    total_items: 1271,
    first_timestamp: "00:00:55.000",
    last_timestamp: "00:33:46.000",
    retrieval_tool: "get_meeting_transcript"
  }
}

That would keep the asset summary compact while directing agents to a paginated transcript tool when full transcript reasoning is required.

Impact

Without pagination/search/range retrieval, Codex agents can silently miss large parts of transcript-only meetings even though the connector has access to the complete transcript. This can produce incomplete summaries, missed action items, and false confidence in meeting analysis.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions