MCP App Store
Productivity
Sally AI icon

Sally AI

by Aliru GmbH

Overview

Sally records, transcribes and summarizes your meetings so nothing ever gets lost. With this connector, ask ChatGPT to dig through your own meetings: "What did we decide about pricing in the last marketing call?", "List my open follow-ups from yesterday's sync with Acme" or "Show me every meeting where the supplier change came up". Sally returns precise answers grounded in your actual conversations, with summaries, decisions, tasks and full transcripts on demand. Works across Google Meet, Microsoft Teams and Zoom.

Tools

get_recordings

ChatGPT
Lists recordings the authenticated user can see — i.e. recordings they own, recordings of appointments where they are the technical owner, and recordings in RecordingFolders shared with them (directly or via team membership). User and organization are derived from the Personal Access Token; no parameters are required. For each recording the response returns — if available — the appointment ID and its time window as well as all available summaries with their language codes. Paginated via page/pageSize (max 100), sorted by creation date descending.

get_recordings

ChatGPT
Lists recordings the authenticated user can see — i.e. recordings they own, recordings of appointments where they are the technical owner, and recordings in RecordingFolders shared with them (directly or via team membership). User and organization are derived from the Personal Access Token; no parameters are required. For each recording the response returns — if available — the appointment ID and its time window as well as all available summaries with their language codes. Paginated via page/pageSize (max 100), sorted by creation date descending.

get_recordings

ChatGPT
Lists recordings the authenticated user can see — i.e. recordings they own, recordings of appointments where they are the technical owner, and recordings in RecordingFolders shared with them (directly or via team membership). User and organization are derived from the Personal Access Token; no parameters are required. For each recording the response returns — if available — the appointment ID and its time window as well as all available summaries with their language codes. Paginated via page/pageSize (max 100), sorted by creation date descending.

get_summary

