avatar-shell is an Electron-based MCP client UI (not a traditional MCP server). It exposes 27 tools via a custom transport layer. Critical deficiencies: (1) Tool descriptions are bilingual but extremely terse (8-25 chars in English), failing the 10-1024 char guideline. E.g., 'Call MCP tools' for callMcpTool, 'Get talk context' for getTalkContext. (2) Input schemas are either missing entirely or severely under-specified. Most tools show only object-type parameters without nested field documentation. E.g., callMcpTool accepts 'params' as type:object with description 'Tool call parameters including callId, name, and input', no schema for nested fields. (3) No output schemas documented anywhere. (4) Naming is inconsistent: camelCase mixing generic verbs (call, get) with overlapping purposes (callMcpTool vs callMcpToolDirect, setAvatarConfig vs updateMutableSetting). (5) No parameter validation constraints, enums, or ranges visible. (6) Destructive tools (deleteAvatarConfig, closeApp) lack confirmation or dry-run capability documentation. (7) Error handling patterns not evident in source. Tool definitions appear to be inferred from TypeScript function signatures rather than explicit MCP schema registration.
新しいアバターを追加する (Add new avatar)
外部からの会話コンテキストを追加する (Add external talk context)
テンプレートIDからデフォルトの名前を計算する (Calculate default name from template ID)
MCPツールを呼び出す (Call MCP tools)
MCPツールを直接呼び出す (Call MCP tools directly)
アプリケーションを終了する (Close application)
アバター設定をコピー(複製)する (Copy avatar configuration)
Tool descriptions uniformly too short (8-28 chars). Rubric minimum is 10 chars, but baseline A+ tools average 194 chars. These descriptions provide insufficient context for LLM tool selection. E.g., 'Call MCP tools' does not explain when to use callMcpTool vs callMcpToolDirect.
Input schemas severely under-specified. Most tools accept complex object parameters (e.g., 'params' in callMcpTool, 'conf' in setAvatarConfig, 'setting' in setNames) but nested field structure is not documented in the schema. Rubric requires parameter descriptions for every input; here only top-level object types are visible.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 37 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | 1.25.3+ | v1 |
アバター設定を削除する (Delete avatar configuration)
アバター設定をエクスポートする (Export avatar configuration)
システム設定をエクスポートする (Export system configuration)
指定されたIDのアバター設定を取得する (Get avatar configuration)
利用可能なアバター設定の一覧を取得する (Get list of available avatar configurations)
MCP更新用のアバター設定を取得する (Get avatar configuration for MCP update)
現在動作しているアバターの一覧を取得する (Get list of running avatars)
MCPサーバー情報のリストを取得する (Get list of MCP server information)
システム設定を取得する (Get system configuration)
会話コンテキストを取得する (Get talk context)
アバター設定をインポートする (Import avatar configuration)
システム設定をインポートする (Import system configuration)
ウィンドウを最小化する (Minimize window)
MCPリソースを読み込む (Read MCP resources)
アバター設定を保存する (Save avatar configuration)
ユーザー名とアバター名を設定する (Set user name and avatar name)
システム設定を保存する (Save system configuration)
アバターを停止する (Stop avatar)
ウィンドウの最大化/解除を切り替える (Toggle window maximize)
変更可能なシステム設定を更新する (Update mutable system settings)
No output schemas documented. LLMs cannot know what fields to expect in responses. Rubric baseline: 100% of A+ tools have documented return types. No evidence of structured response documentation in the codebase.
Naming inconsistency and lack of clarity. Overlapping tool pairs (callMcpTool vs callMcpToolDirect, setAvatarConfig vs updateMutableSetting) do not clearly distinguish responsibilities. LLM will struggle to pick the right one without much longer descriptions.
Destructive tools (deleteAvatarConfig, closeApp) lack confirmation or dry-run capability. No evidence of error handling guidance or recovery patterns. Rubric requires: 'Irreversible operations should support a dry-run or confirmation step.'
No parameter constraints visible. Tools accept free-form strings (templateId, name, url) with no enums, regex patterns, or validation hints. E.g., addAvatar accepts 'templateId' as a string with no explanation of valid values or format.
Tool definitions appear inferred from function signatures rather than explicitly registered with MCP schema. Source shows function names and brief docstrings but no explicit MCP ToolDefinition registration with names, descriptions, inputSchema properties. Per hard scoring rule: 'If you cannot see the actual tool definition in the source (only inferred): cap that tool's overall at 50.' This applies to all 27 tools.