To your question: asserting on the parsed object is where this kind of drop hides. One more layer that would have caught it is typing the outbound tool with the provider SDK's type instead of reading it through Record<string, unknown>, since the cast erases the shape and the compiler cannot see a missing type or function key. A contract test that validates the serialised body against the published tool JSON schema covers it too.