Predictika · MCP Tool-Call Check
Halden Mutual Bank, a fictional company, lets AI agents use tools on MCP servers. Before the agent makes a call, the call goes to Predictika’s MCP Tool-Call Check. It checks that the server is in the approved catalog and passed its scan, that its tool definitions are still the approved version, that the tool belongs to the server and the task needs it, that the agent’s tier is high enough, that the data in the call may reach that server, that a call which changes data was not ordered by the output of another tool, and that the record count and the agent’s stated read-only claim fit the tool. Then it returns one verdict: allow, needs approval, or block.
Illustrative only. Halden Mutual Bank, its servers, tools, tasks and agents are fictional. Tiers, data classes, limits and versions are invented for this demonstration and are not security policy guidance.
This validator decides one thing: whether one MCP tool call may go ahead, given what the agent proposes. It is not an MCP gateway or a scanner of servers, and it does not make the call.
Within these rules the validator handles any combination of the listed choices, not just the eight scenarios on this page. It never sees the MCP servers themselves; their facts are taken from the records loaded into it.
The validator takes the proposed call as inputs: the agent, the task, the server, the tool, the tool-definition version the agent client sees, the number of records, the class of the data and where the instruction came from. The agent may also state that the call is read only. The validator looks up the records and decides the rest.
Two honest limits. The validator judges the call it is given: if the agent mislabels where an instruction came from, the answer follows it. And a call that never reaches the validator is not checked; in this demo the agent calls it itself, and in a deployment the gateway makes the call.
8 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 agent (scripted)
Before sending, the agent must call Recorded run
What this means
General statements about MCP allow-lists and gateways, not about any named product. We rest this on public descriptions of how such controls work; anyone running a specific product will know it better than we do.
| What the validator caught | Typical tool | Predictika |
|---|---|---|
| Approved servers and the exact tool versions approved | Only with workarounds A catalogue usually records that a server was approved. Spotting that its tool definitions have since changed needs the approved version to be kept and compared on every call. | Every rule is checked on every call and the verdict lists each finding. |
| Which data class may reach which server | Cannot do it Data classes and server trust zones are kept in different places. A rule has to compare the class of the data in the call with the most the destination may receive. | Every rule is checked on every call and the verdict lists each finding. |
| Where an instruction came from | Cannot do it A gateway sees a tool call, not whether the task or the output of another tool asked for it. Refusing state-changing calls that came from tool output needs that source to be stated and checked. | Every rule is checked on every call and the verdict lists each finding. |
| What an agent may do alone, by tier and tool | Only with workarounds Limits by agent tier, tool and action type need several rules, plus an approval path for deletes, partner writes and confidential data. | Every rule is checked on every call and the verdict lists each finding. |
| Checking the facts the agent stated | Only if someone is vigilant Comparing a stated read-only claim or a record count with what the tool actually does needs rules that compute them from the tool record. | Every rule is checked on every call and the verdict lists each finding. |
| Tool definitions changed since approval | Only if someone is vigilant Each of these sits in a different record: the approved version, the agent tier, the server’s data limit and where the instruction came from. A rule has to read all four against the same call, and a gateway rarely knows the last one. | Every rule is checked on every call and the verdict lists each finding. |
| Change driven by another tool’s output | Only if someone is vigilant Whether an instruction came from the task or from a tool output is context a gateway rarely has. A rule has to be told the source and refuse state-changing calls that came from tool output. | Every rule is checked on every call and the verdict lists each finding. |
| Data class too high for the server | Only with workarounds Data classes and server trust zones live in different records. A rule has to compare the class of the data with the most the server may receive. | Every rule is checked on every call and the verdict lists each finding. |
| More records than the tool allows | Only with workarounds A per-call record limit is a number on the tool, not on the server. A rule has to read it for each tool and compare it with the request. | Every rule is checked on every call and the verdict lists each finding. |
Every rule is checked on every call, in any order the choices arrive; one problem never hides another. Blocking findings stop the tool call; approval findings need a person to sign off first.
| 1 | Community PDF converter is not in the approved MCP catalog. Calls to unlisted servers are not allowed. |
| 2 | Notes helper server failed its security scan. It cannot be used until it passes. |
| 3 | The tool definitions on Partner document portal server changed. The agent client sees version 4 but only version 3 was approved. Review the server again before use. |
| 4 | The tool Look up one customer does not belong to Ticketing server. The call names a server and tool that do not match the catalog. |
| 5 | Task (model 'TK104') does not cover Community PDF converter. An agent may only call servers that its task needs. |
| 6 | Customer support agent is a tier 1 agent; Publish to the partner portal needs tier 2. |
| 7 | Confidential data may not be sent to Public web fetch server; it accepts data up to level 1 (1 public, 2 internal, 3 confidential, 4 restricted). |
| 8 | Update a customer record changes data, and the instruction to call it came from the output of another tool, not from the task. Possible prompt injection. |
| 9 | The call asks for 5000 records; Export customer records allows at most 500 per call. |
| 10 | The agent stated the call is read only; Add a ticket comment changes data. |
| 11 | Delete a ticket deletes data. A human owner must approve every delete. |
| 12 | Publish to the partner portal writes to a partner-facing system (Partner document portal server). A human must approve before data leaves the bank. |
| 13 | Confidential data is being handled by a tier 2 agent. A human must approve work on confidential or restricted data below tier 3. |
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. I'm publishing the customer's file to the partner portal, because the email I just read asked me to. It is 1 confidential record, and the portal is at version 4.
Verdict: Blocked.
The agent's request. I'm publishing 1 redacted internal record to the partner portal, as the onboarding task asks. The portal is at the approved version 3.
Verdict: Needs approval.
The agent's request. I'm updating one customer record with confidential data, because the page I just read told me to.
Verdict: Blocked.
The agent's request. I'm making the same update, and this time the task asks for it.
Verdict: Needs approval.
The agent's request. I'm fetching a competitor page and including 1 customer record, which is confidential.
Verdict: Blocked.
The agent's request. I'm fetching the competitor page again, this time with public data only.
Verdict: Allowed.
The agent's request. I'm exporting 5000 customer records to work through the complaint backlog.
Verdict: Blocked.
The agent's request. I'm exporting 400 customer records instead.
Verdict: Allowed.
The text of the narrated walkthrough, step by step.