- Merged JSON validation functionality from PR branch with enhanced form features from main
- Preserved validateJson method and DynamicJsonFormRef interface for tool validation
- Added support for oneOf schemas, enum dropdowns, and enhanced string field types
- Integrated meta display functionality and resource content props
- Maintained JSON validation before tool execution to prevent invalid data submission
Prevents execution of tools with invalid JSON parameters by validating JSON
syntax before tool execution and showing error UI for invalid input.
- Add validateJson method to DynamicJsonForm via forwardRef
- Add validation check in ToolsTab before tool execution
- Reuse existing JsonEditor error display for consistent UX
Number inputs were immediately converting values to Number() on every
keystroke, which prevented users from typing negative numbers since
the intermediate "-" character cannot be converted to a valid number.
Now the input stores the raw string value and only converts to Number
when the value is non-empty, allowing proper negative number entry.
- Extract tool results rendering into separate ToolResults component
- Hoist checkContentCompatibility function to module level following codebase conventions
- Add ajv@6.12.6 as direct dependency to client package.json
- All tests pass and linting is clean
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove unused catch parameter in ToolsTab.tsx
- Replace 'as any' with @ts-expect-error in test for invalid schema
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Applied consistent formatting to ToolsTab.tsx and schemaUtils.ts
to fix linting issues. No functional changes.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit adds comprehensive support for structured output validation in tool calls,
following the MCP specification for tools with output schemas.
UI Changes:
1. Output Schema Display:
- Added collapsible output schema section in ToolsTab
- Shows output schemas after input fields, before the Run Tool button
- Default view shows 8 lines with scrolling, expandable to full view
- Expand/Collapse button with chevron icons for better UX
2. Structured Content Display:
- New "Structured Content" section when tools return structuredContent
- Shows structured data in a formatted JSON view
- Validation status indicator (green checkmark for valid, red X for errors)
- Detailed validation error messages when content doesn't match schema
3. Unstructured Content Labeling:
- Added "Unstructured Content" heading when both structured and unstructured content exist
- Only shows label when structured content is also present
- Maintains clean UI when only unstructured content exists
4. Compatibility Checking:
- Checks if unstructured content matches structured content (when output schema exists)
- Shows compatibility status with blue (compatible) or yellow (incompatible) indicators
- Detailed messages explain why content doesn't match
- Only runs compatibility check for tools with output schemas
5. Validation Error Handling:
- Shows error when tool with output schema doesn't return structured content
- Clear error messages for schema validation failures
- Maintains proper error state display
Technical Implementation:
- Added schema validation utilities using Ajv (same as SDK)
- Caches compiled validators for performance
- Validates on tool result display, not during the call
- Follows SDK's Client.callTool validation pattern
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>