Delete an SSH key
delete_ssh_keyRemoves a key from the account. Machines already deployed with it keep it; only future deployments change. Scope: sshkeys.write.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Key id from list_ssh_keys. |
delete_ssh_keyRemoves a key from the account. Machines already deployed with it keep it; only future deployments change. Scope: sshkeys.write.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Key id from list_ssh_keys. |
Changes observed during successful MCP inspections.
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds genuinely new context: existing deployments retain the key and only future deployments are affected, plus the required sshkeys.write scope. It doesn't state behavior on an unknown key id, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero filler, with the core action front-loaded and the consequence of deletion stated immediately after.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive tool with no output schema, the description plus annotations give an agent enough to call it safely and understand the blast radius. Error semantics for a nonexistent key are the only notable gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the 'key' parameter is documented as 'Key id from list_ssh_keys' with an integer-or-string union. The description adds nothing about the parameter, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Removes a key from the account'), which cleanly separates it from add_ssh_key and list_ssh_keys in the sibling set. It doesn't explicitly name those alternatives, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the verb – an agent can infer you call this to revoke a key, but there is no explicit when-to-use, no mention of prerequisites such as confirming the key is not the last admin key, and no named alternative for rotating keys (add_ssh_key).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Add one secure layer between your agents and this server.