{
  "name": "SeaMeet MCP tools",
  "description": "Machine-readable tool inventory for the SeaMeet local MCP server.",
  "generatedFrom": "src/main/agent/mcp/tools-registry.js",
  "install": {
    "package": "@seameet/mcp",
    "command": "npx -y @seameet/mcp",
    "claude": "claude mcp add seameet -- npx -y @seameet/mcp",
    "codex": "codex mcp add seameet -- npx -y @seameet/mcp"
  },
  "localRuntime": {
    "transport": "stdio",
    "requiresDesktopApp": true,
    "liveReference": "http://localhost:3741/llms.txt",
    "bridgeAuth": "X-Bridge-Secret from $TMPDIR/seameet-mcp-bridge-<username>.json"
  },
  "tools": [
    {
      "name": "seameet_list_recordings",
      "description": "List recordings and screenshots with metadata. Returns a compact summary with totalCount (total matching recordings) and a paginated list of recordings (default limit: 50). Each entry includes: filePath, name, type, timestamp, duration, hasVideo. Use seameet_get_asset_bundle to get full details for a specific recording.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "recording",
              "screenshot",
              "microphone",
              "all"
            ],
            "description": "Semantic media-type filter. \"recording\" returns meetings and audio/video files (everything that is NOT a screenshot or system process). \"screenshot\" returns screenshots only. \"microphone\" returns bare-mic captures only. \"all\" (or omitted) returns everything."
          },
          "dateFrom": {
            "type": "string",
            "description": "ISO 8601 date-time -- only include recordings at or after this time."
          },
          "dateTo": {
            "type": "string",
            "description": "ISO 8601 date-time -- only include recordings at or before this time."
          },
          "limit": {
            "type": "number",
            "description": "Maximum number of results to return. Default: 50."
          }
        }
      }
    },
    {
      "name": "seameet_get_artifact",
      "description": "Read a pre-generated AI artifact for a recording or screenshot. IMPORTANT: Always use this tool to read existing artifacts instead of using shell commands. Most recordings already have all of these artifact keys: summary, transcription, action-items, key-decisions, chapters. Call this tool once per key you need. Do NOT pass \"manifest.json\" as the key. Large artifacts are paginated: when the response contains pagination.nextOffset (non-null), call this tool again with offset=nextOffset to read the next page.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "filePath": {
            "type": "string",
            "description": "Absolute path to the original recording or screenshot file (e.g. /path/to/recording.webm)."
          },
          "key": {
            "type": "string",
            "enum": [
              "summary",
              "transcription",
              "transcription-srt",
              "live-transcription",
              "live-transcription-srt",
              "action-items",
              "key-decisions",
              "chapters",
              "description",
              "ocr-text"
            ],
            "description": "Artifact key. For meetings use: summary, transcription, action-items, key-decisions, chapters. For screenshots use: description, ocr-text. \"transcription\" automatically falls back to the live transcript (live-transcription) when the recording has not been re-transcribed by the pipeline, so prefer \"transcription\" over the live-* keys."
          },
          "offset": {
            "type": "number",
            "description": "Character offset to start reading from (default 0). Use pagination.nextOffset from a previous response to continue a large artifact."
          },
          "maxChars": {
            "type": "number",
            "description": "Maximum characters to return per page (default and cap: 60000)."
          }
        },
        "required": [
          "filePath",
          "key"
        ]
      }
    },
    {
      "name": "seameet_get_asset_bundle",
      "description": "Get the full asset bundle manifest for a recording or screenshot. The manifest lists all available artifacts (generated summaries, transcriptions, etc.) and chat session history.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "filePath": {
            "type": "string",
            "description": "Absolute path to the original recording or screenshot file."
          }
        },
        "required": [
          "filePath"
        ]
      }
    },
    {
      "name": "seameet_save_artifact",
      "description": "Save a generated artifact to an asset bundle. Use this to persist AI-generated content such as email drafts, meeting notes, mind maps, or custom summaries alongside the original recording.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "filePath": {
            "type": "string",
            "description": "Absolute path to the original recording or screenshot file."
          },
          "artifactKey": {
            "type": "string",
            "description": "Logical key for this artifact, e.g. \"email-draft\", \"mindmap\", \"custom-summary\"."
          },
          "content": {
            "type": "string",
            "description": "String content to write to the artifact file."
          },
          "mimeType": {
            "type": "string",
            "description": "MIME type of the content, e.g. \"text/markdown\", \"application/json\"."
          },
          "generatedBy": {
            "type": "string",
            "enum": [
              "claude",
              "gemini",
              "seameet-stt",
              "user"
            ],
            "description": "Who generated this artifact."
          },
          "extension": {
            "type": "string",
            "description": "File extension including dot, e.g. \".md\", \".json\", \".txt\". Default: \".txt\"."
          },
          "modelUsed": {
            "type": "string",
            "description": "Optional model identifier, e.g. \"claude-sonnet-4-5\"."
          },
          "tokenCost": {
            "type": "number",
            "description": "Optional token cost incurred to generate this artifact."
          },
          "description": {
            "type": "string",
            "description": "Optional human-readable description of what this artifact contains."
          }
        },
        "required": [
          "filePath",
          "artifactKey",
          "content",
          "mimeType",
          "generatedBy"
        ]
      }
    },
    {
      "name": "seameet_start_recording",
      "description": "Start recording in SeaMeet. Pass \"source\" to specify what to record:\n- source: \"microphone\" -> microphone audio only, no video\n- source: \"screen\" -> screen video + microphone audio (system/speaker audio is NOT captured)\n- source: \"both\" -> screen video + microphone + system/speaker audio (use this for meetings, webinars, or any video/audio playing on the machine)\nIf \"source\" is omitted or unclear, the tool returns a needsClarification response with a suggested question to ask the user.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "source": {
            "type": "string",
            "enum": [
              "microphone",
              "screen",
              "both"
            ],
            "description": "\"microphone\" = microphone audio only, no video; \"screen\" = screen video + microphone audio (no system/speaker audio); \"both\" = screen video + microphone + system/speaker audio. Omit to trigger a needsClarification response with clickable choices."
          }
        }
      }
    },
    {
      "name": "seameet_stop_recording",
      "description": "Stop the current recording in SeaMeet. Returns the file path of the saved recording.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    },
    {
      "name": "seameet_take_screenshot",
      "description": "Capture a screenshot using SeaMeet's screenshot pipeline. Returns the file path of the saved screenshot.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    },
    {
      "name": "seameet_rename_file",
      "description": "Rename a recording or screenshot file with a meaningful name. The file extension is preserved. Handles naming collisions automatically.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "filePath": {
            "type": "string",
            "description": "Absolute path to the file to rename."
          },
          "newName": {
            "type": "string",
            "description": "New base name for the file (without extension)."
          },
          "fileTimestampSuffix": {
            "type": "string",
            "description": "Optional timestamp suffix to preserve in the filename (13--14 digits)."
          }
        },
        "required": [
          "filePath",
          "newName"
        ]
      }
    },
    {
      "name": "seameet_list_files",
      "description": "List files in the SeaMeet recording save directory (or a specified directory). Returns file names and absolute paths.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "dir": {
            "type": "string",
            "description": "Directory to list. Defaults to the SeaMeet save directory."
          }
        }
      }
    },
    {
      "name": "seameet_get_settings",
      "description": "Get current SeaMeet app settings including the default save directory, microphone gain, app recording permissions, the user's preferred summary output language, and whether AI summary template auto-detection is enabled.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    },
    {
      "name": "seameet_list_templates",
      "description": "List all available AI summary templates with their slugs, names, descriptions, categories (team/project/sales/hr/education/medical/legal/events), and whether they are specialized (medical/legal templates that auto-append a disclaimer). Use this when the user asks which summary types are supported or when you want to recommend a specific template for a meeting.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    },
    {
      "name": "seameet_regenerate_summary",
      "description": "Regenerate the AI summary for a specific recording using a chosen template. Pass the recording's absolute filePath (same as you would to seameet_get_artifact) and a templateSlug from seameet_list_templates. The regeneration runs the production pipeline and updates the recording's \"summary\" artifact in place; subsequent calls to seameet_get_artifact will return the new summary. Optionally pass customPrompt to override the template's default instructions for this regeneration.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "filePath": {
            "type": "string",
            "description": "Absolute path to the recording file."
          },
          "templateSlug": {
            "type": "string",
            "description": "Slug from seameet_list_templates (e.g. \"soap-note\", \"retro\")."
          },
          "customPrompt": {
            "type": "string",
            "description": "Optional custom prompt that overrides the template's instructions."
          }
        },
        "required": [
          "filePath",
          "templateSlug"
        ]
      }
    },
    {
      "name": "seameet_search_text",
      "description": "Search across all asset bundle text content (summaries, transcriptions, action items). Returns a list of files whose artifact content contains the query string.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Text to search for (case-insensitive substring match)."
          },
          "limit": {
            "type": "number",
            "description": "Maximum number of results to return. Default: 10."
          }
        },
        "required": [
          "query"
        ]
      }
    },
    {
      "name": "seameet_get_live_transcript",
      "description": "Get the live transcript accumulated so far during the current recording session. Returns speaker-labeled segments with timestamps from the Gemini Live transcription. Only available when a recording with live transcription is active. Use this to answer questions about what has been said in the meeting so far.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "lastN": {
            "type": "number",
            "description": "If provided, return only the last N segments instead of the full transcript. Useful for recent context."
          }
        }
      }
    },
    {
      "name": "seameet_recording_status",
      "description": "Get the current recording state -- whether a recording is active, paused, elapsed time, and whether video is included. Use this to check recording progress before a summary is available.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    },
    {
      "name": "seameet_pause_recording",
      "description": "Pause the current audio recording. IMPORTANT: Only microphone/audio-only recordings can be paused. Video (screen capture) recordings cannot be paused -- this tool returns an error if the active recording includes video.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    },
    {
      "name": "seameet_resume_recording",
      "description": "Resume a paused audio recording. Returns an error if no recording is currently paused.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    }
  ]
}
