Closed
Description
Description
When running the conformance tests we saw that a lot of the tools schemas were missing minimum and maximum bounds when it came to pagination properties.
Specifically, we're looking at:
search_code
:page
andperPage
search_issues
:page
andperPage
search_users
:page
andperPage
inputSchema mismatch for tool "search_repositories":
conformance_test.inputSchema{
Type: "object",
Properties: map[string]any{
"page": map[string]any{"type": string("number"), ...},
- "perPage": map[string]any{
- "description": string("Number of results per page (default: 30, max: 100)"),
- "type": string("number"),
- },
+ "per_page": map[string]any{"description": string("Results per page (max 100)"), "type": string("number")},
"query": map[string]any{"type": string("string"), ...},
},
Required: {"query"},
}
inputSchema mismatch for tool "list_commits":
conformance_test.inputSchema{
Type: "object",
Properties: map[string]any{
...
- "perPage": map[string]any{
- "description": string("Number of results per page (default: 30, max: 100)"),
- "type": string("number"),
- },
+ "per_page": map[string]any{"description": string("Number of records per page"), "type": string("number")},
...
}
inputSchema mismatch for tool "search_code":
conformance_test.inputSchema{
Type: "object",
Properties: map[string]any{
"order": map[string]any{"enum": []any{string("asc"), string("desc")}, "type": string("string"), ...},
"page": map[string]any{
... // 1 ignored entry
- "minimum": float64(1),
"type": string("number"),
},
"per_page": map[string]any{
... // 1 ignored entry
- "maximum": float64(100),
- "minimum": float64(1),
"type": string("number"),
},
"q": map[string]any{"type": string("string"), ...},
},
Required: {"q"},
}
inputSchema mismatch for tool "search_issues":
conformance_test.inputSchema{
Type: "object",
Properties: map[string]any{
"order": map[string]any{"enum": []any{string("asc"), string("desc")}, "type": string("string"), ...},
"page": map[string]any{
... // 1 ignored entry
- "minimum": float64(1),
"type": string("number"),
},
"per_page": map[string]any{
... // 1 ignored entry
- "maximum": float64(100),
- "minimum": float64(1),
"type": string("number"),
},
...
},
Required: {"q"},
}
inputSchema mismatch for tool "search_users":
conformance_test.inputSchema{
Type: "object",
Properties: map[string]any{
"order": map[string]any{"enum": []any{string("asc"), string("desc")}, "type": string("string"), ...},
"page": map[string]any{
... // 1 ignored entry
- "minimum": float64(1),
"type": string("number"),
},
"per_page": map[string]any{
... // 1 ignored entry
- "maximum": float64(100),
- "minimum": float64(1),
"type": string("number"),
},
"q": map[string]any{"type": string("string"), ...},
"sort": map[string]any{"enum": []any{string("followers"), string("repositories"), string("joined")}, "type": string("string"), ...},
},
Required: {"q"},
}
It's not clear to me why search_repositories
and list_commits
have no minimum bounds on page. Maybe an oversight for the anthropic server? However, they also have mismatching cases:
inputSchema mismatch for tool "search_repositories":
conformance_test.inputSchema{
Type: "object",
Properties: map[string]any{
"page": map[string]any{"type": string("number"), ...},
- "perPage": map[string]any{
- "description": string("Number of results per page (default: 30, max: 100)"),
- "type": string("number"),
- },
+ "per_page": map[string]any{"description": string("Results per page (max 100)"), "type": string("number")},
"query": map[string]any{"type": string("string"), ...},
},
Required: {"query"},
}
inputSchema mismatch for tool "list_commits":
conformance_test.inputSchema{
Type: "object",
Properties: map[string]any{
...
- "perPage": map[string]any{
- "description": string("Number of results per page (default: 30, max: 100)"),
- "type": string("number"),
- },
+ "per_page": map[string]any{"description": string("Number of records per page"), "type": string("number")},
...
}
Metadata
Metadata
Assignees
Labels
No labels