Skip to content

Commit 40192f5

Browse files
committed
fix(mcp): remove anyOf from dev_history schema for Claude API compatibility
Claude's API doesn't support oneOf/allOf/anyOf at the top level of input schemas. The validation is still enforced in the execute() method.
1 parent 546b2fb commit 40192f5

File tree

3 files changed

+14
-6
lines changed

3 files changed

+14
-6
lines changed
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
"@lytics/dev-agent": patch
3+
"@lytics/dev-agent-mcp": patch
4+
---
5+
6+
Fix dev_history tool schema for Claude API compatibility
7+
8+
- Removed `anyOf` from input schema (Claude API doesn't support it at top level)
9+
- Validation for "at least one of query or file required" is still enforced in execute()
10+

packages/mcp-server/src/adapters/__tests__/history-adapter.test.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -97,10 +97,8 @@ describe('HistoryAdapter', () => {
9797
it('should require either query or file', () => {
9898
const definition = adapter.getToolDefinition();
9999

100-
expect(definition.inputSchema.anyOf).toEqual([
101-
{ required: ['query'] },
102-
{ required: ['file'] },
103-
]);
100+
// Note: anyOf removed for Claude API compatibility - validation is done in execute()
101+
expect(definition.inputSchema.required).toEqual([]);
104102
});
105103
});
106104

packages/mcp-server/src/adapters/built-in/history-adapter.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,8 @@ export class HistoryAdapter extends ToolAdapter {
110110
default: this.config.defaultTokenBudget,
111111
},
112112
},
113-
// At least one of query or file is required
114-
anyOf: [{ required: ['query'] }, { required: ['file'] }],
113+
// Note: At least one of query or file is required (validated in execute)
114+
required: [],
115115
},
116116
};
117117
}

0 commit comments

Comments
 (0)