SDKMAN! SDK Manager for managing parallel versions of multiple SDKs
18 tools with basic descriptions and parameter schemas present, but significant quality gaps. Tool names follow verb_noun convention (sdk_list_all, sdk_install_version) which is good. However, descriptions are generic and lack actionable context for LLM selection. Parameter descriptions exist but are minimal (e.g., 'Name of the SDK candidate' repeated across 8+ tools). No output schemas documented. Error handling guidance absent. No enum constraints on string parameters like 'mode' (enable/disable) or 'action' (init/install/clear). Missing idempotency hints for destructive operations. Schemas visible in code but lack depth, no min/max bounds, no format specifications, no validation rules stated in descriptions.
Check for available upgrades or upgrade a specific candidate.
Show current versions of all installed SDKs.
Show the current version of a specific SDK candidate.
Edit the SDKMAN configuration.
Flush SDKMAN local state.
Get help about SDKMAN or a specific command.
Get the home directory of a specific version of an SDK candidate.
No output schemas documented. LLMs cannot predict return structure or plan downstream tool chains. E.g., sdk_list_all returns Dict[str, Any] with no field documentation.
String parameters lack enum constraints. 'mode' in sdk_set_offline accepts free-form strings instead of enum ['enable', 'disable']. 'action' in sdk_manage_env should be enum ['init', 'install', 'clear']. LLMs hallucinate invalid values.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | <=2025-11-25 | v2 |
Display the SDKMAN version.
Install a specific version of an SDK candidate.
List all available SDK candidates in SDKMAN.
List all available versions for a specific SDK candidate.
Manage the .sdkmanrc file for the current directory.
Update SDKMAN itself.
Set the default version of an SDK candidate.
Enable or disable offline mode.
Uninstall a specific version of an SDK candidate.
Update SDKMAN candidates.
Use a specific version of an SDK candidate in the current shell.
Destructive operations (sdk_uninstall_version, sdk_flush_state) lack confirmation or dry-run support. No guidance on error recovery or rollback. Agents can irreversibly delete SDKs without safeguards.
Parameter descriptions are generic and repetitive. 'Name of the SDK candidate (e.g., java, gradle, kotlin)' appears in 8+ tools. Descriptions lack context on when to use each tool or what distinguishes them from similar tools.
No error handling guidance. Tools return Dict[str, Any] with no documented error cases, recovery steps, or actionable messages. LLMs cannot distinguish retryable failures from user-fixable issues.