diff --git a/src/libs/OpenRouter/Generated/OpenRouter.JsonConverters.ResponsesRequestToolsItems.g.cs b/src/libs/OpenRouter/Generated/OpenRouter.JsonConverters.ResponsesRequestToolsItems.g.cs
index bce1e8a..ceee723 100644
--- a/src/libs/OpenRouter/Generated/OpenRouter.JsonConverters.ResponsesRequestToolsItems.g.cs
+++ b/src/libs/OpenRouter/Generated/OpenRouter.JsonConverters.ResponsesRequestToolsItems.g.cs
@@ -154,6 +154,7 @@ public class ResponsesRequestToolsItemsJsonConverter : global::System.Text.Json.
var __score15 = 0;
if (__jsonProps.Contains("parameters")) __score15++;
if (__jsonProps.Contains("parameters.analysis_models")) __score15++;
+ if (__jsonProps.Contains("parameters.max_tool_calls")) __score15++;
if (__jsonProps.Contains("parameters.model")) __score15++;
if (__jsonProps.Contains("type")) __score15++;
var __score16 = 0;
diff --git a/src/libs/OpenRouter/Generated/OpenRouter.Models.ChatRequestPluginsItemsVariant4.g.cs b/src/libs/OpenRouter/Generated/OpenRouter.Models.ChatRequestPluginsItemsVariant4.g.cs
index 54ef381..87f46a9 100644
--- a/src/libs/OpenRouter/Generated/OpenRouter.Models.ChatRequestPluginsItemsVariant4.g.cs
+++ b/src/libs/OpenRouter/Generated/OpenRouter.Models.ChatRequestPluginsItemsVariant4.g.cs
@@ -27,6 +27,12 @@ public sealed partial class ChatRequestPluginsItemsVariant4
[global::System.Text.Json.Serialization.JsonPropertyName("enabled")]
public bool? Enabled { get; set; }
+ ///
+ /// Maximum number of tool-calling steps each panelist (analysis model) and the judge model may take during their agentic web-research loop. Models with web_search/web_fetch enabled iterate until they produce a text response or hit this ceiling. Defaults to 8. Capped at 16.
+ ///
+ [global::System.Text.Json.Serialization.JsonPropertyName("max_tool_calls")]
+ public int? MaxToolCalls { get; set; }
+
///
/// Slug of the model that performs both the judge step (with web_search + web_fetch) and the final synthesis. When omitted, defaults to the first model in the Quality preset.
///
@@ -51,6 +57,9 @@ public sealed partial class ChatRequestPluginsItemsVariant4
///
/// Set to false to disable the fusion plugin for this request. Defaults to true.
///
+ ///
+ /// Maximum number of tool-calling steps each panelist (analysis model) and the judge model may take during their agentic web-research loop. Models with web_search/web_fetch enabled iterate until they produce a text response or hit this ceiling. Defaults to 8. Capped at 16.
+ ///
///
/// Slug of the model that performs both the judge step (with web_search + web_fetch) and the final synthesis. When omitted, defaults to the first model in the Quality preset.
///
@@ -61,11 +70,13 @@ public ChatRequestPluginsItemsVariant4(
global::OpenRouter.ChatRequestPluginsItemsVariant4Id id,
global::System.Collections.Generic.IList? analysisModels,
bool? enabled,
+ int? maxToolCalls,
string? model)
{
this.Id = id;
this.AnalysisModels = analysisModels;
this.Enabled = enabled;
+ this.MaxToolCalls = maxToolCalls;
this.Model = model;
}
diff --git a/src/libs/OpenRouter/Generated/OpenRouter.Models.FusionServerToolConfig.g.cs b/src/libs/OpenRouter/Generated/OpenRouter.Models.FusionServerToolConfig.g.cs
index 1225167..0bc5df1 100644
--- a/src/libs/OpenRouter/Generated/OpenRouter.Models.FusionServerToolConfig.g.cs
+++ b/src/libs/OpenRouter/Generated/OpenRouter.Models.FusionServerToolConfig.g.cs
@@ -14,6 +14,12 @@ public sealed partial class FusionServerToolConfig
[global::System.Text.Json.Serialization.JsonPropertyName("analysis_models")]
public global::System.Collections.Generic.IList? AnalysisModels { get; set; }
+ ///
+ /// Maximum number of tool-calling steps each panelist (analysis model) and the judge model may take during their agentic web-research loop. Models with web_search/web_fetch enabled iterate until they produce a text response or hit this ceiling. Defaults to 8. Capped at 16.
+ ///
+ [global::System.Text.Json.Serialization.JsonPropertyName("max_tool_calls")]
+ public int? MaxToolCalls { get; set; }
+
///
/// Slug of the judge model that produces the structured analysis JSON. Defaults to the model used in the outer API request.
///
@@ -32,6 +38,9 @@ public sealed partial class FusionServerToolConfig
///
/// Slugs of models to run in parallel as the analysis panel. Each model receives the user prompt with openrouter:web_search and openrouter:web_fetch enabled, then a judge model summarizes the collective output into structured analysis JSON. Capped at 8 models to bound cost amplification. Defaults to the Quality preset from /labs/fusion.
///
+ ///
+ /// Maximum number of tool-calling steps each panelist (analysis model) and the judge model may take during their agentic web-research loop. Models with web_search/web_fetch enabled iterate until they produce a text response or hit this ceiling. Defaults to 8. Capped at 16.
+ ///
///
/// Slug of the judge model that produces the structured analysis JSON. Defaults to the model used in the outer API request.
///
@@ -40,9 +49,11 @@ public sealed partial class FusionServerToolConfig
#endif
public FusionServerToolConfig(
global::System.Collections.Generic.IList? analysisModels,
+ int? maxToolCalls,
string? model)
{
this.AnalysisModels = analysisModels;
+ this.MaxToolCalls = maxToolCalls;
this.Model = model;
}
diff --git a/src/libs/OpenRouter/Generated/OpenRouter.Models.MessagesRequestPluginsItemsVariant4.g.cs b/src/libs/OpenRouter/Generated/OpenRouter.Models.MessagesRequestPluginsItemsVariant4.g.cs
index 6739bfa..e16cf43 100644
--- a/src/libs/OpenRouter/Generated/OpenRouter.Models.MessagesRequestPluginsItemsVariant4.g.cs
+++ b/src/libs/OpenRouter/Generated/OpenRouter.Models.MessagesRequestPluginsItemsVariant4.g.cs
@@ -27,6 +27,12 @@ public sealed partial class MessagesRequestPluginsItemsVariant4
[global::System.Text.Json.Serialization.JsonPropertyName("enabled")]
public bool? Enabled { get; set; }
+ ///
+ /// Maximum number of tool-calling steps each panelist (analysis model) and the judge model may take during their agentic web-research loop. Models with web_search/web_fetch enabled iterate until they produce a text response or hit this ceiling. Defaults to 8. Capped at 16.
+ ///
+ [global::System.Text.Json.Serialization.JsonPropertyName("max_tool_calls")]
+ public int? MaxToolCalls { get; set; }
+
///
/// Slug of the model that performs both the judge step (with web_search + web_fetch) and the final synthesis. When omitted, defaults to the first model in the Quality preset.
///
@@ -51,6 +57,9 @@ public sealed partial class MessagesRequestPluginsItemsVariant4
///
/// Set to false to disable the fusion plugin for this request. Defaults to true.
///
+ ///
+ /// Maximum number of tool-calling steps each panelist (analysis model) and the judge model may take during their agentic web-research loop. Models with web_search/web_fetch enabled iterate until they produce a text response or hit this ceiling. Defaults to 8. Capped at 16.
+ ///
///
/// Slug of the model that performs both the judge step (with web_search + web_fetch) and the final synthesis. When omitted, defaults to the first model in the Quality preset.
///
@@ -61,11 +70,13 @@ public MessagesRequestPluginsItemsVariant4(
global::OpenRouter.MessagesRequestPluginsItemsVariant4Id id,
global::System.Collections.Generic.IList? analysisModels,
bool? enabled,
+ int? maxToolCalls,
string? model)
{
this.Id = id;
this.AnalysisModels = analysisModels;
this.Enabled = enabled;
+ this.MaxToolCalls = maxToolCalls;
this.Model = model;
}
diff --git a/src/libs/OpenRouter/Generated/OpenRouter.Models.ResponsesRequestPluginsItemsVariant4.g.cs b/src/libs/OpenRouter/Generated/OpenRouter.Models.ResponsesRequestPluginsItemsVariant4.g.cs
index 0153940..128cf09 100644
--- a/src/libs/OpenRouter/Generated/OpenRouter.Models.ResponsesRequestPluginsItemsVariant4.g.cs
+++ b/src/libs/OpenRouter/Generated/OpenRouter.Models.ResponsesRequestPluginsItemsVariant4.g.cs
@@ -27,6 +27,12 @@ public sealed partial class ResponsesRequestPluginsItemsVariant4
[global::System.Text.Json.Serialization.JsonPropertyName("enabled")]
public bool? Enabled { get; set; }
+ ///
+ /// Maximum number of tool-calling steps each panelist (analysis model) and the judge model may take during their agentic web-research loop. Models with web_search/web_fetch enabled iterate until they produce a text response or hit this ceiling. Defaults to 8. Capped at 16.
+ ///
+ [global::System.Text.Json.Serialization.JsonPropertyName("max_tool_calls")]
+ public int? MaxToolCalls { get; set; }
+
///
/// Slug of the model that performs both the judge step (with web_search + web_fetch) and the final synthesis. When omitted, defaults to the first model in the Quality preset.
///
@@ -51,6 +57,9 @@ public sealed partial class ResponsesRequestPluginsItemsVariant4
///
/// Set to false to disable the fusion plugin for this request. Defaults to true.
///
+ ///
+ /// Maximum number of tool-calling steps each panelist (analysis model) and the judge model may take during their agentic web-research loop. Models with web_search/web_fetch enabled iterate until they produce a text response or hit this ceiling. Defaults to 8. Capped at 16.
+ ///
///
/// Slug of the model that performs both the judge step (with web_search + web_fetch) and the final synthesis. When omitted, defaults to the first model in the Quality preset.
///
@@ -61,11 +70,13 @@ public ResponsesRequestPluginsItemsVariant4(
global::OpenRouter.ResponsesRequestPluginsItemsVariant4Id id,
global::System.Collections.Generic.IList? analysisModels,
bool? enabled,
+ int? maxToolCalls,
string? model)
{
this.Id = id;
this.AnalysisModels = analysisModels;
this.Enabled = enabled;
+ this.MaxToolCalls = maxToolCalls;
this.Model = model;
}
diff --git a/src/libs/OpenRouter/openapi.yaml b/src/libs/OpenRouter/openapi.yaml
index de504dc..96bfebf 100644
--- a/src/libs/OpenRouter/openapi.yaml
+++ b/src/libs/OpenRouter/openapi.yaml
@@ -7685,6 +7685,10 @@
"type": "boolean",
"description": "Set to false to disable the fusion plugin for this request. Defaults to true."
},
+ "max_tool_calls": {
+ "type": "integer",
+ "description": "Maximum number of tool-calling steps each panelist (analysis model) and the judge model may take during their agentic web-research loop. Models with web_search/web_fetch enabled iterate until they produce a text response or hit this ceiling. Defaults to 8. Capped at 16."
+ },
"model": {
"type": "string",
"description": "Slug of the model that performs both the judge step (with web_search + web_fetch) and the final synthesis. When omitted, defaults to the first model in the Quality preset."
@@ -9778,6 +9782,10 @@
},
"description": "Slugs of models to run in parallel as the analysis panel. Each model receives the user prompt with openrouter:web_search and openrouter:web_fetch enabled, then a judge model summarizes the collective output into structured analysis JSON. Capped at 8 models to bound cost amplification. Defaults to the Quality preset from /labs/fusion."
},
+ "max_tool_calls": {
+ "type": "integer",
+ "description": "Maximum number of tool-calling steps each panelist (analysis model) and the judge model may take during their agentic web-research loop. Models with web_search/web_fetch enabled iterate until they produce a text response or hit this ceiling. Defaults to 8. Capped at 16."
+ },
"model": {
"type": "string",
"description": "Slug of the judge model that produces the structured analysis JSON. Defaults to the model used in the outer API request."
@@ -15608,6 +15616,10 @@
"type": "boolean",
"description": "Set to false to disable the fusion plugin for this request. Defaults to true."
},
+ "max_tool_calls": {
+ "type": "integer",
+ "description": "Maximum number of tool-calling steps each panelist (analysis model) and the judge model may take during their agentic web-research loop. Models with web_search/web_fetch enabled iterate until they produce a text response or hit this ceiling. Defaults to 8. Capped at 16."
+ },
"model": {
"type": "string",
"description": "Slug of the model that performs both the judge step (with web_search + web_fetch) and the final synthesis. When omitted, defaults to the first model in the Quality preset."
@@ -22488,6 +22500,10 @@
"type": "boolean",
"description": "Set to false to disable the fusion plugin for this request. Defaults to true."
},
+ "max_tool_calls": {
+ "type": "integer",
+ "description": "Maximum number of tool-calling steps each panelist (analysis model) and the judge model may take during their agentic web-research loop. Models with web_search/web_fetch enabled iterate until they produce a text response or hit this ceiling. Defaults to 8. Capped at 16."
+ },
"model": {
"type": "string",
"description": "Slug of the model that performs both the judge step (with web_search + web_fetch) and the final synthesis. When omitted, defaults to the first model in the Quality preset."