@@ -633,16 +633,19 @@ static const tool_def_t TOOLS[] = {
633633 "use scopes before negative/exhaustive claims because fully skipped files cannot appear in "
634634 "normal graph results. Returns coverage status separately from filesystem metadata freshness, "
635635 "plus structured parse-error ranges and direct-source fallback actions. The signal is "
636- "best-effort: indexed_no_recorded_gap is not a completeness guarantee." ,
636+ "best-effort: indexed_no_recorded_gap is not a completeness guarantee. At least one of "
637+ "'paths' or 'scopes' is required; the call is rejected at runtime if both are omitted." ,
637638 "{\"type\":\"object\",\"properties\":{"
638639 "\"project\":{\"type\":\"string\"},"
639640 "\"paths\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"maxItems\":128,"
640- "\"description\":\"Repository-relative files to check exactly.\"},"
641+ "\"description\":\"Repository-relative files to check exactly. Required if 'scopes' is "
642+ "omitted.\"},"
641643 "\"scopes\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"maxItems\":32,"
642- "\"description\":\"Repository-relative path prefixes; use . for the project root.\"},"
644+ "\"description\":\"Repository-relative path prefixes; use . for the project root. Required "
645+ "if 'paths' is omitted.\"},"
643646 "\"scope_limit\":{\"type\":\"integer\",\"default\":200,\"minimum\":1,\"maximum\":1000},"
644647 "\"scope_offset\":{\"type\":\"integer\",\"default\":0,\"minimum\":0}},"
645- "\"required\":[\"project\"],\"anyOf\":[{\"required\":[\"paths\"]},{\"required\":[\"scopes\"]}] "
648+ "\"required\":[\"project\"]"
646649 "}" },
647650
648651 {"detect_changes" , "Detect changes" ,
0 commit comments