Some LLMs serialize array/object values as JSON strings when the schema
uses anyOf/oneOf with mixed types (e.g., Python's `list[str] | None`).
The model returns '["url"]' (a string) instead of ["url"] (an array),
causing Ajv to reject otherwise valid input.
Add fixStringifiedJsonValues() coercion — same pattern as the existing
fixBooleanValues() — that parses stringified arrays/objects back to their
intended type when the schema expects a non-string type.
- Add Ajv2020 validator to support draft-2020-12 schemas used by playwright-mcp
- Auto-select validator based on $schema field
- Gracefully skip validation when schema compilation fails
- Add comprehensive tests for JSON Schema version support
Reference: gemini-cli implementation pattern
Self-hosted LLMs sometimes return "true"/"false" strings instead of
actual boolean values for tool parameters like `is_background`. This
causes schema validation to fail with type errors.
Fixes#1267