diff --git a/api/src/org/labkey/api/mcp/AbstractAgentAction.java b/api/src/org/labkey/api/mcp/AbstractAgentAction.java index 102982a6963..1c5f2932469 100644 --- a/api/src/org/labkey/api/mcp/AbstractAgentAction.java +++ b/api/src/org/labkey/api/mcp/AbstractAgentAction.java @@ -83,7 +83,7 @@ protected String handleEscape(String prompt) @Override public void validateForm(F form, Errors errors) { - if (!McpService.get().isAIFeaturesEnabled()) + if (!McpService.get().isAIFeaturesReady()) { errors.reject(ERROR_GENERIC, "Agent actions are not available."); return; diff --git a/api/src/org/labkey/api/mcp/McpService.java b/api/src/org/labkey/api/mcp/McpService.java index ff1b009feac..704de9da757 100644 --- a/api/src/org/labkey/api/mcp/McpService.java +++ b/api/src/org/labkey/api/mcp/McpService.java @@ -152,10 +152,12 @@ default boolean isAIFeaturesEnabled() boolean isReady(); - // Convenience for in-product AI features: the AI feature flag is on AND the service has started. + boolean isModelReady(); + + // Convenience for in-product AI features: the AI feature flag is on, the service is ready, and the model is ready. default boolean isAIFeaturesReady() { - return isAIFeaturesEnabled() && isReady(); + return isAIFeaturesEnabled() && isReady() && isModelReady(); } // Register MCPs in Module.startup() diff --git a/api/src/org/labkey/api/mcp/NoopMcpService.java b/api/src/org/labkey/api/mcp/NoopMcpService.java index 1923c770ccd..5255b4eb8a4 100644 --- a/api/src/org/labkey/api/mcp/NoopMcpService.java +++ b/api/src/org/labkey/api/mcp/NoopMcpService.java @@ -54,6 +54,12 @@ public boolean isReady() return false; } + @Override + public boolean isModelReady() + { + return false; + } + @Override public void registerTools(@NotNull List tools, McpImpl mcp) {