diff options
Diffstat (limited to 'crates/fidget-spinner-cli/src/mcp/catalog.rs')
| -rw-r--r-- | crates/fidget-spinner-cli/src/mcp/catalog.rs | 55 |
1 files changed, 51 insertions, 4 deletions
diff --git a/crates/fidget-spinner-cli/src/mcp/catalog.rs b/crates/fidget-spinner-cli/src/mcp/catalog.rs index d6c8171..e741e09 100644 --- a/crates/fidget-spinner-cli/src/mcp/catalog.rs +++ b/crates/fidget-spinner-cli/src/mcp/catalog.rs @@ -96,8 +96,8 @@ const TOOL_SPECS: &[ToolSpec] = &[ replay: ReplayContract::Convergent, }, ToolSpec { - name: "frontier.brief.update", - description: "Replace or patch the singleton frontier brief.", + name: "frontier.update", + description: "Patch frontier objective and grounding state.", dispatch: DispatchTarget::Worker, replay: ReplayContract::NeverReplay, }, @@ -168,6 +168,12 @@ const TOOL_SPECS: &[ToolSpec] = &[ replay: ReplayContract::NeverReplay, }, ToolSpec { + name: "experiment.nearest", + description: "Find the nearest accepted, kept, rejected, and champion comparators for one slice.", + dispatch: DispatchTarget::Worker, + replay: ReplayContract::Convergent, + }, + ToolSpec { name: "experiment.history", description: "Read the revision history for one experiment.", dispatch: DispatchTarget::Worker, @@ -353,7 +359,7 @@ fn tool_input_schema(name: &str) -> Value { &[("frontier", selector_schema("Frontier UUID or slug."))], &["frontier"], ), - "frontier.brief.update" => object_schema( + "frontier.update" => object_schema( &[ ("frontier", selector_schema("Frontier UUID or slug.")), ( @@ -361,6 +367,10 @@ fn tool_input_schema(name: &str) -> Value { integer_schema("Optimistic concurrency guard."), ), ( + "objective", + string_schema("Optional replacement frontier objective."), + ), + ( "situation", nullable_string_schema("Optional frontier situation text."), ), @@ -369,6 +379,10 @@ fn tool_input_schema(name: &str) -> Value { "unknowns", string_array_schema("Ordered frontier unknowns."), ), + ( + "scoreboard_metric_keys", + string_array_schema("Ordered frontier scoreboard metric keys."), + ), ], &["frontier"], ), @@ -517,6 +531,36 @@ fn tool_input_schema(name: &str) -> Value { "rationale", ], ), + "experiment.nearest" => object_schema( + &[ + ( + "frontier", + selector_schema("Optional frontier UUID or slug."), + ), + ( + "hypothesis", + selector_schema("Optional hypothesis UUID or slug."), + ), + ( + "experiment", + selector_schema("Optional experiment UUID or slug used as an anchor."), + ), + ( + "metric", + string_schema("Optional metric key used to choose the champion."), + ), + ("dimensions", run_dimensions_schema()), + ("tags", string_array_schema("Require all listed tags.")), + ( + "order", + enum_string_schema( + &["asc", "desc"], + "Optional explicit champion ranking direction.", + ), + ), + ], + &[], + ), "artifact.record" => object_schema( &[ ( @@ -631,7 +675,10 @@ fn tool_input_schema(name: &str) -> Value { ), ( "scope", - enum_string_schema(&["live", "visible", "all"], "Registry slice to enumerate."), + enum_string_schema( + &["live", "scoreboard", "visible", "all"], + "Registry slice to enumerate.", + ), ), ], &[], |