Task
Build `tool_use_with_validation(tool_def, args)` that mirrors the safety check senior engineers wrap around every tool call:
1. Read `tool_def["input_schema"]` (JSON Schema dict with `properties` and `required`).
2. If any `required` key is missing from `args` β return `{"valid": False, "error": "missing:<key>"}`.
3. For each arg present, if the property declares a `type`, check it matches (`"string"`βstr, `"integer"`βint, `"number"`βfloat, `"boolean"`βbool). On mismatch β `{"valid": False, "error": "type:<key>"}`.
4. Otherwise β `{"valid": True, "result": "called <name> with <sorted args>"}`.
The harness runs 3 scenarios: a clean call, a missing required field, and a type mismatch.