WinScript is a scripting language for automating Windows applications. Exposes WinScript as 5 tools that any MCP client (Claude Desktop, etc.) can call to automate Windows applications.
WinScript MCP server has 5 tools with reasonable naming (verb-first: run_, list_, get_, validate_) and descriptions present for all tools. However, input schemas lack proper JSON Schema type definitions, parameters are documented in descriptions but not formally typed in the schema. Output schemas are not documented. Error handling is minimal (generic 'ERROR:' prefix). Tool descriptions are adequate (100-200 chars) but lack actionable guidance for LLM selection. No parameter constraints (enums, ranges) are declared. The server exposes code execution (run_winscript, run_winscript_file) with WRITE risk but no dry-run or confirmation pattern.
Show all commands and properties available for a given application. Args: app_name: The app name (e.g. "Chrome", "Excel"). Returns a formatted reference of all objects, commands, and properties defined in the app's .wsdict file.
List all discoverable WinScript application dictionaries (.wsdict files). Returns a formatted list showing each app's name, backend type, and description.
Execute WinScript source code and return the result. The code should use 'tell AppName ... end tell' blocks to target applications. Use 'return <expr>' to produce a result. Example: tell Chrome navigate to "https://github.com" wait until loaded return title of active tab end tell Returns the script's return value as a string, or an error message.
Execute a WinScript file (.ws) from disk. Args: path: Absolute or relative path to a .ws file. Returns the script's return value as a string, or an error message.
Parse-check a WinScript script without executing it. Returns "VALID" if the script parses successfully, or "INVALID: <error details>" if there are syntax errors.
Input schemas lack JSON Schema type definitions. Parameters documented in descriptions only; no 'type', 'minLength', 'maxLength', 'enum', or 'pattern' constraints visible in schema objects.
Output schemas not documented. Tools return strings or formatted lists, but LLMs cannot plan downstream calls or extract structured data without knowing the response format.
Code execution tools (run_winscript, run_winscript_file) marked WRITE risk but lack confirmation/dry-run pattern. Agents can execute arbitrary WinScript without preview or rollback.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
Error handling returns generic 'ERROR: <exception>' strings. No recovery guidance, categorization (retryable vs fatal), or actionable next steps for LLM.
Parameter 'app_name' in get_app_commands accepts free-form strings with no enum of valid app names. Should return list of available apps or validate against known dictionaries.