17.1 / 30
Public leaderboard
Public assessment
RajeevSirohi/mcp-server-terraform (@rajsir/mcp-server-terraform)
What changed in the harness
Selection accuracy 94→98, token cost down 0%, unconfirmed writes 57%→62%.
Category breakdown
Where the score comes from.
Earned points across the four signals Gradable measures. Safety and Legibility are scored out of 30; Economics and Discoverability are scored out of 20.
01Safety
02Legibility
25.5 / 30
03Economics
19.5 / 20
04Discoverability
11.4 / 20
Highest-impact fix
Estimated gain +13 pointsAdd explicit identity and permission preflight tools
Expose machine-readable principal/tenant confirmation and a non-mutating permission check so agents can verify both before destructive actions.
Description evidence
Defects and rewrites.
7 defects found across the exposed tool descriptions. Suggested rewrites make purpose, inputs, boundaries, and returns easier for an agent to understand.
| Tool | Defect types | Suggested rewrite |
|---|---|---|
tf_validate |
no_return_description |
Validate Terraform configuration files in the given directory for syntax and internal consistency, without accessing remote state or APIs. Returns any validation errors or warnings found, indicating whether the configuration is valid. |
tf_preflight |
no_return_description |
Check which cloud providers are used in the Terraform workspace in the given directory and verify authentication status for each. Returns a per-provider report of detected credentials and auth readiness so credential issues can be caught before running plan or apply. |
tf_destroy |
no_return_description |
Destroy all Terraform-managed infrastructure in the workspace. Call without confirmed=true on the first pass to return the destroy plan (what would be deleted); call with confirmed=true after explicit user approval to actually destroy the resources and return the result of the destroy operation. Irreversible — always show the plan first. |
tf_state |
no_return_description |
Manage Terraform state in the workspace using the specified operation. Returns a list of resources in state (list), the attributes of the specified resource (show), or a confirmation of the state change (mv/rm). |
tf_resource |
no_return_description |
Perform resource-level state operations (import, taint, untaint, refresh) on the specified resource address. Returns the outcome of the operation, such as a confirmation that the resource was brought under management, marked, unmarked, or that state was synced with real infrastructure. |
tf_init |
no_return_description |
Initialize the Terraform working directory in the given path, downloading providers and modules and configuring the backend. Returns the initialization output so you can confirm providers and modules installed successfully before running plan or apply. |
tf_workspace |
no_return_description |
Manage Terraform workspaces in the given directory using the specified operation. Returns a list of workspaces with the active one marked (list), the current workspace name (show), or a confirmation that the workspace was switched to or created (select/new). |
Selection evidence
Confusable tool pairs.
8 pairs where similar names or overlapping descriptions may send an agent toward the wrong tool.
| Tool A | Tool B | Confidence | Why they collide |
|---|---|---|---|
tf_state |
tf_workspace |
medium | Tasks phrased as 'show the current state/environment' are ambiguous: tf_state lists/shows resources in the state file while tf_workspace lists/shows environments; both take the same workdir/workspace inputs and expose list/show operations. |
tf_apply |
tf_destroy |
medium | Cleanup tasks are ambiguous: 'remove infrastructure no longer in the config' is apply (its plan deletes out-of-config resources) while 'tear down everything' is destroy; both share the two-step confirmed flow and removal-of-infrastructure language. |
tf_apply |
tf_resource |
medium | 'Sync/reconcile my infrastructure' is ambiguous: tf_apply changes reality to match config, while tf_resource refresh changes state to match reality; both operate on real resources and infrastructure. |
tf_drift |
tf_resource |
medium | Tasks about state-vs-reality are ambiguous: 'check for drift' maps to tf_drift (refresh-only plan) while 'sync state with what's deployed' maps to tf_resource refresh; both tools describe comparing/syncing state against the cloud. |
tf_validate |
tf_plan |
medium | 'Check my Terraform config before deploying' is ambiguous: tf_validate checks syntax/consistency while tf_plan shows the diff and also surfaces config errors; both are read-only pre-apply checks. |
tf_init |
tf_workspace |
low | 'Set up my workspace/project' could pick tf_init (downloads providers/modules) or tf_workspace new/select (creates/switches environments); the word 'workspace' matches one tool while 'set up' matches the other. |
tf_validate |
tf_preflight |
low | A vague 'make sure everything checks out before I run' task could pick tf_validate (config syntax) or tf_preflight (provider auth); both are pre-flight check tools, though their descriptions point to distinct concerns. |
tf_plan |
tf_preflight |
low | 'Verify things are safe before I apply' could pick tf_plan (preview the diff) or tf_preflight (verify credentials/auth); both are read-only preparation steps run before apply. |
Compare the field