with one click
meet-join
// Join a Google Meet call to take notes; only when the user explicitly asks.
// Join a Google Meet call to take notes; only when the user explicitly asks.
Ingest and process media files (video, audio, image)
Read, search, send, and manage messages across Gmail, Outlook, Telegram, and other platforms
Migrate from ChatGPT, Claude, OpenClaw, Hermes, Manus, and other AI assistants into Vellum by inspecting their data exports, conversation archives, files, prompts, custom instructions, memory, saved memories, tools, GPTs, workflows, integrations, and relationships, then mapping as much as safely possible into Vellum primitives. Handles single-source and multi-source migrations with a unified, deduplicated inventory.
Send notifications through the unified notification router
Analyze and reduce LLM spend by mapping call-site overrides to managed profiles (Balanced / Quality / Speed). Covers spend analysis, profile assignment, and config correctness.
Recurring and one-shot scheduling - cron, RRULE, or single fire-at time
| name | meet-join |
| description | Join a Google Meet call to take notes; only when the user explicitly asks. |
| metadata | {"emoji":"📹","vellum":{"display-name":"Meet Join","feature-flag":"meet"}} |
Use this skill when the user explicitly asks the assistant to join a Google Meet call (e.g. "join my meet", "can you join this call and take notes", usually with a https://meet.google.com/... URL in context). Joining a call causes the assistant to appear as a visible participant — never do it proactively.
Trigger on clear, explicit user requests only:
Do NOT trigger on:
If the request is ambiguous (e.g. no URL, or an unrelated URL), ask the user to confirm the Meet link before calling the tool.
Call the meet_join tool with the Meet URL:
meet_join(url: "https://meet.google.com/abc-defg-hij")
Validate the URL looks like a Google Meet link before calling — the canonical shape is https://meet.google.com/xxx-yyyy-zzz. If the URL does not look like a Meet link, ask the user to confirm or paste the correct one.
On join, the assistant bot announces itself in the Meet chat with the configured consent message so other participants know a note-taker is present. Any participant can ask the bot to leave; the bot auto-leaves when it detects objection keywords in the transcript.
Call meet_leave when the user says you can step out (e.g. "thanks, you can go now", "drop out of the call") or when you judge that continued presence is no longer useful:
meet_leave(reason: "user-requested")
When a single meeting is active, meetingId can be omitted — the tool targets that meeting automatically. When multiple meetings are active, pass the meetingId explicitly.
meet feature flag is disabled, the meet tools return a clear error — relay that to the user rather than retrying.Transcription quality and latency reflect the user's configured services.stt.provider. Deepgram and Gemini stream over a WebSocket and return sub-second partials; Whisper approximates streaming with ~400 ms polls and therefore produces finals slightly later. Speaker attribution in meeting transcripts is derived from the Meet DOM active-speaker signal — it is independent of the STT provider.
The meet_send_chat tool posts a message into the active meeting's chat:
meet_send_chat(text: "The doc we were looking for is https://example.com/spec")
When a single meeting is active, meetingId can be omitted. If no meeting is active, the tool fails with a clear error — surface the error back to the user rather than retrying.
Chat is appropriate when:
Avoid chat for:
A background chat-opportunity detector watches the meeting transcript and, when it judges that the moment might warrant a response from the assistant, wakes the agent loop with a hint. The hint is delivered as an internal user message prepended with [opportunity:meet-chat-opportunity] <reason>. At that point the assistant can call meet_send_chat if appropriate.
Key points:
The meet_speak tool synthesizes text to speech and plays it through the bot's microphone in the meeting:
meet_speak(text: "Yes, the meeting is scheduled to end in 30 seconds.")
When a single meeting is active, meetingId can be omitted. The voice parameter is optional — when omitted, the configured TTS voice is used.
Voice is appropriate when:
Avoid voice for:
meet_send_chat instead.Barge-in is automatic: if a human speaks while the assistant is talking, the assistant's audio is cancelled mid-utterance. Treat being interrupted as normal — do not retry the cancelled utterance or apologize for it.
meet_enable_avatar turns on a real-time video avatar that lip-syncs to TTS output. meet_disable_avatar turns it off. The avatar is off by default when the assistant joins a meeting — the assistant must explicitly opt in.
Enable the avatar when:
Avoid enabling the avatar when: