Skip to main content
Glama

kill_states

Destructive

Flush pf state-table entries to drop tracked connections, optionally scoped to one source IP. Preview with dry_run before clearing states.

Instructions

[WRITE][risk=medium] Flush pf state-table entries (optionally one source IP).

Drops tracked connections; they re-establish on the next packet. This includes THIS tool's own connection state, so the call may appear to fail even though the flush ran — that is a lost response, not a lockout, and a blind retry is the wrong reaction. Access is not lost: the permitting rule is untouched. Pass dry_run=True to preview.

Args: filter_ip: Optional source IP to scope the flush to (blank = all states). dry_run: If True, preview without flushing. target: Firewall target name from config; omit for the default.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
targetNo
dry_runNo
filter_ipNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.8.0

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations (readOnlyHint=false, destructiveHint=true, idempotentHint=false) by disclosing the self-referential failure mode: the flush also kills this tool's own connection, so the call may look like it failed when it actually succeeded, and a blind retry is the wrong reaction. It also reassures that access is not lost because the permitting rule is untouched — exactly the kind of context an agent cannot get from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the critical [WRITE][risk=medium] tag and the core action, then devotes a short paragraph to the counterintuitive failure behavior, then the args. No sentence is filler; the ordering matches what an agent needs to decide whether to call.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, non-idempotent mutation with no output schema, the description covers effect, side effects, failure semantics, safety of access, preview capability, and every parameter. An agent has everything needed to invoke it correctly and interpret an ambiguous result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema description coverage at 0%, the description carries the full burden and documents all three parameters: filter_ip as an optional source IP (blank = all states), dry_run as preview-only, and target as a firewall name from config with a stated default. Meaning is added beyond the bare property titles.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Flush pf state-table entries (optionally one source IP).' This is clearly distinguishable from read-oriented siblings such as states_table or rule_states, and the parenthetical scope qualifier removes ambiguity about breadth.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description supplies clear operational context ('Drops tracked connections; they re-establish on the next packet') and directs the agent to 'Pass dry_run=True to preview', which is actionable guidance. It stops short of explicitly naming the alternative (e.g., inspect via states_table first) or stating when-not to use it, so it falls just below the top tier.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.