Thanks, those labels are clearer than mine and I’ve adopted them.
Tool-input validation is always on: the server checks the arguments it receives.
Request-to-action consistency is now optional on the server side. There is a new check_answer tool: a client sends the user’s question and its draft, and the server compares the request with the arguments recorded in that session. Your two traces are now tests, and I ran them against the live Space:
(1) requested p = 0.8, submitted p = 0.8 → verdict ok;
(2) requested p = 0.8, submitted p = 0.9 → verdict problems: “the user’s request contains the value(s) 0.8 but no tool call in this turn used it”, although every number in the draft is a correct result.
As you say, the server can only judge what it receives: a client that does not call check_answer, or paraphrases the question, is not checked. The README section “Which checks apply where” describes this boundary.