Keating's web model now receives the full teaching tool surface with proper JSON Schema parameter definitions. The important fix was replacing createSimpleTool, which produced empty properties objects, with createTool registrations that describe each tool's actual arguments.
What Changed
All 19 Keating tools are now available to the web model with schemas it can actually call. Topic-driven tools expose topic, feedback exposes a constrained signal, prompt evaluation requires prompt, and the optional speech path exposes the full keating_voice shape.
| Tool | Parameters
| animate | topic |
| bench | topic (optional) |
| evolve | topic (optional) |
| quiz | topic |
| feedback | signal (up/down/confused), topic |
| policy | none |
| outputs | none |
| learner_state | none |
| auto_improve | topic (optional) |
| improve | action (optional) |
| trace | type (optional) |
| prompt_evolve | name (optional) |
| prompt_eval | prompt |
| timeline | none |
| due | none |
| keating_voice | text, tags, voice, pace, affect |
Why It Matters
Empty tool schemas make the model guess at invisible arguments. With real schemas, the web teacher can reliably choose the right tool and pass valid arguments for lessons, checks, benchmarks, learner feedback, prompt evaluation, due work, timelines, and voice output.
The web build compiles successfully with the new tool definitions.