ChatGPT
Returns a summary identified by its recordingSummaryId. With includeDetails=false (default) only the summary text is returned. With includeDetails=true the response additionally contains key facts, decisions, items, AI suggestions for follow-up tasks (taskSuggestions), real tracked tasks (tasks) and custom insights (all language-specific, matching the summary's language). Two task-like arrays are returned and they are NOT the same: taskSuggestions are Sally's AI-extracted proposals from the meeting — they are not tracked work until the user accepts them. tasks are real, user-tracked tasks attached to the meeting (either created from a suggestion or directly) and carry status flags isDone/doneOn/isCanceled/canceledOn. A suggestion that the user already turned into a task has referencedTaskId set, and the corresponding entry in tasks carries taskSuggestionId pointing back to the suggestion. To answer 'what are my open tasks?': use tasks filtered by isDone=false && isCanceled=false; suggestions without referencedTaskId can be surfaced separately as proposals the user hasn't acted on yet. Returns a not-found error if the token holder has no access.

get_summary

ChatGPT
Returns a summary identified by its recordingSummaryId. With includeDetails=false (default) only the summary text is returned. With includeDetails=true the response additionally contains key facts, decisions, items, AI suggestions for follow-up tasks (taskSuggestions), real tracked tasks (tasks) and custom insights (all language-specific, matching the summary's language). Two task-like arrays are returned and they are NOT the same: taskSuggestions are Sally's AI-extracted proposals from the meeting — they are not tracked work until the user accepts them. tasks are real, user-tracked tasks attached to the meeting (either created from a suggestion or directly) and carry status flags isDone/doneOn/isCanceled/canceledOn. A suggestion that the user already turned into a task has referencedTaskId set, and the corresponding entry in tasks carries taskSuggestionId pointing back to the suggestion. To answer 'what are my open tasks?': use tasks filtered by isDone=false && isCanceled=false; suggestions without referencedTaskId can be surfaced separately as proposals the user hasn't acted on yet. Returns a not-found error if the token holder has no access.

get_summary

ChatGPT
Returns a summary identified by its recordingSummaryId. With includeDetails=false (default) only the summary text is returned. With includeDetails=true the response additionally contains key facts, decisions, items, AI suggestions for follow-up tasks (taskSuggestions), real tracked tasks (tasks) and custom insights (all language-specific, matching the summary's language). Two task-like arrays are returned and they are NOT the same: taskSuggestions are Sally's AI-extracted proposals from the meeting — they are not tracked work until the user accepts them. tasks are real, user-tracked tasks attached to the meeting (either created from a suggestion or directly) and carry status flags isDone/doneOn/isCanceled/canceledOn. A suggestion that the user already turned into a task has referencedTaskId set, and the corresponding entry in tasks carries taskSuggestionId pointing back to the suggestion. To answer 'what are my open tasks?': use tasks filtered by isDone=false && isCanceled=false; suggestions without referencedTaskId can be surfaced separately as proposals the user hasn't acted on yet. Returns a not-found error if the token holder has no access.

get_transcription

ChatGPT
Returns the full transcript of a recording as plain text in the format '[mm:ss] Speaker: ...\n\n[mm:ss] Speaker: ...' — each speaker segment starts with its offset from the beginning of the recording. With includeDetails=true an additional 'segments' array is returned containing per-segment speakerName, text, startTimeInSeconds, endTimeInSeconds and the formatted timestamp. Returns a not-found error if the token holder has no access.

get_transcription

ChatGPT
Returns the full transcript of a recording as plain text in the format '[mm:ss] Speaker: ...\n\n[mm:ss] Speaker: ...' — each speaker segment starts with its offset from the beginning of the recording. With includeDetails=true an additional 'segments' array is returned containing per-segment speakerName, text, startTimeInSeconds, endTimeInSeconds and the formatted timestamp. Returns a not-found error if the token holder has no access.

get_transcription

ChatGPT
Returns the full transcript of a recording as plain text in the format '[mm:ss] Speaker: ...\n\n[mm:ss] Speaker: ...' — each speaker segment starts with its offset from the beginning of the recording. With includeDetails=true an additional 'segments' array is returned containing per-segment speakerName, text, startTimeInSeconds, endTimeInSeconds and the formatted timestamp. Returns a not-found error if the token holder has no access.

search_appointments

ChatGPT
Searches appointments in the current Sally organization. At least one of subject, participant, startDate or endDate must be provided. Filters combine with AND. TEXT MATCHING (subject, participant.name): - Full-text search with automatic prefix expansion (case-insensitive). Each word you pass is matched as 'word*', so 'mark' finds 'Marketing', 'kick' finds 'Kickoff'. - Stemming + synonyms are applied via SQL Server FREETEXT, so 'meetings' also matches 'meeting'. - Multiple words combine with AND: 'kickoff marketing' matches appointments whose subject contains BOTH a word starting with 'kickoff' AND a word starting with 'marketing'. - Pass only content words, skip filler like 'my', 'last', 'the'. The LLM should extract the essential tokens from the user's natural-language question and pass them here. TIME SEMANTICS — CRITICAL: - Results are sorted by StartTime DESC (newest first). The sort includes FUTURE-dated appointments — without a date filter, calendar entries scheduled for tomorrow rank higher than yesterday's completed meeting. - For 'last', 'previous', 'recent', 'most recent' or any other question about a meeting that has ALREADY HAPPENED: pass endDate=<current UTC timestamp> so future-dated calendar entries are excluded. Without this, the tool returns the next upcoming meeting instead of the most recent past one. - For 'next', 'upcoming' or 'on my calendar' (about a meeting that is STILL AHEAD): pass startDate=<current UTC timestamp> and pageSize larger than 1, then pick the entry with the smallest StartTime from the returned list (the sort is DESC, so the upcoming one closest to now is at the END of the page). HOW TO MAP NATURAL-LANGUAGE QUERIES: - 'my last meeting with Mario' → participant='Mario', endDate=<now>, pageSize=1. - 'my next meeting with Mario' → participant='Mario', startDate=<now>, pageSize=50, then take the meeting with the smallest StartTime. - 'kickoff meetings in the last 30 days' → subject='kickoff', startDate=<today-30d>, endDate=<now>. - 'appointments with someone from @acme.com' → participant='@acme.com' (email uses LIKE match, so substrings work here). - 'all of Mario's marketing calls' → subject='marketing', participant='Mario'. LIMITS: - subject: min 3 characters. participant: min 2 characters. - Results sorted by StartTime DESC (newest first; includes future). See TIME SEMANTICS above for past-vs-future handling. Use pageSize=1 for 'latest/last' WITH endDate set. - Returns only appointments the token holder has access to (own appointments as technical owner, or through recording-folder sharing). Each result includes participants (name, email, invitation and attendance status) and all associated recordings with their RecordingSummary IDs and language codes.

search_appointments

ChatGPT
Searches appointments in the current Sally organization. At least one of subject, participant, startDate or endDate must be provided. Filters combine with AND. TEXT MATCHING (subject, participant.name): - Full-text search with automatic prefix expansion (case-insensitive). Each word you pass is matched as 'word*', so 'mark' finds 'Marketing', 'kick' finds 'Kickoff'. - Stemming + synonyms are applied via SQL Server FREETEXT, so 'meetings' also matches 'meeting'. - Multiple words combine with AND: 'kickoff marketing' matches appointments whose subject contains BOTH a word starting with 'kickoff' AND a word starting with 'marketing'. - Pass only content words, skip filler like 'my', 'last', 'the'. The LLM should extract the essential tokens from the user's natural-language question and pass them here. TIME SEMANTICS — CRITICAL: - Results are sorted by StartTime DESC (newest first). The sort includes FUTURE-dated appointments — without a date filter, calendar entries scheduled for tomorrow rank higher than yesterday's completed meeting. - For 'last', 'previous', 'recent', 'most recent' or any other question about a meeting that has ALREADY HAPPENED: pass endDate=<current UTC timestamp> so future-dated calendar entries are excluded. Without this, the tool returns the next upcoming meeting instead of the most recent past one. - For 'next', 'upcoming' or 'on my calendar' (about a meeting that is STILL AHEAD): pass startDate=<current UTC timestamp> and pageSize larger than 1, then pick the entry with the smallest StartTime from the returned list (the sort is DESC, so the upcoming one closest to now is at the END of the page). HOW TO MAP NATURAL-LANGUAGE QUERIES: - 'my last meeting with Mario' → participant='Mario', endDate=<now>, pageSize=1. - 'my next meeting with Mario' → participant='Mario', startDate=<now>, pageSize=50, then take the meeting with the smallest StartTime. - 'kickoff meetings in the last 30 days' → subject='kickoff', startDate=<today-30d>, endDate=<now>. - 'appointments with someone from @acme.com' → participant='@acme.com' (email uses LIKE match, so substrings work here). - 'all of Mario's marketing calls' → subject='marketing', participant='Mario'. LIMITS: - subject: min 3 characters. participant: min 2 characters. - Results sorted by StartTime DESC (newest first; includes future). See TIME SEMANTICS above for past-vs-future handling. Use pageSize=1 for 'latest/last' WITH endDate set. - Returns only appointments the token holder has access to (own appointments as technical owner, or through recording-folder sharing). Each result includes participants (name, email, invitation and attendance status) and all associated recordings with their RecordingSummary IDs and language codes.

search_appointments

ChatGPT
Searches appointments in the current Sally organization. At least one of subject, participant, startDate or endDate must be provided. Filters combine with AND. TEXT MATCHING (subject, participant.name): - Full-text search with automatic prefix expansion (case-insensitive). Each word you pass is matched as 'word*', so 'mark' finds 'Marketing', 'kick' finds 'Kickoff'. - Stemming + synonyms are applied via SQL Server FREETEXT, so 'meetings' also matches 'meeting'. - Multiple words combine with AND: 'kickoff marketing' matches appointments whose subject contains BOTH a word starting with 'kickoff' AND a word starting with 'marketing'. - Pass only content words, skip filler like 'my', 'last', 'the'. The LLM should extract the essential tokens from the user's natural-language question and pass them here. TIME SEMANTICS — CRITICAL: - Results are sorted by StartTime DESC (newest first). The sort includes FUTURE-dated appointments — without a date filter, calendar entries scheduled for tomorrow rank higher than yesterday's completed meeting. - For 'last', 'previous', 'recent', 'most recent' or any other question about a meeting that has ALREADY HAPPENED: pass endDate=<current UTC timestamp> so future-dated calendar entries are excluded. Without this, the tool returns the next upcoming meeting instead of the most recent past one. - For 'next', 'upcoming' or 'on my calendar' (about a meeting that is STILL AHEAD): pass startDate=<current UTC timestamp> and pageSize larger than 1, then pick the entry with the smallest StartTime from the returned list (the sort is DESC, so the upcoming one closest to now is at the END of the page). HOW TO MAP NATURAL-LANGUAGE QUERIES: - 'my last meeting with Mario' → participant='Mario', endDate=<now>, pageSize=1. - 'my next meeting with Mario' → participant='Mario', startDate=<now>, pageSize=50, then take the meeting with the smallest StartTime. - 'kickoff meetings in the last 30 days' → subject='kickoff', startDate=<today-30d>, endDate=<now>. - 'appointments with someone from @acme.com' → participant='@acme.com' (email uses LIKE match, so substrings work here). - 'all of Mario's marketing calls' → subject='marketing', participant='Mario'. LIMITS: - subject: min 3 characters. participant: min 2 characters. - Results sorted by StartTime DESC (newest first; includes future). See TIME SEMANTICS above for past-vs-future handling. Use pageSize=1 for 'latest/last' WITH endDate set. - Returns only appointments the token holder has access to (own appointments as technical owner, or through recording-folder sharing). Each result includes participants (name, email, invitation and attendance status) and all associated recordings with their RecordingSummary IDs and language codes.

search_summaries

ChatGPT
Full-text search across meeting summary texts. Use this when the user asks which meetings discussed a topic, e.g. 'which calls mentioned pricing Q1?' or 'when did we talk about the supplier change?'. Returns summary hits with a short snippet, the linked appointment (subject + startTime) and language. Pass the essential content words from the user's question as query. Words are matched with prefix-expansion (so 'pric' finds 'pricing') and stemming (so 'plans' finds 'planning'). Multiple words combine with AND. Typical follow-up: take recordingSummaryId from a promising hit and call get_summary (optionally with includeDetails=true) for the full content. Filters: languageCode (ISO-639-1 like 'en', 'de') restricts to summaries in that language — prefer this to match the user's own language. startDate/endDate filter by summary creation date (UTC, ISO-8601, inclusive). Results are sorted by creation date descending.

search_summaries

ChatGPT
Full-text search across meeting summary texts. Use this when the user asks which meetings discussed a topic, e.g. 'which calls mentioned pricing Q1?' or 'when did we talk about the supplier change?'. Returns summary hits with a short snippet, the linked appointment (subject + startTime) and language. Pass the essential content words from the user's question as query. Words are matched with prefix-expansion (so 'pric' finds 'pricing') and stemming (so 'plans' finds 'planning'). Multiple words combine with AND. Typical follow-up: take recordingSummaryId from a promising hit and call get_summary (optionally with includeDetails=true) for the full content. Filters: languageCode (ISO-639-1 like 'en', 'de') restricts to summaries in that language — prefer this to match the user's own language. startDate/endDate filter by summary creation date (UTC, ISO-8601, inclusive). Results are sorted by creation date descending.

search_summaries

ChatGPT
Full-text search across meeting summary texts. Use this when the user asks which meetings discussed a topic, e.g. 'which calls mentioned pricing Q1?' or 'when did we talk about the supplier change?'. Returns summary hits with a short snippet, the linked appointment (subject + startTime) and language. Pass the essential content words from the user's question as query. Words are matched with prefix-expansion (so 'pric' finds 'pricing') and stemming (so 'plans' finds 'planning'). Multiple words combine with AND. Typical follow-up: take recordingSummaryId from a promising hit and call get_summary (optionally with includeDetails=true) for the full content. Filters: languageCode (ISO-639-1 like 'en', 'de') restricts to summaries in that language — prefer this to match the user's own language. startDate/endDate filter by summary creation date (UTC, ISO-8601, inclusive). Results are sorted by creation date descending.

App Stats

15

Tools

ChatGPT

Platforms

Works with

ChatGPT

Data refreshed daily