Speak AI MCP Server (speakai/speakai-mcp) is an MCP server listed on the M8ven Trust Index. It scores 74 out of 100, grade C. It declares 113 tools. No publisher has claimed this listing.
Connects Speak AI transcription and insight data to Claude and ChatGPT, enabling natural language queries for summaries, action items, and quotes from recordings.
Caution. Specific findings reduced this grade. They are listed on the page. Grades reflect the full trust pyramid: code, verification depth, and reputation. New projects cap at C until adoption is earned.
How we verified
Verified is a snapshot. Live keeps it current, and builds your track record.
⚡ Connect GitHub → continuous verification on every pushwhy connect →Who stands behind it
speakai
Source: Glama
Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find. Or connect your repo for our deepest verification, Live Monitored: read-only, revoke anytime. What we access →
Install from
The grade above is for the source repository. Registries can serve a different version, so we mark the ones we were not able to read.
These names and descriptions are the publisher's own, read from the source code. We print them as written. Our assessment is the findings above, not this list.
search_medialist_automationsList automation rules in the workspace, with paging and filters.
list_automation_namesList automations as lightweight { name, id } pairs — useful for pickers without fetching full configs.
get_automationGet detailed information about a specific automation rule, including its trigger and step graph.
get_automation_runsGet the run history (executions) for an automation, with paging and optional status filter.
create_automationupdate_automationtoggle_automation_statusToggle an automation rule between active and inactive. This flips the current state — call get_automation first if you need to know which way it will flip.
bulk_update_automation_statusActivate or deactivate multiple automations at once.
bulk_assign_automation_foldersSet the folder scope for multiple automations at once. Pass an empty folderIds array to remove the folder restriction (run on all folders).
run_automationsManually run one or more automations against one or more media items now (outside the normal trigger).
delete_automationPermanently delete an automation rule.
list_automation_appsList the apps available in the automation catalog (e.g. Speak native + connected integrations). Use to discover what triggers/actions exist before building an automation.
list_automation_triggersList the trigger types available in the automation catalog. Optionally filter by app.
list_automation_actionsList the action/step types available in the automation catalog. Optionally filter by app.
create_clipget_clipsList clips, optionally filtered by folder or media files. If clipId is provided, returns a single clip with its download URL (when processed).
update_clipUpdate a clip's title, description, or tags.
delete_clipPermanently delete a clip and its associated media file.
list_dashboardsget_dashboardlist_dashboard_widgetscreate_dashboardupdate_dashboarddelete_dashboardSoft-delete a dashboard. This also deactivates its public share link.
duplicate_dashboardshare_dashboardEnable public sharing for a dashboard and return its share token + embed id. WARNING: by default the public link resolves with no passphrase, so anyone with the token can view the dashboard data until an owner sets one.
get_dashboard_speakers_insightCompute a speakers breakdown for a given folder scope, date range, and field filters. Standalone analytics — does not require a dashboard to exist.
create_embedCreate an embeddable player/transcript widget for a media file or a set of folders. Provide `mediaId` for a single-media embed, or `folderIds` for a folder/library embed.
update_embedUpdate an existing embed widget — appearance/feature toggles via `meta`, plus scope and privacy.
check_embedCheck if an embed exists for a media file and retrieve its configuration.
get_embed_iframe_urlGet the iframe URL for embedding a media player/transcript on a webpage.
export_mediaExport a media file's transcript or insights in various formats (pdf, docx, srt, vtt, txt, csv).
export_multiple_mediaExport multiple media files at once, optionally merged into a single file.
list_fieldsList all custom fields defined in the workspace.
create_fieldCreate a new custom field for categorizing and tagging media.
update_multiple_fieldsSet custom field values across media in a single batch operation. Scope the update with `folderId` (all media in a folder) and/or `mediaIds`.
update_fieldUpdate a specific custom field by ID. `name` must always be supplied (the server replaces the field config).
get_all_folder_viewsRetrieve all saved views across all folders.
get_folder_viewsRetrieve all saved views for a specific folder.
create_folder_viewCreate a new saved view for a folder with a custom set of display columns.
update_folder_viewUpdate an existing saved view. Replaces the whole view, so `name`, `isDefault` and `columns` must all be supplied.
clone_folder_viewDuplicate an existing folder view into a target folder.
list_foldersList all folders in the workspace with pagination and sorting.
get_folder_infoGet detailed information about a specific folder including its contents.
create_folderCreate a new folder in the workspace.
clone_folderDuplicate an existing folder and all of its contents.
update_folderUpdate a folder. `name` must always be supplied (the server replaces the folder config).
delete_folderPermanently delete a folder. Media within the folder will be moved, not deleted.
get_signed_upload_urlGet a pre-signed S3 URL for direct file upload to Speak AI storage. After getting the URL, PUT your file to it, then call upload_media with the S3 URL. For a simpler workflow, use upload_local_file instead which handles all steps automatically.
upload_mediaUpload media from a URL — a direct/public file URL, a pre-signed S3 URL, or a shareable social/video link (YouTube, Instagram, TikTok, X, Facebook, Reddit, SoundCloud, and similar) which Speak resolves to the underlying media automatically. Processing is asynchronous — after uploading, use get_media…
list_mediaList and search media files in the workspace with filtering, pagination, and sorting. Use filterName for text search, mediaType to filter by audio/video/text, folderId for folder-specific results, and from/to for date ranges. Use the include param to embed additional data (transcripts, speakers, key…
get_media_insightsRetrieve AI-generated insights for a processed media file — topics, sentiment, keywords, action items, summaries, and more. The media must be in 'processed' state (check with get_media_status first). For asking custom questions about a media file, use ask_ai_chat instead.
get_transcriptRetrieve the full transcript for a media file with speaker labels and timestamps. Works on processed media and also returns the partial, in-progress transcript while a meeting bot is still recording (LIVE_TRANSCRIPT state). To fetch only the new sentences added since your previous call during a live…
update_transcript_speakersUpdate or rename speaker labels in a single media transcript. Call get_transcript first to read the speaker list — a speaker's label is whatever it was last renamed to, not a fixed value, so ids from an earlier turn may be stale. Renaming a speaker to a name another speaker already has is refused as…
update_transcriptionEdit the official transcript text of a single media file by finding and replacing text. Replaces every occurrence of the original text with the replacement (leave replacement empty to delete the text) and reports how many occurrences were replaced. Use update_transcript_speakers to rename speaker la…
get_media_statusCheck the processing status of a media file. States: pending → transcribing → analyzing → processed (or failed). Poll this after upload_media until state is 'processed', then use get_transcript and get_media_insights to retrieve results.
update_media_metadataUpdate metadata fields (name, description, tags, status) for an existing media file.
delete_mediaPermanently delete a media file and all associated transcripts and insights.
get_captionsGet captions for a media file. Captions are separate from full transcripts and are formatted for display/subtitles.
list_supported_languagesList all languages supported for transcription. Use the language codes when uploading media with a specific sourceLanguage.
get_media_statisticsGet workspace-level media statistics — total counts, processing status breakdown, storage usage, etc.
toggle_media_favoriteMark or unmark media files as favorites for quick access.
reanalyze_mediaRe-run AI analysis on a media file using the latest models. Choose which parts to re-run via the flags below.
bulk_update_transcript_speakersNormalise speaker names that are ALREADY correct across multiple media files — for example changing "Frederik S." to "Frederik" everywhere. Applies the same mapping to every specified media file. NOT a way to identify a speaker across a project: neither the numeric id nor a default label such as "Sp…
bulk_move_mediaMove multiple media files to a folder in a single operation. Use this for batch reorganization instead of updating media one by one.
list_meeting_eventsList scheduled or completed meeting assistant events with filtering and pagination.
schedule_meeting_eventSchedule the Speak AI meeting assistant to join and record an upcoming meeting.
remove_assistant_from_meetingRemove the Speak AI assistant from an active or scheduled meeting.
delete_scheduled_assistantCancel and delete a scheduled meeting assistant event.
get_live_meeting_transcriptFetch new sentences from an in-progress or just-ended meeting transcript. Identify the meeting via meetingAssistantEventId (preferred) or mediaId. Pass back the previous response's nextCursor as sinceEndInSec to receive only what's been added since.
ask_ai_chatget_analysis_quoteretry_ai_chatRetry a failed or incomplete AI Chat response. Use when a previous ask_ai_chat call returned an error or incomplete answer.
get_chat_historyGet a list of recent AI Chat conversations. Returns conversation summaries with promptIds that can be used to continue conversations via ask_ai_chat or retrieve full messages via get_chat_messages.
get_chat_messagesGet full message history for conversations. Can filter by promptId for a specific conversation, by media/folder, or search across all chat messages. Returns questions, answers, references, and metadata.
delete_chat_messageDelete a specific chat message from conversation history.
list_promptsList all available AI Chat templates. Use template IDs with ask_ai_chat's assistantTemplateId parameter when using assistantType 'custom'.
get_favorite_promptsGet all prompts and answers that have been marked as favorites. Useful for finding saved insights and important AI-generated analysis.
toggle_prompt_favoriteMark or unmark a chat message as a favorite for easy retrieval later.
update_chat_titleUpdate the title of a chat conversation for easier identification in history.
submit_chat_feedbackSubmit feedback on a chat response (thumbs up/down). Helps improve AI answer quality.
get_chat_statisticsGet usage statistics for AI Chat / chat. Returns metrics on prompt usage, optionally filtered by date range.
export_chat_answerExport a specific AI Chat answer. Useful for saving AI-generated summaries, reports, or analysis results.
check_recorder_statusCheck whether a recorder/survey is active and accepting submissions.
create_recorderCreate a new recorder or survey for collecting audio/video submissions.
list_recordersList all recorders/surveys in the workspace.
clone_recorderDuplicate an existing recorder including all its settings and questions.
get_recorder_infoGet detailed information about a specific recorder including its settings and questions.
get_recorder_recordingsList all submissions/recordings collected by a specific recorder.
generate_recorder_urlGenerate a shareable public URL for a recorder/survey.
update_recorder_settingsUpdate configuration settings for a recorder (branding, capture options, etc.). `name` must always be supplied.
update_recorder_questionsUpdate the survey questions and respondent-info settings for a recorder.
delete_recorderPermanently delete a recorder/survey. Existing recordings are preserved.
create_text_noteCreate a new text note in Speak AI for analysis. The content will be analyzed for insights, topics, and sentiment.
get_text_insightRetrieve AI-generated insights for a text note, including topics, sentiment, summaries, and action items.
reanalyze_textTrigger a re-analysis of an existing text note to regenerate insights with the latest AI models.
update_text_noteUpdate an existing text note's name, content, or metadata. Updating text content will trigger re-analysis.
list_usersList the users (members) in the workspace/company, with their ids, names, emails, and permissions. Use the returned _id values when assigning members to user groups.
list_user_groupsList all user groups in the company. Each group includes its members (hydrated names/emails) and member ids. Use this to discover group ids and current membership before updating or deleting a group.
13 further tools are not listed here. The complete surface is in the source.
Disclosed vulnerabilities in this server's declared npm dependencies (via OSV). Whether each is reachable depends on the installed versions.
Axios Node HTTP adapter can use an inherited proxy after interceptor config cloning
Axios: Excessive recursion in formDataToJSON can cause denial of service
Axios: Nested axios option objects can consume polluted prototype values
Axios: NO_PROXY bypass for 0.0.0.0 local addresses in axios
Axios form serializer maxDepth bypass via {} metatoken
SPEAK_ACCESS_TOKENNo Auto-managed JWT access token (auto-fetched and refreshed)SPEAK_API_KEY3. Set your environment variable. Generate one at [app.speakai.co/developers/apikeys](https://app.speakai.co/developers/apikeys).SPEAK_BASE_URLNo https://api.speakai.co API base URLTool annotations
112/113 tools have annotations
Add readOnlyHint or destructiveHint annotations to every tool so hosts can warn users before invoking.
All four hints declared on every tool
1/113 tools missing one or more hints — ask_ai_chat (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint). OpenAI's directory rejects tools where any of the four hints are missing or non-boolean.
For every tool, set all four hints (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) to explicit true/false values that match the handler’s actual behaviour.
Tool inputs are validated
97/112 tool handlers declare input schemas (87%)
Declare an inputSchema with zod/joi/yup on every tool definition.
License file
No license file
Add a LICENSE file (MIT, Apache-2.0, etc.).
Secrets not logged
1 secret value sent to console.log
Redact or omit secret values from log output.
Production dependencies are patched
0 critical, 1 high severity in production deps — axios@1.16.1 (high), axios@1.16.1 (medium)
Run npm audit fix, or upgrade the affected packages to a non-vulnerable version.
Claim the listing to review these findings one by one and send us a correction where you disagree, straight to the team. Claiming also means we tell you when the grade moves, and reach you first if we find anything urgent.
[](https://m8ven.ai/mcp/speakai/speakai-mcp)?variant=verified from the URL.Vetting this one by hand? Tool Check is an MCP that scores other MCPs. Add it once and ask Claude, ChatGPT, or any MCP client to grade a server, surface CVEs, check the publisher, and suggest safer alternatives — before you install.
https://m8ven.ai/api/mcp/tool-check