manage_ai
InactiveTool of io.github.butterbase-ai/mcp
Use the app's AI gateway: chat, embeddings, list models, read/update config, read usage. Actions: - chat { app_id, messages, model?, temperature?, max_tokens? } Synchronous (no streaming). Returns the full assistant response. Default model is the app's configured default, or "openai/gpt-4o-mini". - embed { app_id, input (string | string[]), model?, encoding_format? } Returns OpenAI-shaped embedding response. - list_models { app_id } Returns { models: AiModel[] } — discover what the app can call. - get_config { app_id } Returns { defaultModel, allowedModels, maxTokensPerRequest, ... } - update_config { app_id, config } Set defaultModel, allowedModels, maxTokensPerRequest (1–100000), or rotate BYOK. - get_usage { app_id, startDate?, endDate? } Aggregate token counts and costs over a window. - submit_video { app_id, model, prompt, duration?, resolution?, aspect_ratio?, generate_audio?, seed? } Submits an async video-generation job. Returns { job_id, status, polling_url }. Poll the returned URL until status is "completed". - poll_video { app_id, job_id } Returns current { status, model, content_urls?, error?, created_at }. When status is "completed", content_urls contains absolute URLs (same origin as the polling_url) that the caller can fetch() directly using the same Authorization header. Use this to drive your own polling loop. - start_meeting { app_id, meeting_url, transcript?, recording?, metadata?, bot_name?, automatic_leave? } Spawn a meeting bot that joins a Zoom/Meet/Teams/Webex call. recording: "mp4" (default), "audio_only", or false. transcript defaults to true. bot_name (1–64 chars) sets the display name attendees see; defaults to "Butterbase Notetaker". automatic_leave: per-bot overrides for the auto-leave timers (in seconds, positive ints, max 86400). Any sub-field omitted inherits the provider default. - waiting_room_timeout_sec — leave if still in the waiting room after N seconds - no_one_joined_timeout_sec — leave if no participants joined within N seconds - everyone_left_timeout_sec — leave N seconds after the last participant leaves - in_call_not_recording_timeout_sec — leave if in-call but not recording for N seconds Example: automatic_leave: { waiting_room_timeout_sec: 900 } makes the bot give up after 15 min in the waiting room. Returns { id, status, botName, ... }. Save id to call get_meeting / stop_meeting later. - get_meeting { app_id, meeting_id } Current status + recordingUrl / transcriptUrl (populated when artifacts are ready). - list_meetings { app_id, status?, limit?, cursor? } Page through this app's bots. status filters to a lifecycle phase (joining / waiting_room / in_call / recording / ended / done / fatal). - stop_meeting { app_id, meeting_id } Force the bot to leave the call. Returns 204 / no body on success. - estimate_meeting { app_id, duration_minutes, transcript? } Predict the USD charge for a hypothetical session at this duration. - configure_meetings_webhook { app_id, forward_url, rotate_secret? } Upsert the app's meetings webhook forward URL. When rotate_secret is true (or no row exists), generates a new signing secret (wsec_…) and returns it once — store it immediately. The secret is the HMAC-SHA256 key that signs every forwarded event for THIS app — see the "meetings" topic in butterbase_docs for verification details. Returns { ok, app_id, forward_url, secret } where secret is null when not rotated. - usage_meetings { app_id } Returns the last 100 rows from actor_usage_logs for the app. Each row has { id, dimension, seconds, usd_charged, created_at }. This tool wraps the same /v1/:app_id/chat/completions, /embeddings, /ai/config, /ai/models, /ai/usage routes the SDK uses. The "chat" action sets stream: false; for streamed deltas, drive the SDK from inside a function or DO.
Parameters schema
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"app_id",
"action"
],
"properties": {
"seed": {
"type": "integer"
},
"input": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
],
"description": "Required for embed"
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "For list_meetings (default 20)"
},
"model": {
"type": "string"
},
"action": {
"enum": [
"chat",
"embed",
"list_models",
"get_config",
"update_config",
"get_usage",
"submit_video",
"poll_video",
"start_meeting",
"get_meeting",
"list_meetings",
"stop_meeting",
"estimate_meeting",
"configure_meetings_webhook",
"usage_meetings"
],
"type": "string",
"description": "The action to perform"
},
"app_id": {
"type": "string",
"description": "The app ID"
},
"config": {
"type": "object",
"properties": {
"byokKey": {
"type": "string"
},
"defaultModel": {
"type": "string"
},
"allowedModels": {
"type": "array",
"items": {
"type": "string"
}
},
"maxTokensPerRequest": {
"type": "integer",
"maximum": 100000,
"minimum": 1
}
},
"description": "Required for update_config",
"additionalProperties": false
},
"cursor": {
"type": "string",
"description": "For list_meetings pagination"
},
"job_id": {
"type": "string",
"description": "Required for poll_video"
},
"prompt": {
"type": "string",
"description": "Required for submit_video"
},
"status": {
"enum": [
"joining",
"waiting_room",
"in_call",
"recording",
"ended",
"done",
"fatal"
],
"type": "string",
"description": "For list_meetings — filter to one lifecycle phase"
},
"endDate": {
"type": "string"
},
"bot_name": {
"type": "string",
"maxLength": 64,
"minLength": 1,
"description": "For start_meeting — display name the bot uses when it joins (1–64 chars). Defaults to \"Butterbase Notetaker\"."
},
"duration": {
"type": "integer",
"exclusiveMinimum": 0
},
"messages": {
"type": "array",
"items": {
"type": "object",
"required": [
"role",
"content"
],
"properties": {
"name": {
"type": "string"
},
"role": {
"enum": [
"system",
"user",
"assistant",
"tool"
],
"type": "string"
},
"content": {
"anyOf": [
{
"type": "string"
},
{
"type": "array"
}
]
},
"tool_call_id": {
"type": "string"
}
},
"additionalProperties": false
},
"description": "Required for chat"
},
"metadata": {
"type": "object",
"description": "For start_meeting — arbitrary string→string map; keys may not start with bb_",
"additionalProperties": {
"type": "string"
}
},
"recording": {
"enum": [
"mp4",
"audio_only",
"false",
false
],
"type": [
"string",
"boolean"
],
"description": "For start_meeting: \"mp4\" (default), \"audio_only\", or false to skip recording"
},
"startDate": {
"type": "string"
},
"max_tokens": {
"type": "integer",
"exclusiveMinimum": 0
},
"meeting_id": {
"type": "string",
"description": "Required for get_meeting / stop_meeting"
},
"resolution": {
"type": "string"
},
"transcript": {
"type": "boolean",
"description": "For start_meeting / estimate_meeting (default true)"
},
"forward_url": {
"type": "string",
"description": "Required for configure_meetings_webhook"
},
"meeting_url": {
"type": "string",
"description": "Required for start_meeting"
},
"temperature": {
"type": "number"
},
"aspect_ratio": {
"type": "string"
},
"rotate_secret": {
"type": "boolean",
"description": "For configure_meetings_webhook — generate a new signing secret"
},
"generate_audio": {
"type": "boolean"
},
"automatic_leave": {
"type": "object",
"properties": {
"waiting_room_timeout_sec": {
"type": "integer",
"maximum": 86400,
"exclusiveMinimum": 0
},
"everyone_left_timeout_sec": {
"type": "integer",
"maximum": 86400,
"exclusiveMinimum": 0
},
"no_one_joined_timeout_sec": {
"type": "integer",
"maximum": 86400,
"exclusiveMinimum": 0
},
"in_call_not_recording_timeout_sec": {
"type": "integer",
"maximum": 86400,
"exclusiveMinimum": 0
}
},
"description": "For start_meeting — per-bot overrides for auto-leave timers (seconds). Any field omitted inherits the provider default. e.g. { waiting_room_timeout_sec: 900 } leaves if not admitted within 15 min.",
"additionalProperties": false
},
"encoding_format": {
"enum": [
"float",
"base64"
],
"type": "string"
},
"duration_minutes": {
"type": "integer",
"maximum": 1440,
"minimum": 1,
"description": "Required for estimate_meeting"
}
},
"additionalProperties": false
}No endpoints wrapped at confidence ≥ 0.70.
Parent server
io.github.butterbase-ai/mcp
https://github.com/butterbase-ai/butterbase-oss
1/7 registries