Predictika · NetApp ONTAP MCP server · AI storage agents
An AI agent connected to NetApp's ONTAP MCP server can create and delete volumes, change snapshot policies, write NFS export rules and manage SnapMirror relationships. Before each write call runs, the agent sends it to Predictika, which checks it against the customer's own storage policies and the state of the target, and returns a verdict (allow, needs approval or block), every reason, and the same answer on every call.
Source and independence. The tool names and parameters come from NetApp's public ONTAP MCP documentation (tools and examples; source on GitHub). The rules are example policies of a fictional customer, not NetApp rules, and the volumes and SVMs are that customer's inventory, supplied by the customer's own system. NetApp's blog Trust, but verify: Why AI agents need Zero Trust infrastructure argues that agents should run with least privilege and that sensitive actions need independent approval; this page shows one way to enforce that kind of policy. NetApp is not involved in this demonstration and has not endorsed it.
This validator handles any call to these ONTAP MCP tools against this inventory — not just the scenarios shown below.
Not covered: NetApp's own access controls (ONTAP roles and the server's read-only mode, described on NetApp's prepare ONTAP page, still apply and are complementary), real inventory feeds, and tools not listed above.
9 scenarios in 4 groups · each group runs from the agent’s first attempt to the outcome · click one to switch
Illustrative agent statement. The validator receives the structured request below.
Proposing agent: AI storage agent (scripted)
Before sending, the agent must call Recorded run
What this means
Our assessment of what ONTAP roles and the MCP server's read-only mode, which grant or withhold whole commands, do with the same cases. It is a judgment about fit, not a claim about every setup, and those controls remain worth using alongside the validator.
| What the validator caught | Role-based access alone | Predictika |
|---|---|---|
| Delete refused only when the volume is a SnapMirror source or holds regulated data | Only with workarounds A role grants delete_volume or withholds it; whether this volume is a replication source is state of the target, not part of the role. | The target's state is looked up on every call and the reason is returned. |
| Export rule open to 0.0.0.0/0, or read-write any for anything but one host | Only with workarounds A role controls which commands a user may run, not which parameter values a call may carry. | The parameters of each call are checked, and both problems come back together. |
| New or grown volume larger than the SVM quota left | Only with workarounds The quota left is the customer's own figure, outside the role. | Compared with the call on every request. |
| Hold a call for a person: shorten retention on a protected volume, delete a production volume | Only with workarounds A role allows or denies. Holding a call for a person, with the reason, is a third outcome it does not give. | Allow, needs approval and block are three verdicts of the same check. |
| Every reason in one answer | Only with care A denial from a role typically stops at the first refusal. | All findings come back together, whatever order the choices arrived in. |
These are the example customer policies at work, recorded from the test cases. Every policy is checked on every call, in any order the choices arrive; one problem never hides another. A block stops the call; an approval holds it for a person.
| 1 | Block: the create_volume tool needs an SVM to create the volume in; vol_media is an existing volume. |
| 2 | Block: the delete_volume tool acts on an existing volume; svm_dev is an SVM. |
| 3 | Block: the update_volume tool call is missing a parameter it needs: a new size. |
| 4 | Block: a new volume of 800 GiB is more than the 500 GiB of provisioning quota left on svm_dev. |
| 5 | Block: growing vol_media to 3,000 GiB needs more than the 2,000 GiB of provisioning quota left on svm_corp. |
| 6 | Block: vol_orders is the source of an active SnapMirror relationship; the agent role may not delete it. |
| 7 | Block: vol_orders holds regulated data; the agent role may not delete it. |
| 8 | Block: vol_ledger holds regulated data; the agent role may not delete it. |
| 9 | Block: the agent role may not delete a SnapMirror relationship; that action is for people only. |
| 10 | Block: the client match 0.0.0.0/0 opens the export to every host; export rules must name a subnet or a single host. |
| 11 | Block: read-write access with the rule any is allowed only for a single named host. |
| 12 | Block: vol_homes is protected; snapshot retention cannot go below 7 snapshots, and 5 was requested. |
| 13 | Approval: shortening snapshot retention on protected volume vol_homes from 14 to 10 snapshots needs a change approval. |
| 14 | Approval: deleting production volume vol_media needs a change approval. |
| 15 | Approval: shrinking production volume vol_media from 600 GiB to 300 GiB needs a change approval. |
| 16 | Approval: deleting a snapshot on protected volume vol_orders needs a change approval. |
| 17 | Approval: restoring production volume vol_media from a snapshot overwrites live data and needs a change approval. |
| 18 | Approval: breaking the SnapMirror relationship of vol_homes needs a change approval. |
The recorded result of the validator for each scenario on this page: the request the AI agent sent, the verdict, and every finding, in the order they appear above.
The agent's request. Please add an NFS export rule to vol_media in svm_corp for the analytics team: client match 0.0.0.0/0, read-only rule any, read-write rule any. It is ready to run.
Verdict: Blocked.
The agent's request. Please add an NFS export rule to vol_media in svm_corp for the analytics team: client match 10.20.0.0/16, read-only rule any, read-write rule any. It is ready to run.
Verdict: Blocked.
The agent's request. Please add an NFS export rule to vol_media in svm_corp for the analytics team: client match 10.20.4.7, read-only rule any, read-write rule any. It is ready to run.
Verdict: Allowed.
The agent's request. Please create a new 800 GiB volume on the svm_dev SVM for the ETL team. It is ready to run.
Verdict: Blocked.
The agent's request. Please create a new 300 GiB volume on the svm_dev SVM for the ETL team. It is ready to run.
Verdict: Allowed.
The agent's request. Please delete the volume vol_orders to free up space. It is ready to run.
Verdict: Blocked.
The agent's request. Please delete the volume vol_etl_tmp to free up space. It is ready to run.
Verdict: Allowed.
The agent's request. Please change the snapshot policy for vol_homes to keep 10 snapshots instead of 14. It is ready to run.
Verdict: Needs approval.
The agent's request. Please change the snapshot policy for vol_homes to keep 10 snapshots instead of 14. The change approval is on file. It is ready to run.
Verdict: Allowed.
The text of the narrated walkthrough, step by step.