AI TeamsMaestro (Preview)
AI TeamsMaestro records, transcribes, and summarizes your meetings across Microsoft Teams, Google Meet, and Zoom. Two triggers are available: one fires when a transcript finishes processing, the other when the summary and action items are ready. Each delivery includes the meeting details, attendees, and the summary or transcript, so you can route them into Teams, Planner, SharePoint, Outlook, or anywhere else in your flow.
This connector is available in the following products and regions:
| Service | Class | Regions |
|---|---|---|
| Copilot Studio | Premium | All Power Automate regions except the following: - US Government (GCC) - US Government (GCC High) - China Cloud operated by 21Vianet - US Department of Defense (DoD) |
| Logic Apps | Standard | All Logic Apps regions except the following: - Azure Government regions - Azure China regions - US Department of Defense (DoD) |
| Power Apps | Premium | All Power Apps regions except the following: - US Government (GCC) - US Government (GCC High) - China Cloud operated by 21Vianet - US Department of Defense (DoD) |
| Power Automate | Premium | All Power Automate regions except the following: - US Government (GCC) - US Government (GCC High) - China Cloud operated by 21Vianet - US Department of Defense (DoD) |
| Contact | |
|---|---|
| Name | Maestro Labs Support |
| URL | https://maestrolabs.com |
| support@maestrolabs.com |
| Connector Metadata | |
|---|---|
| Publisher | MailMaestro |
| Website | https://maestrolabs.com |
| Privacy policy | https://maestrolabs.com/privacy |
| Categories | Productivity;Collaboration |
AI TeamsMaestro
AI TeamsMaestro joins your meetings, transcribes them, and writes a structured summary with action items. This connector starts a flow the moment either one is ready, so meeting notes reach the tools your team already works in without anyone copying them across by hand.
Publisher: Maestro Labs
Prerequisites
- An AI TeamsMaestro account on a plan that includes outbound meeting events. The connection is made against your own account, and the flow sees the meetings that account records.
- Permission to create flows in your environment. Custom connectors are a premium feature of Power Platform, so each user of a flow built on this connector needs a licence that covers premium connectors.
Supported Operations
When a meeting is transcribed
Fires as soon as the transcript is ready. Carries the meeting details, who attended, and the full transcript, both as one block of text and split into individual utterances.
When a meeting is summarized
Fires once the summary is written. Carries the same meeting details plus the summary text and any action items found, each with the person it was assigned to.
Obtaining Credentials
Sign in with the Microsoft account you use for AI TeamsMaestro. Creating the connection opens an AI TeamsMaestro sign-in page, and you are asked to approve the connection once. There is no API key to copy and no password to store — access can be withdrawn from AI TeamsMaestro at any time, which stops delivery immediately.
Your account has to already exist. Connecting does not create one: if the Microsoft account you choose has never used AI TeamsMaestro, the sign-in page says so and stops.
Getting Started
Create an automated cloud flow and pick one of the two triggers:
- When a meeting is transcribed — fires as soon as the transcript is ready. Carries the meeting details, who attended, and the full transcript, both as one block of text and split into individual utterances.
- When a meeting is summarized — fires once the summary is written. Carries the same meeting details plus the summary text and any action items found, each with the person it was assigned to.
Both fire once per meeting. A meeting that produces too little speech is transcribed but never summarized, so a flow that must run for every meeting should use the transcribed trigger.
The two triggers report the same Meeting ID, so a flow can match one meeting's transcript to its summary.
A worked example
To post every summary into a channel:
- Add When a meeting is summarized as the trigger.
- Add the action that posts a message.
- In the message, pick Title, Summary text and Ended at from the dynamic content list.
- Save the flow.
Running a flow for only some meetings
Tick Apply filters to selected meetings on the trigger and the filter boxes appear:
- Meeting title contains, Meeting title starts with, Meeting title is exactly
- Meeting host contains, Meeting host not contains
- Meeting participants contains, Meeting participants not contains
Each box takes several values and matches if any one of them does. Title values are text and ignore capitalisation. Host and participant values are whole email addresses.
Combine filters with decides whether a meeting has to match every box you filled in, or just one.
Your own address cannot be used in the participant boxes — you are in every meeting the flow can fire for.
Testing without waiting for a meeting
Two actions let you run a flow straight away:
- Save the flow you want to test. Saving is what starts the subscription.
- Create a second flow: Manually trigger a flow → Send a sample meeting event, and pick your subscription from the dropdown.
- Run it. The first flow runs with realistic sample meeting data.
List meeting event subscriptions shows what this connection is subscribed to, if you need to check.
This is a real delivery, so everything after the trigger really happens — a message is genuinely posted, a task genuinely created. Point it at yourself before pointing it at a team channel.
Known Issues and Limitations
- Meeting events are only sent for meetings AI TeamsMaestro recorded. Meetings held without it produce nothing.
- Segments is empty when a transcript came from the meeting's own captions rather than from a recording — those carry no per-utterance detail. Transcript text always holds the conversation, so read that when segments is empty.
- Organizer is empty for a meeting where nobody was recorded as the host, which happens when AI TeamsMaestro joined a link it was not invited to.
- Speaker labels in a transcript are not identities. They need not match any attendee name, and they carry no email address.
- Only some field and comparison pairings are allowed. A title can use contains, starts with or is exactly; a host or participant can use contains or not contains. The filter boxes only offer the valid pairs.
- There is no way to preview a trigger's output in the designer before it has run. Use Send a sample meeting event instead.
Frequently Asked Questions
Will an old meeting trigger my flow?
No. Only meetings that finish after the flow is turned on are delivered.
Can two flows listen to the same event?
Yes. Each flow holds its own subscription and receives its own copy.
What happens when I delete or turn off a flow?
The subscription behind it is removed and delivery stops. Turning the flow back on creates a new one.
Why is the summary formatted oddly?
Summary text is Markdown. Use an action that renders Markdown, or convert it, if the destination expects plain text or HTML.
Deployment Instructions
Use these instructions to deploy this connector as a custom connector in Microsoft Power Automate and Power Apps.
Triggers
| When a meeting is summarized |
Triggers once for each meeting TeamsMaestro finishes summarizing, with the summary text and any action items it found. |
| When a meeting is transcribed |
Triggers once for each meeting TeamsMaestro finishes transcribing, with the full transcript. Fires earlier than the summary trigger, and fires even for meetings that are never summarized. |
When a meeting is summarized
Triggers once for each meeting TeamsMaestro finishes summarizing, with the summary text and any action items it found.
Parameters
| Name | Key | Required | Type | Description |
|---|---|---|---|---|
|
body
|
body | True | dynamic |
Returns
Delivered once for each meeting TeamsMaestro summarizes.
When a meeting is transcribed
Triggers once for each meeting TeamsMaestro finishes transcribing, with the full transcript. Fires earlier than the summary trigger, and fires even for meetings that are never summarized.
Parameters
| Name | Key | Required | Type | Description |
|---|---|---|---|---|
|
body
|
body | True | dynamic |
Returns
Delivered once for each meeting TeamsMaestro transcribes.
Definitions
NotificationAccount
The account the meeting belongs to.
| Name | Path | Type | Description |
|---|---|---|---|
|
Account type
|
type | string |
Always 'individual'. |
|
Account email
|
string |
Email address of the account. |
|
|
Account name
|
name | string |
Display name of the account. |
|
Account organization
|
organization | string |
Organization the account belongs to. Always empty today. |
Person
Someone who took part in the meeting.
| Name | Path | Type | Description |
|---|---|---|---|
|
Name
|
name | string |
Their display name, falling back to their email address. |
|
Email
|
string |
Their email address. |
|
|
Is external
|
is_external | boolean |
Whether they are outside the connected account's organization. |
|
Company
|
company | string |
Domain of their email address, or empty if they have none. |
Meeting
The meeting this event is about. Identical for both triggers, so one meeting's transcript and summary can be matched on Meeting ID.
| Name | Path | Type | Description |
|---|---|---|---|
|
Meeting ID
|
id | string |
Identifier of the meeting. |
|
Title
|
title | string |
Title of the meeting. |
|
Platform
|
platform | string |
Where the meeting was held, such as teams, google_meet or zoom. |
|
Meeting URL
|
url | string |
Join link for the meeting. |
|
Started at
|
started_at | date-time |
When recording started, in UTC. |
|
Ended at
|
ended_at | date-time |
When recording ended, in UTC. |
|
Duration (seconds)
|
duration_seconds | integer |
How long the recording ran, in seconds. |
|
organizer
|
organizer | Person |
Someone who took part in the meeting. |
|
Attendees
|
attendees | array of Person |
Everyone in the meeting who had an email address. |
Summary
The summary TeamsMaestro produced.
| Name | Path | Type | Description |
|---|---|---|---|
|
Template
|
template | string |
Which summary template produced this, such as basic or custom. |
|
Template ID
|
template_id | string |
Identifier of the custom template behind the summary. Empty for built-in templates. |
|
Summary text
|
text | string |
The summary itself, as Markdown. |
Assignee
Who an action item belongs to.
| Name | Path | Type | Description |
|---|---|---|---|
|
Assignee name
|
name | string |
Their name. |
|
Assignee email
|
string |
Their email address, empty when the meeting matched no participant. |
ActionItem
Something the meeting agreed someone would do.
| Name | Path | Type | Description |
|---|---|---|---|
|
Action item ID
|
id | string |
Identifier of the action item. |
|
Title
|
title | string |
What is to be done. |
|
Status
|
status | string |
Whether it is still outstanding, such as todo or done. |
|
assignee
|
assignee | Assignee |
Who an action item belongs to. |
TranscriptSegment
One utterance. Speaker, language and timings are each absent when the recording did not capture them.
| Name | Path | Type | Description |
|---|---|---|---|
|
Text
|
text | string |
What was said. |
|
Speaker
|
speaker | string |
Who said it, when the recording identified them. |
|
Language
|
language | string |
Language this utterance was spoken in. |
|
Start (seconds)
|
start | float |
Seconds from the start of the recording. |
|
End (seconds)
|
end | float |
Seconds from the start of the recording. |
Transcript
What was said in the meeting.
| Name | Path | Type | Description |
|---|---|---|---|
|
Language
|
language | string |
Main language of the meeting. |
|
Speech duration (seconds)
|
duration_seconds | integer |
Time spent speaking, excluding pauses. Normally shorter than the meeting duration. |
|
Word count
|
words_count | integer |
How many words were spoken. |
|
Speakers
|
speakers | array of string |
Speaker labels the recording distinguished. Not the same as attendees, and they carry no email address. |
|
Transcript text
|
text | string |
The whole transcript as one block of text, one timestamped line per utterance. Always present when anything was said. |
|
Segments
|
segments | array of TranscriptSegment |
The transcript split into utterances. Empty when the transcript came from meeting captions, which carry no per-utterance detail; read Transcript text in that case. |
MeetingSummarizedData
| Name | Path | Type | Description |
|---|---|---|---|
|
meeting
|
meeting | Meeting |
The meeting this event is about. Identical for both triggers, so one meeting's transcript and summary can be matched on Meeting ID. |
|
summary
|
summary | Summary |
The summary TeamsMaestro produced. |
|
Action items
|
action_items | array of ActionItem |
Action items found in the meeting. |
MeetingTranscribedData
| Name | Path | Type | Description |
|---|---|---|---|
|
meeting
|
meeting | Meeting |
The meeting this event is about. Identical for both triggers, so one meeting's transcript and summary can be matched on Meeting ID. |
|
transcript
|
transcript | Transcript |
What was said in the meeting. |
MeetingSummarizedNotification
Delivered once for each meeting TeamsMaestro summarizes.
| Name | Path | Type | Description |
|---|---|---|---|
|
Event ID
|
id | string |
Identifier of this delivery. Stable across retries, so it can be used to discard duplicates. |
|
Event
|
event | string |
Always meeting.summarized. |
|
Version
|
version | integer |
Contract version of this payload. |
|
Sent at
|
sent_at | date-time |
When this delivery was sent, in UTC. |
|
Webhook ID
|
webhook_id | string |
Identifier of the subscription that produced this delivery. |
|
account
|
account | NotificationAccount |
The account the meeting belongs to. |
|
data
|
data | MeetingSummarizedData |
MeetingTranscribedNotification
Delivered once for each meeting TeamsMaestro transcribes.
| Name | Path | Type | Description |
|---|---|---|---|
|
Event ID
|
id | string |
Identifier of this delivery. Stable across retries, so it can be used to discard duplicates. |
|
Event
|
event | string |
Always meeting.transcribed. |
|
Version
|
version | integer |
Contract version of this payload. |
|
Sent at
|
sent_at | date-time |
When this delivery was sent, in UTC. |
|
Webhook ID
|
webhook_id | string |
Identifier of the subscription that produced this delivery. |
|
account
|
account | NotificationAccount |
The account the meeting belongs to. |
|
data
|
data | MeetingTranscribedData |