diff --git a/.changeset/fix-history-adapter-schema.md b/.changeset/fix-history-adapter-schema.md new file mode 100644 index 0000000..239951a --- /dev/null +++ b/.changeset/fix-history-adapter-schema.md @@ -0,0 +1,10 @@ +--- +"@lytics/dev-agent": patch +"@lytics/dev-agent-mcp": patch +--- + +Fix dev_history tool schema for Claude API compatibility + +- Removed `anyOf` from input schema (Claude API doesn't support it at top level) +- Validation for "at least one of query or file required" is still enforced in execute() + diff --git a/packages/mcp-server/src/adapters/__tests__/history-adapter.test.ts b/packages/mcp-server/src/adapters/__tests__/history-adapter.test.ts index 7984c8c..77270a1 100644 --- a/packages/mcp-server/src/adapters/__tests__/history-adapter.test.ts +++ b/packages/mcp-server/src/adapters/__tests__/history-adapter.test.ts @@ -97,10 +97,8 @@ describe('HistoryAdapter', () => { it('should require either query or file', () => { const definition = adapter.getToolDefinition(); - expect(definition.inputSchema.anyOf).toEqual([ - { required: ['query'] }, - { required: ['file'] }, - ]); + // Note: anyOf removed for Claude API compatibility - validation is done in execute() + expect(definition.inputSchema.required).toEqual([]); }); }); diff --git a/packages/mcp-server/src/adapters/built-in/history-adapter.ts b/packages/mcp-server/src/adapters/built-in/history-adapter.ts index 65d77de..14098c5 100644 --- a/packages/mcp-server/src/adapters/built-in/history-adapter.ts +++ b/packages/mcp-server/src/adapters/built-in/history-adapter.ts @@ -110,8 +110,8 @@ export class HistoryAdapter extends ToolAdapter { default: this.config.defaultTokenBudget, }, }, - // At least one of query or file is required - anyOf: [{ required: ['query'] }, { required: ['file'] }], + // Note: At least one of query or file is required (validated in execute) + required: [], }, }; }