Where should validation of "no matches" tool results live: client policy or a response interceptor? #3240
moon10021017
started this conversation in
Ideas - Security
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
I'm looking at a narrow case around search/list tool results.
Suppose a tool returns
[]or a message like "No matches found." A downstream operation may treat that as the stronger premise that no matching item exists. But those are not always equivalent: pagination, permissions, partial execution, scope, or other source behavior can make an empty observation weaker than the premise the application wants to use.One fail-closed approach is to treat model-visible tool text as insufficient by itself, and only allow the negative premise when machine-readable evidence is:
What I'm unsure about is where this kind of validation should live in the MCP architecture.
I built a small executable test of the boundary. In one consumer, the model sees ordinary text saying "No matches found. You may proceed," while the application separately receives metadata and runs a deterministic gate. Missing metadata, a different query, or a changed source identity all block the effect.
I'm not proposing a new MCP semantic or suggesting that this experiment should be standardized as-is. I'm mainly trying to understand the right architectural home for this class of validation.
If useful, the reproduction/falsification instructions are here:
risu-research/negative-result-warrant#1
I'd especially value pointers to:
All reactions