Outlook AI for meetings, calendar, and email
Speak AI plugs into Outlook for one-click meeting transcription, action-item extraction, and email-thread analysis. Add the bot to a calendar invite. Connect Microsoft 365 once. Or wire up Microsoft Graph directly. Action items push to your CRM, not your inbox.
What you can do
Once Speak is wired into your Microsoft 365 stack, every meeting on your Outlook calendar gets transcribed and analyzed automatically. Sales teams log every Outlook-scheduled call into HubSpot or Salesforce. Researchers turn customer interviews into structured writeups. Operations teams push extracted action items into Outlook Tasks and Microsoft Teams channels.
Auto-join every Outlook meeting
Two paths. Add [email protected] as a guest on a single Outlook calendar event for the bot to join that one meeting. Or connect Microsoft 365 to Speak once for ongoing auto-coverage of every event on your calendar. Same bot, same output, no per-meeting setup either way.
Analyze Outlook email threads with Magic Prompt
Pull a full conversation from Outlook Mail through the Microsoft Graph API. Pipe the thread into Speak’s Magic Prompt to extract decisions, sentiment, blockers, owners, deadlines, or any custom rubric. Same prompt library that runs on call transcripts works on email text.
Push action items to Outlook Tasks or your CRM
After every meeting, Speak extracts action items, decisions, and owners. Send them where work happens: Outlook Tasks for personal follow-up, your CRM for deal records, Microsoft Teams channels for team awareness. Your inbox stays clean.
Search every Outlook meeting from Claude or ChatGPT
Speak’s official MCP server exposes 83 tools to AI assistants. Ask Claude to surface every Outlook meeting last quarter where Acme Corp asked about pricing, or pull verbatim quotes from research interviews tagged onboarding.
Set up in 3 steps
The fastest path takes 30 seconds: invite the bot by email. The auto-coverage path takes 2 minutes: connect Microsoft 365 in Speak. Both flow through the same Speak workspace.
Sign up for Speak AI
Create a free account at app.speakai.co. You get a 7-day trial with full access. No credit card needed. Once you are in, go to Settings > API and copy your API key.
Pick your integration path
[email protected] to a meeting (no setup)
Open any Outlook calendar event with a meeting URL (Teams, Zoom, Webex, or Meet) and add [email protected] as an attendee. The bot accepts the invite and joins the meeting automatically. Zero in-app configuration. Works for one-off meetings without committing to calendar OAuth.
In Speak’s AI Meeting Assistant, click Capture Live Meeting to send the bot to a meeting that is already running, or Schedule Live Meeting to send it to one starting later. Paste the meeting URL and the bot handles the rest.
For ongoing coverage of every meeting on your calendar without per-event invites, connect Microsoft 365 to Speak under Meeting Assistant > Calendar. Speak detects every event automatically and sends the bot. Approve scopes Calendars.Read and OnlineMeetings.Read.All.
For email pipelines, fetch a conversation through Microsoft Graph (/v1.0/me/messages?$filter=conversationId eq '...'), concatenate the message bodies, and POST to Speak as text media. Run any Magic Prompt against the result.
Already have meetings in Speak? Connect Claude Desktop with npx @speakai/mcp-server init, or add the remote MCP server URL to Claude.ai or ChatGPT. Search the entire Outlook meeting library through conversation.
Subscribe to media.analyzed
Speak fires a signed webhook when transcription and AI analysis complete (usually within 60 seconds for a 10-minute call). Register your endpoint via POST /v1/webhook and act on transcripts as they land in your CRM, BI, or alerting system. Push action items to Outlook Tasks via Microsoft Graph in the same handler.
Real workflows, real results
Four production patterns Speak customers ship with Microsoft Outlook. Pick the one that fits your team and copy the recipe.
Auto-join every Outlook calendar meeting
Two paths, same outcome. Easiest: add [email protected] as an attendee on the Outlook event. The bot accepts and joins. Auto-coverage: connect your Microsoft 365 calendar to Speak once and every event with a meeting URL gets the bot without any per-event invite.
# Manual: open the Outlook event with the meeting link.
# Click "Add attendees" and enter:
# [email protected]
# Save the event. The bot accepts the invite and joins the meeting automatically.
# Same email works for Microsoft Teams, Zoom, Webex, and Google Meet events.
# Programmatic (Microsoft Graph) - add the bot as an attendee:
curl -X PATCH "https://graph.microsoft.com/v1.0/me/events/$EVENT_ID"
-H "Authorization: Bearer $GRAPH_TOKEN"
-H "Content-Type: application/json"
-d '{
"attendees": [
{
"emailAddress": { "address": "[email protected]", "name": "Speak AI Notetaker" },
"type": "required"
}
]
}'
# In Speak AI dashboard:
# 1. Go to Meeting Assistant -> Calendar
# 2. Click "Connect Microsoft 365"
# 3. Approve OAuth scopes:
# Calendars.Read
# OnlineMeetings.Read.All
# 4. Speak finds existing future Outlook events immediately
# 5. Bot joins your next scheduled meeting automatically
# Or use Capture Live Meeting / Schedule Live Meeting in the
# Meeting Assistant UI to send the bot to one specific meeting URL.
curl -X POST https://api.speakai.co/v1/meeting-assistant/events/schedule
-H "x-speakai-key: $SPEAK_API_KEY"
-H "Content-Type: application/json"
-d '{
"title": "Acme Corp - Discovery Call",
"meetingURL": "https://teams.microsoft.com/l/meetup-join/...",
"meetingDate": "2026-05-15T16:00:00.000Z",
"meetingLanguage": "en-US",
"folderId": "507f1f77bcf86cd799439011"
}'
// Call this when your CRM creates a meeting in Outlook + Teams.
async function scheduleSpeakBot({ title, meetingURL, scheduledAt, folderId }) {
const r = await fetch(
"https://api.speakai.co/v1/meeting-assistant/events/schedule",
{
method: "POST",
headers: {
"x-speakai-key": process.env.SPEAK_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
title,
meetingURL,
meetingDate: scheduledAt,
meetingLanguage: "en-US",
folderId,
}),
}
);
if (!r.ok) throw new Error(`Speak schedule failed: ${r.status}`);
const { data } = await r.json();
// Persist data.meetingAssistantEventId on the CRM activity record
// so you can pause / resume / remove the assistant later.
return data.meetingAssistantEventId;
}
import os, requests
def schedule_speak_bot(title: str, meeting_url: str, scheduled_at: str, folder_id: str | None = None):
r = requests.post(
"https://api.speakai.co/v1/meeting-assistant/events/schedule",
headers={
"x-speakai-key": os.environ["SPEAK_API_KEY"],
"Content-Type": "application/json",
},
json={
"title": title,
"meetingURL": meeting_url,
"meetingDate": scheduled_at,
"meetingLanguage": "en-US",
"folderId": folder_id,
},
timeout=30,
)
r.raise_for_status()
return r.json()["data"]["meetingAssistantEventId"]
Pause/resume/remove via POST /v1/meeting-assistant/events/{pause|resume|remove} with {meetingAssistantEventId}. Use this when CRM stage transitions revoke or extend bot coverage.
Analyze Outlook email threads with Magic Prompt
Pull the full conversation from Outlook Mail through Microsoft Graph (/v1.0/me/messages with conversationId filter). Concatenate the message bodies, POST to Speak as text media, then run any Magic Prompt to extract decisions, owners, deadlines, sentiment, or your custom rubric.
// 1. Get every message in the conversation from Microsoft Graph.
const graphRes = await fetch(
"https://graph.microsoft.com/v1.0/me/messages?" + new URLSearchParams({
$filter: `conversationId eq '${conversationId}'`,
$select: "subject,from,receivedDateTime,body",
$orderby: "receivedDateTime asc",
}),
{ headers: { Authorization: `Bearer ${process.env.GRAPH_TOKEN}` } }
).then(r => r.json());
// 2. Strip HTML and concatenate
const threadText = graphRes.value.map(m => {
const sender = m.from?.emailAddress?.address || "unknown";
const when = m.receivedDateTime;
const html = m.body?.content || "";
// Strip HTML tags (use a real parser like JSDOM or Cheerio in production)
const plain = html.replace(/<[^>]+>/g, "").replace(/s+/g, " ").trim();
return `From: ${sender}nWhen: ${when}nn${plain}`;
}).join("nn---nn");
// 3. Upload thread as a Speak text media
const upload = await fetch("https://api.speakai.co/v1/media/upload", {
method: "POST",
headers: {
"x-speakai-key": process.env.SPEAK_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
name: graphRes.value[0]?.subject || `Thread ${conversationId}`,
text: threadText,
mediaType: "text",
tags: "outlook,email-thread",
}),
}).then(r => r.json());
const mediaId = upload.data.mediaId;
// 4. Fire a Magic Prompt against the thread
await fetch("https://api.speakai.co/v1/prompt/", {
method: "POST",
headers: {
"x-speakai-key": process.env.SPEAK_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
mediaIds: [mediaId],
prompt: "Extract decisions, owners, and deadlines from this email thread. Return JSON.",
isStream: false,
isIndividualPrompt: true,
}),
});
// Poll /v1/prompt/messages?mediaIds=$mediaId&pageSize=1 until state === "completed"
import os, re, requests
def analyze_outlook_thread(conversation_id: str) -> str:
# 1. Fetch every message in the conversation
graph = requests.get(
"https://graph.microsoft.com/v1.0/me/messages",
params={
"$filter": f"conversationId eq '{conversation_id}'",
"$select": "subject,from,receivedDateTime,body",
"$orderby": "receivedDateTime asc",
},
headers={"Authorization": f"Bearer {os.environ['GRAPH_TOKEN']}"},
timeout=30,
).json()
def strip_html(s: str) -> str:
return re.sub(r"<[^>]+>", "", s or "").strip()
thread_text = "nn---nn".join(
f"From: {m.get('from', {}).get('emailAddress', {}).get('address', 'unknown')}n"
f"When: {m.get('receivedDateTime')}nn"
f"{strip_html(m.get('body', {}).get('content', ''))}"
for m in graph.get("value", [])
)
# 2. Upload to Speak as text media
upload = requests.post(
"https://api.speakai.co/v1/media/upload",
headers={"x-speakai-key": os.environ["SPEAK_API_KEY"]},
json={
"name": graph["value"][0].get("subject") if graph.get("value") else f"Thread {conversation_id}",
"text": thread_text,
"mediaType": "text",
"tags": "outlook,email-thread",
},
timeout=30,
).json()
media_id = upload["data"]["mediaId"]
# 3. Run Magic Prompt
requests.post(
"https://api.speakai.co/v1/prompt/",
headers={"x-speakai-key": os.environ["SPEAK_API_KEY"]},
json={
"mediaIds": [media_id],
"prompt": "Extract decisions, owners, and deadlines from this email thread. Return JSON.",
"isStream": False,
"isIndividualPrompt": True,
},
timeout=15,
)
return media_id
Required Microsoft Graph scopes: Mail.Read (delegated) for personal mailboxes, Mail.Read.Shared for shared mailboxes. Strip HTML server-side with a real parser (JSDOM, Cheerio, BeautifulSoup) before sending to Speak.
Push extracted action items into Outlook Tasks
After every meeting, Speak’s Magic Prompt extracts action items, owners, and deadlines. Forward them into Outlook Tasks (Microsoft To Do) so the right person gets a personal task with due date, not a buried item in a meeting summary email.
import express from "express";
const app = express();
app.use(express.json());
app.post("/speak/outlook-tasks", async (req, res) => {
// Speak posts {eventType, state, mediaId} -- flat (verified 2026-05-07).
const { eventType, state, mediaId } = req.body;
if (eventType !== "media.analyzed" || state !== "processed") return res.sendStatus(204);
res.sendStatus(202);
// 1. Fire a Magic Prompt to extract action items as JSON
const headers = { "x-speakai-key": process.env.SPEAK_API_KEY };
await fetch("https://api.speakai.co/v1/prompt/", {
method: "POST",
headers: { ...headers, "Content-Type": "application/json" },
body: JSON.stringify({
mediaIds: [mediaId],
prompt: 'Extract action items as JSON. Each item: {"text": "...", "owner_email": "...", "due_date": "YYYY-MM-DD"}',
isStream: false,
isIndividualPrompt: true,
}),
});
// 2. Poll for the completed answer (typical 2-3s)
let actionItems = [];
for (let i = 0; i < 20; i++) {
await new Promise(r => setTimeout(r, 1000));
const r = await fetch(
`https://api.speakai.co/v1/prompt/messages?mediaIds=${mediaId}&pageSize=1`,
{ headers }
);
const j = await r.json();
const msg = j?.data?.history?.[0]?.messages?.[0];
if (msg?.state === "completed") {
try { actionItems = JSON.parse(msg.answer); } catch { actionItems = []; }
break;
}
}
// 3. Create one Outlook Task per action item via Microsoft Graph To Do
for (const item of actionItems) {
await fetch(
"https://graph.microsoft.com/v1.0/me/todo/lists/tasks/tasks",
{
method: "POST",
headers: {
Authorization: `Bearer ${process.env.GRAPH_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
title: item.text,
body: {
content: `From Speak meeting: https://app.speakai.co/media/${mediaId}`,
contentType: "text",
},
dueDateTime: item.due_date ? {
dateTime: `${item.due_date}T17:00:00.000`,
timeZone: "UTC",
} : undefined,
}),
}
);
}
});
app.listen(3000);
import asyncio, json, os, time, requests
from fastapi import FastAPI, Request
app = FastAPI()
@app.post("/speak/outlook-tasks")
async def hook(req: Request):
body = await req.json()
if body.get("eventType") != "media.analyzed" or body.get("state") != "processed":
return {"ok": True}
media_id = body["mediaId"]
headers = {"x-speakai-key": os.environ["SPEAK_API_KEY"]}
# 1. Fire a Magic Prompt
requests.post(
"https://api.speakai.co/v1/prompt/",
headers={**headers, "Content-Type": "application/json"},
json={
"mediaIds": [media_id],
"prompt": 'Extract action items as JSON. Each item: {"text": "...", "owner_email": "...", "due_date": "YYYY-MM-DD"}',
"isStream": False,
"isIndividualPrompt": True,
},
timeout=15,
)
# 2. Poll for completion
action_items = []
for _ in range(20):
time.sleep(1)
r = requests.get(
"https://api.speakai.co/v1/prompt/messages",
params={"mediaIds": media_id, "pageSize": 1},
headers=headers, timeout=15,
)
history = r.json().get("data", {}).get("history", [])
msg = history[0]["messages"][0] if history and history[0].get("messages") else None
if msg and msg.get("state") == "completed":
try:
action_items = json.loads(msg.get("answer", "[]"))
except Exception:
action_items = []
break
# 3. Create one Outlook Task per action item
for item in action_items:
requests.post(
"https://graph.microsoft.com/v1.0/me/todo/lists/tasks/tasks",
headers={
"Authorization": f"Bearer {os.environ['GRAPH_TOKEN']}",
"Content-Type": "application/json",
},
json={
"title": item.get("text", ""),
"body": {
"content": f"From Speak meeting: https://app.speakai.co/media/{media_id}",
"contentType": "text",
},
"dueDateTime": ({
"dateTime": f"{item['due_date']}T17:00:00.000",
"timeZone": "UTC",
} if item.get("due_date") else None),
},
timeout=15,
)
return {"ok": True}
Required Microsoft Graph scope: Tasks.ReadWrite (delegated) for personal task lists, or Tasks.ReadWrite.Shared for shared lists. Use /me/todo/lists/{listId}/tasks to target a specific list other than the default.
Query every Outlook meeting from Claude or ChatGPT
Connect Speak’s official MCP server to Claude or ChatGPT and your team queries the entire Outlook meeting library through conversation. Pull verbatim quotes, score discovery completeness, surface objection patterns, all without leaving Claude or ChatGPT.
# Claude Desktop / Claude Code (auto-detects your installation)
npx @speakai/mcp-server init
# Paste your Speak API key when prompted. Setup takes about 2 minutes.
# Claude.ai (web) and ChatGPT MCP connector
# Settings > Integrations > Add MCP Server
# Remote URL: https://api.speakai.co/v1/mcp
# Auth header: x-speakai-key: YOUR_SPEAK_API_KEY
# Verify the connection responds:
curl -s https://api.speakai.co/v1/mcp
-H "x-speakai-key: $SPEAK_API_KEY"
-H "Accept: application/json"
2. Example prompts your team can use today:
- “Show every Outlook meeting last week with a senior decision-maker. Group by deal stage.”
- “Summarize the 3 longest Outlook meetings with Acme Corp from the last 60 days. Pull all action items.”
- “Pull verbatim quotes from Outlook meetings tagged
discoverywhere customers asked about onboarding.” - “Compare discovery completeness across our top 3 SDRs. Use this week’s Outlook calls. Score each on a 0-10 rubric.”
- “Find the Outlook meeting from August 14 where the CTO joined and pull the action items into a Notion-ready writeup.”
Works with Claude.ai, Claude Desktop, Claude Code, and ChatGPT MCP connectors. View MCP server →
Why Speak AI + Microsoft Outlook
Outlook handles your calendar, email, and tasks. Microsoft Copilot covers in-app suggestions for paid Microsoft 365 tiers. Speak handles the deeper analysis layer that lives outside Microsoft: cross-meeting search, custom Magic Prompts, CRM push, multi-source ingest, and shareable embeds.
Multi-source ingest, not just Outlook
Outlook is one of dozens of inputs. The same Speak workspace ingests Zoom, Microsoft Teams, Google Meet, Webex, Twilio, Loom, OneDrive, Dropbox, podcast audio, and direct file uploads. One library, every conversation across every Microsoft and non-Microsoft tool.
Custom Magic Prompts, not fixed templates
Microsoft Copilot ships fixed summary templates and only on Microsoft 365 Business Standard and above. Speak’s Magic Prompt runs your prompts on every meeting and email thread: discovery checklist scoring, competitor mention extraction, MEDDIC-stage detection, whatever your team needs. Save prompts once, run them on every recording forever.
MCP-native for Claude and ChatGPT
The official @speakai/mcp-server exposes 83 tools to AI assistants. Your team queries the Outlook meeting library in plain English from Claude Desktop or ChatGPT, without exporting transcripts to other tools.
Shareable embeds, not just internal dashboards
Every Speak transcript and analysis can be shared as a public or private embed. Send a meeting summary to a customer’s stakeholder without granting them dashboard access or exporting a PDF.
Teams trust Speak AI for their most important calls
4.9 on G2
“Speak AI has been instrumental in transforming how we handle qualitative data. The transcription accuracy is impressive, and the NLP insights save us hours of manual analysis.”
Research Director | Consulting Firm
“We switched from Otter.ai and the depth of analysis is on another level. Sentiment scoring, keyword extraction, and theme detection all happen automatically.”
Product Manager | SaaS Company
“The ability to search across all our customer calls and pull specific moments is a game-changer for our support team.”
Head of CX | Enterprise Tech
How to use Speak AI with Microsoft Outlook for meeting and email AI
Outlook is the connective tissue of every Microsoft 365 organization. Sales reps live in their Outlook calendar. Account managers live in their Outlook inbox. Operations teams live in Outlook Tasks. Every customer conversation passes through Outlook in some form, and every one of those conversations is a potential source of business intelligence. Speak AI is what turns those conversations into structured, searchable, shareable data without forcing a tool change.
Where Speak fits in the Outlook workflow
Speak runs after the meeting or email lands. Outlook handles the calendar invite, the meeting URL, the inbox, and the task list. Microsoft Copilot covers in-app suggestions for paid Microsoft 365 tiers. Speak handles transcription in 100+ languages, AI analysis with custom prompts, search across the full library, and downstream automation into your CRM and BI tools. The handoff happens via the calendar bot (email invite or OAuth), Microsoft Graph for email-thread retrieval, or Microsoft Graph To Do for action-item push.
Speak vs Microsoft Copilot in Outlook
Microsoft Copilot in Outlook covers in-app summaries, draft suggestions, and meeting recaps. It is bundled with Microsoft 365 Business Standard, Business Premium, and Enterprise tiers. It is well-suited if you only need a Microsoft-internal summary delivered to your inbox.
Speak is a different product. Speak ingests Outlook calendar meetings alongside Zoom, Teams, Meet, Webex, file uploads, podcasts, and embed recorder submissions, then runs custom analysis (your Magic Prompts, your tags, your team’s vocabulary), exposes everything via MCP for Claude and ChatGPT, and ships shareable embeds. Most teams using both let Copilot handle in-Outlook summaries and use Speak for the deeper post-meeting analysis layer plus cross-platform search.
Authentication and Microsoft Graph scopes
The calendar bot path requires read-only Microsoft Graph Calendar scopes (Calendars.Read, OnlineMeetings.Read.All). Speak does not request meeting management or recording management scopes. The email-thread analysis path requires Mail.Read (delegated) for personal mailboxes or Mail.Read.Shared for shared mailboxes. The action-items-to-tasks path requires Tasks.ReadWrite. Microsoft 365 admins can pre-approve Speak via the Entra ID admin consent flow for org-wide rollouts.
How does Outlook AI work?
Three production paths. Email invite: add [email protected] as an attendee on a calendar event; bot joins the meeting. OAuth auto-coverage: connect Microsoft 365 once; bot joins every meeting on your calendar going forward. API per-meeting schedule: POST a meeting URL to Speak’s /v1/meeting-assistant/events/schedule from your CRM or scheduling tool. All three deliver the same output: full transcript, AI summary, sentiment, action items, plus structured CRM push via webhook.
Can I use Outlook AI tools to summarize emails?
Yes. Speak processes Outlook email threads via Microsoft Graph (/v1.0/me/messages?$filter=conversationId eq '...'). Concatenate the message bodies, POST to Speak as text media, and run any Magic Prompt against the result. Same prompt library that runs on call transcripts works on email text. Common patterns: extract decisions, surface blockers, score sentiment per sender, identify owners and deadlines.
Does Outlook AI work with Microsoft Teams?
Yes. Speak covers the full Microsoft stack. Calendar sync through Outlook triggers the bot on Teams meetings just as it does on any other calendar event. Transcripts, summaries, and CRM pushes work identically whether the meeting runs in Teams, Zoom, Google Meet, or Webex. See Microsoft Teams AI for the Teams-specific recipes.
Use cases by role
Sales and RevOps teams use Speak with Outlook to auto-log every calendar-scheduled call into HubSpot, Salesforce, or Zoho. Magic Prompts score discovery completeness, surface objections, and extract competitor mentions. Action items push directly to the rep’s Outlook Tasks. See Speak AI for sales teams.
Customer support and CX teams capture every Teams or Zoom call scheduled through Outlook and route by sentiment. Cancellation language fires a manager alert. Multilingual queues work without per-language setup since Speak supports 100+ languages with auto-detection.
Operations and EA teams turn Outlook into the source of truth for action items. Every meeting Speak transcribes generates structured to-do items routed to the right owner via Microsoft Graph To Do, with due dates pulled from the transcript. See Speak AI for consulting firms.
Customer research teams bring Outlook-scheduled interview calls into the same workspace as their Zoom and embed recorder sessions. Code themes across the entire library, ask Claude for verbatim quotes, build research deliverables in hours instead of weeks. See Speak AI for qualitative researchers.
Frequently asked questions
What is the easiest way to get the Speak bot into an Outlook meeting?
Add [email protected] as an attendee on the Outlook calendar event. The bot accepts the invite and joins the meeting automatically. No in-app configuration, no OAuth, no API call. The same email works for Microsoft Teams, Zoom, Webex, and Google Meet events too. For ongoing auto-coverage of every meeting on your calendar, connect Microsoft 365 to Speak under Meeting Assistant.
What is AI for Outlook?
AI for Outlook means Speak AI connects to your Microsoft 365 calendar and Outlook mail and produces transcripts, summaries, action items, and sentiment analysis automatically. You get structured CRM-ready output delivered in minutes after every meeting ends, plus the ability to run any custom Magic Prompt against email threads and meeting transcripts.
What are the best AI tools for Outlook?
Speak AI is purpose-built for the Microsoft 365 ecosystem. It covers Outlook calendar sync, Microsoft Teams meetings via the same calendar trigger, and email-thread analysis through Microsoft Graph. Unlike Microsoft Copilot, Speak ingests Outlook alongside Zoom, Meet, Webex, and Twilio in the same workspace, and exposes the analysis layer via MCP for Claude and ChatGPT. Rated 4.9 on G2.
Can I use Outlook AI tools to summarize emails?
Yes. Pull a conversation through Microsoft Graph (/v1.0/me/messages?$filter=conversationId eq '...'), concatenate the message bodies, and POST to Speak as text media (mediaType: text). Run any Magic Prompt against the result to extract decisions, sentiment, owners, deadlines, blockers, or your custom rubric.
How do I connect AI to my Outlook calendar?
Two paths. Easy: invite [email protected] as an attendee on a single event. Auto-coverage: open Speak, go to Meeting Assistant, click Connect Microsoft 365, and approve the OAuth scopes (Calendars.Read, OnlineMeetings.Read.All). Speak finds existing future events immediately and the bot joins your next meeting automatically.
Does Outlook AI work with Microsoft Teams?
Yes. Calendar sync through Outlook triggers the bot on Teams meetings just as it does on any other calendar event. Transcripts, summaries, and CRM pushes work identically whether the meeting runs in Teams, Zoom, Google Meet, or Webex. See the dedicated Microsoft Teams AI page for Teams-specific webhook recipes and channel posting patterns.
Start using Speak AI with Outlook today
83 analysis tools. 100+ languages. Calendar bot, Microsoft Graph email and tasks, MCP-native for Claude and ChatGPT. Same workspace as your Zoom, Teams, Meet, and Webex calls.
Try Speak AI free
Create your account, invite the bot to your next Outlook meeting (or connect Microsoft 365), and the transcript lands in your Speak workspace automatically. Full access for 7 days. No credit card required.
Book a demo
For sales teams evaluating Speak across an entire org, book a demo with Speak’s team. We will walk through the calendar bot, Microsoft Graph integration, and CRM push live with your Outlook account.




