Skip to main content
Glama
vulnify

Vulnify MCP

Official

Plan policy changes

plan_policy_changes
Read-onlyIdempotent

Preview policy creates, updates, and deletes in a forced dry run without writing changes; prune marks missing policies for deletion. Requires org-wide LIVE API key and never applies the plan.

Instructions

Diff policy creates, updates, and deletes without writing them (POST /v1/policies/apply). dryRun is forced to true and cannot be turned off. Nothing is stored and no audit entry is written. prune only marks missing policies for deletion in the plan. Requires an org-wide LIVE API key; a TEST key or an agent-bound key is refused with 403. This tool does not apply the plan.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pruneNoWhen true, the plan marks stored policies whose names are missing from policies for deletion. Nothing is deleted.
policiesYesPolicies to diff against the stored set. Each item needs name, action, and decision. Nothing is written.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
dryRunYesAlways true. The plan is not applied.
changesYesCreates, updates, deletes, and unchanged names.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.5

TDQS

A4.7/5.0
Behavior5/5

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

Goes well beyond the annotations: dryRun is forced true and non-negotiable, nothing is stored, no audit entry is written, prune only marks deletions in the plan, and an org-wide LIVE key is required (TEST or agent-bound keys get a 403). This is exactly the operational context an agent needs before calling a policy tool.

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?

Six short sentences, all front-loaded with the highest-value fact first (no writes) and none wasted. The endpoint, side-effect, parameter note, and auth constraint each earn their place.

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 read-only preview tool with an output schema present, the description covers everything left unspecified: safety profile, side effects, parameter caveats, and authentication requirements. An agent has no unanswered question that would cause a wrong call.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real value by clarifying prune's narrow effect and by stating that dryRun is forced and not a user-controllable input. It does not, however, add anything about the nested policy object beyond what the schema already documents.

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 (diff) and precise resource (policy creates, updates, and deletes), and even names the underlying endpoint POST /v1/policies/apply. The phrase 'without writing them' instantly separates it from a mutation tool and from siblings like test_policies or list_policies.

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?

Clearly frames the tool as a preview step ('This tool does not apply the plan'), which tells the agent when it is appropriate. It does not name the sibling that performs the actual apply, so the routing is implied rather than explicit; the auth conditions also function as usage preconditions.

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