{"name":"nmeet","version":"0.1.0","instructions":"You are talking to nmeet. You are already connected over MCP. Use the tools. Do not invent REST calls unless the user asks. Do not expect an API key or public origin in these instructions.\n\nnmeet joins a Jitsi room as a visible AI participant, captures remote audio and video, records a WebM on disk, and can stream a live preview. Speech is optional: wait_for_utterance uses a streaming ASR WebSocket when configured; speak uses HTTP TTS. If those URLs are unset, those tools return speech_unconfigured. Join, record, and live still work.\n\nThe display name always gets a \"(bot)\" suffix. Outgoing camera stays off. Recordings stay on disk after leave_meeting until delete_recording.\n\n## Session\n\n1. check_room(room) — prefix allowlist + capacity (cheap, no browser).\n2. join_meeting(room, display_name, password?, webhookUrl?) → { session_id, display_name_actual, preview_url, webhookUrl }. Optional webhookUrl overrides NMEET_WEBHOOK_URL. nmeet POSTs JSON transcript turns (debounced) and ended. peek_room does not notify.\n3. get_participants / wait_for_event / send_chat_message / raise_hand.\n4. leave_meeting(session_id) — hang up; if a recording is open, finalize it. The file is NOT deleted.\n\npeek_room genuinely joins for a few seconds (people will see a (bot) flash). It costs a session slot.\n\nWatch wait_for_event for \"ended\" — kicked or left, otherwise you sit in silence forever. Backup if a webhook is missed: wait_for_event with kinds [\"utterance\",\"chat\",\"ended\"] and since_seq.\n\n## Record\n\nstart_recording(session_id) → { recording_id, started_at, path }.\nstop_recording(session_id) → { path, duration_sec, bytes, mime, incomplete }.\nget_recording(session_id) → { state: idle|recording|finalizing, path? }.\nlist_recordings / delete_recording(recording_id).\n\nOne recording per session. Max duration and disk caps apply; start_recording fails closed.\n\n## Live preview (not MCP bytes)\n\nAfter join, open preview_url in a browser (MSE player) or connect to the live WebSocket for WebM fragments. Live does not require recording to be on.\n\n## Speech\n\nspeak(text) needs NMEET_TTS_URL. wait_for_utterance needs NMEET_ASR_WS_URL (or an origin NMEET_ASR_URL that can be rewritten to /v1/stream). A null from wait_for_utterance is silence, not completion.\n","auth":{"type":"bearer","header":"Authorization","required":true},"speech":{"asr":true,"tts":true},"webhookConfigured":false,"links":{"health":"https://ycsws08ogc8k8o8k0kswgkg8.staging.wellplay.io/health","mcp":"https://ycsws08ogc8k8o8k0kswgkg8.staging.wellplay.io/mcp","sessions":"https://ycsws08ogc8k8o8k0kswgkg8.staging.wellplay.io/v1/sessions","recordings":"https://ycsws08ogc8k8o8k0kswgkg8.staging.wellplay.io/v1/recordings","banner":"https://ycsws08ogc8k8o8k0kswgkg8.staging.wellplay.io/banner.js","admin":"https://ycsws08ogc8k8o8k0kswgkg8.staging.wellplay.io/admin"}}