Meetly agent reference

get_transcript

Read-only · get_transcript

Read one bounded page of a meeting transcript by meeting id (from list_meetings or search).

Inputs

NameTypeRequiredDescription
idstringYesMeeting UUID, exact MTLY-N reference, or legacy MTLY-platform-UUIDprefix code.
cursorstring or numberNoOmit or pass 0 for the first page. Later pages take the previous nextCursor string unchanged, for the same meeting; character offsets, page numbers, timestamps and edited cursors are rejected. nextCursor is null on the final page. A cursor is bound to one transcript revision and one set of speaker names; if either changes, the call fails with TRANSCRIPT_REVISION_CHANGED and the meeting is read again from the first page.
maxCharsnumberNoCharacters to return per page; defaults to 12,000 and is capped at 20,000. A page may hold fewer characters so its serialized response stays within the 64 KiB limit. Minimum: 1. Maximum: 20000.
segmentsbooleanNoAccepted for compatibility; ignored. Every page includes its segments with timing and canonical speaker objects, so page size is measured on the serialized response (text plus segments).
require_speakers_completebooleanNoWhen true, the call succeeds only if every segment is self or user-named. Default false returns the transcript with partial or anonymous attribution preserved. Default: false.

What you get

transcriptText
The text on this transcript page.
segments
Transcript passages with speaker labels and timestamps.Includes: speaker.
title
The meeting title.
id
The meeting identifier.
nextCursor
Where to continue reading; null means there are no more pages.
dateIso
The meeting date and time.
More response fields
cursor
The position of this page in the results.
totalChars
The length of the full transcript, in characters.
truncated
Whether more transcript text remains to be read.
metadata
Additional details about the meeting.
speakerResolution
Whole-meeting speaker identity, identical on every page of one revision. status: complete (every segment self or user-named), partial (some identified), unknown (none identified), processing (native speaker processing pending). Text is returned regardless of attribution status.Includes: status, speakerRevision, namesRevision, namesSource, nativeSpeakerStatus, segmentsTotal, segmentsNamed, segmentsSelf, segmentsAnonymous, segmentsUnknown, speakers.
openUrl
Optional user-facing HTTPS link for this meeting (https://www.getmeetly.ai/open/meeting/<uuid>). Opens the exact meeting where the installed Meetly app supports meeting links, otherwise a Meetly page with Open in Meetly and App Store actions. The meeting is identified by its title and meetingReference (MTLY-N).
sourceUrl
MCP evidence resource for citation provenance (https://mcp.getmeetly.ai/mcp/sources/meetings/<uuid>). Not a meeting-opening link and not a substitute for openUrl.
appDeepLink
Native link (meetly://meeting/<uuid>) for native clients that hand off to the app directly; openUrl is the cross-platform link.

Example

Replace meeting-id-from-list with a meeting ID returned by list_meetings. This is a placeholder, not a real meeting.

Call get_transcript with:

{
  "id": "meeting-id-from-list",
  "maxChars": 12000,
  "segments": true
}

Illustrative input, checked against this catalog at build time.

Full description from the catalog

Read one bounded page of a meeting transcript by meeting id (from list_meetings or search). Pages are chained with the returned nextCursor for the same meeting; a null nextCursor marks the final page. Each segment has speaker {localId, displayName, role self|participant|anonymous|unknown, attribution, nameVerified}; speakerResolution.speakers adds nameSource and confidence per localId, and speakerResolution.status is complete, partial, unknown or processing (partial resolution still returns all text). Speaker identity comes from, in order: a manual tag in Meetly, a verified self or user mapping, an anonymous cluster, then unknown; get_summary names are not used for transcript identities. Also returns openUrl, appDeepLink and sourceUrl. Error TRANSCRIPT_REVISION_CHANGED indicates the transcript changed since the cursor was issued; RATE_LIMITED includes retryAfterMs.

Input schema
{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "id": {
      "type": "string",
      "description": "Meeting UUID, exact MTLY-N reference, or legacy MTLY-platform-UUIDprefix code."
    },
    "cursor": {
      "type": [
        "string",
        "number"
      ],
      "description": "Omit or pass 0 for the first page. Later pages take the previous nextCursor string unchanged, for the same meeting; character offsets, page numbers, timestamps and edited cursors are rejected. nextCursor is null on the final page. A cursor is bound to one transcript revision and one set of speaker names; if either changes, the call fails with TRANSCRIPT_REVISION_CHANGED and the meeting is read again from the first page."
    },
    "maxChars": {
      "type": "number",
      "minimum": 1,
      "maximum": 20000,
      "description": "Characters to return per page; defaults to 12,000 and is capped at 20,000. A page may hold fewer characters so its serialized response stays within the 64 KiB limit."
    },
    "segments": {
      "type": "boolean",
      "description": "Accepted for compatibility; ignored. Every page includes its segments with timing and canonical speaker objects, so page size is measured on the serialized response (text plus segments)."
    },
    "require_speakers_complete": {
      "type": "boolean",
      "default": false,
      "description": "When true, the call succeeds only if every segment is self or user-named. Default false returns the transcript with partial or anonymous attribution preserved."
    }
  },
  "required": [
    "id"
  ]
}
Output schema
{
  "type": "object",
  "additionalProperties": true,
  "properties": {
    "id": {
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "dateIso": {
      "type": "string",
      "format": "date-time"
    },
    "transcriptText": {
      "type": "string"
    },
    "cursor": {
      "type": [
        "string",
        "number"
      ]
    },
    "nextCursor": {
      "type": [
        "string",
        "null"
      ],
      "description": "Opaque cursor for the next page, or null on the final page."
    },
    "totalChars": {
      "type": "number"
    },
    "truncated": {
      "type": "boolean"
    },
    "metadata": {
      "type": "object",
      "description": "Scalar provenance. transcriptCoverage is 'partial' while nextCursor is non-null and 'complete' on the final page of a walk that started at the beginning; revision fields identify the transcript version.",
      "additionalProperties": {
        "type": [
          "string",
          "number",
          "boolean",
          "null"
        ]
      }
    },
    "segments": {
      "type": "array",
      "description": "Page segments with stable id, timing, text, characterRange, partial flag and the canonical speaker object.",
      "items": {
        "type": "object",
        "properties": {
          "speaker": {
            "type": "object",
            "description": "Canonical speaker. Identity precedence: manual user tag in Meetly (attribution manual_tag, nameVerified true) > self or other verified Meetly mapping (role self) > anonymous cluster (localId only) > unknown. Names generated by get_summary are secondary and are not used as transcript identities. localId is stable within one meeting. displayName is set only from identities Meetly knows; nameVerified is true only for names the user assigned or confirmed in Meetly (manual tag, chosen contact) or the owner's own profile name. role self is the account owner by voice match or user correction. nameSource and confidence for each localId are in speakerResolution.speakers.",
            "additionalProperties": false,
            "properties": {
              "localId": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "displayName": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "role": {
                "enum": [
                  "self",
                  "participant",
                  "anonymous",
                  "unknown"
                ]
              },
              "attribution": {
                "enum": [
                  "manual_tag",
                  "voice_match",
                  "user_corrected",
                  "calendar_match",
                  "anonymous_cluster",
                  "unverified"
                ]
              },
              "nameVerified": {
                "type": "boolean"
              }
            },
            "required": [
              "localId",
              "displayName",
              "role",
              "attribution",
              "nameVerified"
            ]
          }
        }
      }
    },
    "speakerResolution": {
      "type": "object",
      "description": "Whole-meeting speaker identity, identical on every page of one revision. status: complete (every segment self or user-named), partial (some identified), unknown (none identified), processing (native speaker processing pending). Text is returned regardless of attribution status.",
      "additionalProperties": true,
      "properties": {
        "status": {
          "enum": [
            "complete",
            "partial",
            "unknown",
            "processing"
          ]
        },
        "speakerRevision": {
          "type": "number"
        },
        "namesRevision": {
          "type": [
            "number",
            "null"
          ]
        },
        "namesSource": {
          "enum": [
            "canonical",
            "native_sidecar",
            "none",
            "withheld",
            "unavailable"
          ]
        },
        "nativeSpeakerStatus": {
          "type": "string"
        },
        "segmentsTotal": {
          "type": "number"
        },
        "segmentsNamed": {
          "type": "number"
        },
        "segmentsSelf": {
          "type": "number"
        },
        "segmentsAnonymous": {
          "type": "number"
        },
        "segmentsUnknown": {
          "type": "number"
        },
        "speakers": {
          "type": "array",
          "items": {
            "type": "object",
            "description": "Canonical speaker. Identity precedence: manual user tag in Meetly (attribution manual_tag, nameVerified true) > self or other verified Meetly mapping (role self) > anonymous cluster (localId only) > unknown. Names generated by get_summary are secondary and are not used as transcript identities. localId is stable within one meeting. displayName is set only from identities Meetly knows; nameVerified is true only for names the user assigned or confirmed in Meetly (manual tag, chosen contact) or the owner's own profile name. role self is the account owner by voice match or user correction.",
            "additionalProperties": true,
            "properties": {
              "localId": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "displayName": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "role": {
                "enum": [
                  "self",
                  "participant",
                  "anonymous",
                  "unknown"
                ]
              },
              "attribution": {
                "enum": [
                  "manual_tag",
                  "voice_match",
                  "user_corrected",
                  "calendar_match",
                  "anonymous_cluster",
                  "unverified"
                ]
              },
              "nameSource": {
                "enum": [
                  "user_tag",
                  "user_contact",
                  "owner_profile",
                  "calendar_auto",
                  "unverified_label",
                  null
                ]
              },
              "nameVerified": {
                "type": "boolean"
              },
              "confidence": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "segments": {
                "type": "number"
              }
            },
            "required": [
              "localId",
              "displayName",
              "role",
              "attribution",
              "nameSource",
              "nameVerified",
              "confidence"
            ]
          }
        }
      },
      "required": [
        "status",
        "speakerRevision",
        "segmentsTotal"
      ]
    },
    "openUrl": {
      "type": "string",
      "format": "uri",
      "description": "Optional user-facing HTTPS link for this meeting (https://www.getmeetly.ai/open/meeting/<uuid>). Opens the exact meeting where the installed Meetly app supports meeting links, otherwise a Meetly page with Open in Meetly and App Store actions. The meeting is identified by its title and meetingReference (MTLY-N)."
    },
    "sourceUrl": {
      "type": "string",
      "format": "uri",
      "description": "MCP evidence resource for citation provenance (https://mcp.getmeetly.ai/mcp/sources/meetings/<uuid>). Not a meeting-opening link and not a substitute for openUrl."
    },
    "appDeepLink": {
      "type": "string",
      "description": "Native link (meetly://meeting/<uuid>) for native clients that hand off to the app directly; openUrl is the cross-platform link."
    }
  },
  "required": [
    "id",
    "title",
    "dateIso",
    "transcriptText",
    "cursor",
    "nextCursor",
    "totalChars",
    "truncated"
  ]
}
Full tool definition and annotations
{
  "name": "get_transcript",
  "title": "Read a Meetly transcript page",
  "description": "Read one bounded page of a meeting transcript by meeting id (from list_meetings or search). Pages are chained with the returned nextCursor for the same meeting; a null nextCursor marks the final page. Each segment has speaker {localId, displayName, role self|participant|anonymous|unknown, attribution, nameVerified}; speakerResolution.speakers adds nameSource and confidence per localId, and speakerResolution.status is complete, partial, unknown or processing (partial resolution still returns all text). Speaker identity comes from, in order: a manual tag in Meetly, a verified self or user mapping, an anonymous cluster, then unknown; get_summary names are not used for transcript identities. Also returns openUrl, appDeepLink and sourceUrl. Error TRANSCRIPT_REVISION_CHANGED indicates the transcript changed since the cursor was issued; RATE_LIMITED includes retryAfterMs.",
  "annotations": {
    "readOnlyHint": true,
    "destructiveHint": false,
    "openWorldHint": false,
    "idempotentHint": true,
    "title": "Read a Meetly transcript page"
  },
  "securitySchemes": [
    {
      "type": "oauth2",
      "scopes": [
        "meetings:read"
      ]
    }
  ],
  "_meta": {
    "securitySchemes": [
      {
        "type": "oauth2",
        "scopes": [
          "meetings:read"
        ]
      }
    ],
    "openai/toolInvocation/invoking": "Reading transcript…",
    "openai/toolInvocation/invoked": "Transcript page ready"
  },
  "inputSchema": {
    "type": "object",
    "additionalProperties": false,
    "properties": {
      "id": {
        "type": "string",
        "description": "Meeting UUID, exact MTLY-N reference, or legacy MTLY-platform-UUIDprefix code."
      },
      "cursor": {
        "type": [
          "string",
          "number"
        ],
        "description": "Omit or pass 0 for the first page. Later pages take the previous nextCursor string unchanged, for the same meeting; character offsets, page numbers, timestamps and edited cursors are rejected. nextCursor is null on the final page. A cursor is bound to one transcript revision and one set of speaker names; if either changes, the call fails with TRANSCRIPT_REVISION_CHANGED and the meeting is read again from the first page."
      },
      "maxChars": {
        "type": "number",
        "minimum": 1,
        "maximum": 20000,
        "description": "Characters to return per page; defaults to 12,000 and is capped at 20,000. A page may hold fewer characters so its serialized response stays within the 64 KiB limit."
      },
      "segments": {
        "type": "boolean",
        "description": "Accepted for compatibility; ignored. Every page includes its segments with timing and canonical speaker objects, so page size is measured on the serialized response (text plus segments)."
      },
      "require_speakers_complete": {
        "type": "boolean",
        "default": false,
        "description": "When true, the call succeeds only if every segment is self or user-named. Default false returns the transcript with partial or anonymous attribution preserved."
      }
    },
    "required": [
      "id"
    ]
  },
  "outputSchema": {
    "type": "object",
    "additionalProperties": true,
    "properties": {
      "id": {
        "type": "string"
      },
      "title": {
        "type": "string"
      },
      "dateIso": {
        "type": "string",
        "format": "date-time"
      },
      "transcriptText": {
        "type": "string"
      },
      "cursor": {
        "type": [
          "string",
          "number"
        ]
      },
      "nextCursor": {
        "type": [
          "string",
          "null"
        ],
        "description": "Opaque cursor for the next page, or null on the final page."
      },
      "totalChars": {
        "type": "number"
      },
      "truncated": {
        "type": "boolean"
      },
      "metadata": {
        "type": "object",
        "description": "Scalar provenance. transcriptCoverage is 'partial' while nextCursor is non-null and 'complete' on the final page of a walk that started at the beginning; revision fields identify the transcript version.",
        "additionalProperties": {
          "type": [
            "string",
            "number",
            "boolean",
            "null"
          ]
        }
      },
      "segments": {
        "type": "array",
        "description": "Page segments with stable id, timing, text, characterRange, partial flag and the canonical speaker object.",
        "items": {
          "type": "object",
          "properties": {
            "speaker": {
              "type": "object",
              "description": "Canonical speaker. Identity precedence: manual user tag in Meetly (attribution manual_tag, nameVerified true) > self or other verified Meetly mapping (role self) > anonymous cluster (localId only) > unknown. Names generated by get_summary are secondary and are not used as transcript identities. localId is stable within one meeting. displayName is set only from identities Meetly knows; nameVerified is true only for names the user assigned or confirmed in Meetly (manual tag, chosen contact) or the owner's own profile name. role self is the account owner by voice match or user correction. nameSource and confidence for each localId are in speakerResolution.speakers.",
              "additionalProperties": false,
              "properties": {
                "localId": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "displayName": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "role": {
                  "enum": [
                    "self",
                    "participant",
                    "anonymous",
                    "unknown"
                  ]
                },
                "attribution": {
                  "enum": [
                    "manual_tag",
                    "voice_match",
                    "user_corrected",
                    "calendar_match",
                    "anonymous_cluster",
                    "unverified"
                  ]
                },
                "nameVerified": {
                  "type": "boolean"
                }
              },
              "required": [
                "localId",
                "displayName",
                "role",
                "attribution",
                "nameVerified"
              ]
            }
          }
        }
      },
      "speakerResolution": {
        "type": "object",
        "description": "Whole-meeting speaker identity, identical on every page of one revision. status: complete (every segment self or user-named), partial (some identified), unknown (none identified), processing (native speaker processing pending). Text is returned regardless of attribution status.",
        "additionalProperties": true,
        "properties": {
          "status": {
            "enum": [
              "complete",
              "partial",
              "unknown",
              "processing"
            ]
          },
          "speakerRevision": {
            "type": "number"
          },
          "namesRevision": {
            "type": [
              "number",
              "null"
            ]
          },
          "namesSource": {
            "enum": [
              "canonical",
              "native_sidecar",
              "none",
              "withheld",
              "unavailable"
            ]
          },
          "nativeSpeakerStatus": {
            "type": "string"
          },
          "segmentsTotal": {
            "type": "number"
          },
          "segmentsNamed": {
            "type": "number"
          },
          "segmentsSelf": {
            "type": "number"
          },
          "segmentsAnonymous": {
            "type": "number"
          },
          "segmentsUnknown": {
            "type": "number"
          },
          "speakers": {
            "type": "array",
            "items": {
              "type": "object",
              "description": "Canonical speaker. Identity precedence: manual user tag in Meetly (attribution manual_tag, nameVerified true) > self or other verified Meetly mapping (role self) > anonymous cluster (localId only) > unknown. Names generated by get_summary are secondary and are not used as transcript identities. localId is stable within one meeting. displayName is set only from identities Meetly knows; nameVerified is true only for names the user assigned or confirmed in Meetly (manual tag, chosen contact) or the owner's own profile name. role self is the account owner by voice match or user correction.",
              "additionalProperties": true,
              "properties": {
                "localId": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "displayName": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "role": {
                  "enum": [
                    "self",
                    "participant",
                    "anonymous",
                    "unknown"
                  ]
                },
                "attribution": {
                  "enum": [
                    "manual_tag",
                    "voice_match",
                    "user_corrected",
                    "calendar_match",
                    "anonymous_cluster",
                    "unverified"
                  ]
                },
                "nameSource": {
                  "enum": [
                    "user_tag",
                    "user_contact",
                    "owner_profile",
                    "calendar_auto",
                    "unverified_label",
                    null
                  ]
                },
                "nameVerified": {
                  "type": "boolean"
                },
                "confidence": {
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "segments": {
                  "type": "number"
                }
              },
              "required": [
                "localId",
                "displayName",
                "role",
                "attribution",
                "nameSource",
                "nameVerified",
                "confidence"
              ]
            }
          }
        },
        "required": [
          "status",
          "speakerRevision",
          "segmentsTotal"
        ]
      },
      "openUrl": {
        "type": "string",
        "format": "uri",
        "description": "Optional user-facing HTTPS link for this meeting (https://www.getmeetly.ai/open/meeting/<uuid>). Opens the exact meeting where the installed Meetly app supports meeting links, otherwise a Meetly page with Open in Meetly and App Store actions. The meeting is identified by its title and meetingReference (MTLY-N)."
      },
      "sourceUrl": {
        "type": "string",
        "format": "uri",
        "description": "MCP evidence resource for citation provenance (https://mcp.getmeetly.ai/mcp/sources/meetings/<uuid>). Not a meeting-opening link and not a substitute for openUrl."
      },
      "appDeepLink": {
        "type": "string",
        "description": "Native link (meetly://meeting/<uuid>) for native clients that hand off to the app directly; openUrl is the cross-platform link."
      }
    },
    "required": [
      "id",
      "title",
      "dateIso",
      "transcriptText",
      "cursor",
      "nextCursor",
      "totalChars",
      "truncated"
    ]
  }
}

Server 0.17.0 · Source commit 6cc62bc5b29fb3bf09648dc755c8f5a26ea54d18

← All tools