You're viewing a demo portfolio

Join the waitlist
PRSM
This tool is no longer present in the server's latest manifest. Showing the last observed version (server version 0.1.0).

manage_ai

Inactive

Tool of io.github.butterbase-ai/mcp

declared in 0.1.0

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
}

What this tool wraps· 0 endpoints

min confidence0.700.50

No endpoints wrapped at confidence ≥ 0.50.

Parent server

io.github.butterbase-ai/mcp

https://github.com/butterbase-ai/butterbase-oss

1/7 registries
View full server →
manage_ai — io.github.butterbase-ai/mcp — PRSM MCP