addedInput schema / properties / agent_id
Added value: +{
+ "description": "Your own label for the calling agent, at most 200 characters. Recorded on the workflow and its cost rows; never used for routing or authorization.",
+ "maxLength": 200,
+ "type": "string"
+}
addedInput schema / properties / context
Added value: +{
+ "description": "Additional context for the workflow. Persisted with a plan, so an execute by workflow_id inherits it unless it sends its own.",
+ "properties": {
+ "additional_context": {
+ "description": "Free-form context the workflow steps can reference, at most 16,000 characters (more for compose, see task_description).",
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
addedInput schema / properties / language
Added value: +{
+ "description": "BCP 47 language code for the deliverable (for example \"fr\", \"ja\", \"pt-BR\"). Overrides the organization default.",
+ "type": "string"
+}
changedInput schema / properties / preferences / description
Previous value: -"Optional workflow preferences."New value: +"Optional workflow preferences. The same shape on plan and execute; a plan stores them, and an execute by workflow_id inherits them."
changedInput schema / properties / preferences / properties / add_frameworks / description
Previous value: -"Inject additional frameworks into the plan."New value: +"Frameworks to inject into the sequence: a name, or { name, before_step } to choose the position."
addedInput schema / properties / preferences / properties / add_frameworks / items / anyOf
Added value: +[
+ {
+ "type": "string"
+ },
+ {
+ "properties": {
+ "before_step": {
+ "description": "Zero-based index into the filtered sequence before which to insert it.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "name": {
+ "description": "Framework display name or ID.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "before_step"
+ ],
+ "type": "object"
+ }
+]
removedInput schema / properties / preferences / properties / add_frameworks / items / type
Removed value: -"string"
addedInput schema / properties / preferences / properties / approval_before_step / items / minimum
Added value: +0
changedInput schema / properties / preferences / properties / approval_before_step / items / type
Previous value: -"number"New value: +"integer"
addedInput schema / properties / preferences / properties / cache_prefix_chars
Added value: +{
+ "description": "How many leading characters of task_description stay the same across your calls. Direct execution marks that prefix for the provider's prompt cache, so repeated calls read it from cache. Absent or 0 declares nothing.",
+ "minimum": 0,
+ "type": "integer"
+}
changedInput schema / properties / preferences / properties / execution / description
Previous value: -"Set to 'direct' to compose the plan's content frameworks into a single LLM call and route cost-first, using a per-task-type model floor that moves when a cheaper model earns the work. Research steps, process steps (classification-verify, review protocol, synthesis) and the quality review each remain separate calls, so this is not a one-call-per-workflow guarantee: for atomic task types, which have a single content framework, the call count matches standard execution and the saving is the model. Supplying output_contract replaces the quality-review call with deterministic validation, which is one fewer call. No intermediate outputs. Available at every tier. Auto-selected for atomic task types when no execution preference is given. Falls back to standard execution when combined with require_approval or interactive mode, or when the plan exceeds the composition size limit. With attachments or prior_workflow_id, the workflow runs as standard execution instead, so the attachments and the earlier results are applied."New value: +"Set to 'direct' to compose the plan's content frameworks into a single LLM call and route cost-first, using a per-task-type model floor that moves when a cheaper model earns the work. Research steps, process steps (classification-verify, review protocol, synthesis) and the quality review each remain separate calls, so this is not a one-call-per-workflow guarantee: for atomic task types, which have a single content framework, the call count matches standard execution and the saving is the model. Supplying output_contract replaces the quality-review call with deterministic validation, which is one fewer call. No intermediate outputs. Available at every tier. Auto-selected for atomic task types when no execution preference is given. Some atomic task types (for example cluster) run in direct mode only and are refused with 422 direct_mode_unavailable rather than falling back. Others fall back to standard execution when combined with require_approval or interactive mode, or when the plan exceeds the composition size limit. With attachments or prior_workflow_id, the workflow runs as standard execution instead, so the attachments and the earlier results are applied."
addedInput schema / properties / preferences / properties / independent_of
Added value: +{
+ "additionalProperties": false,
+ "description": "Model creators and model ids that must not receive this workflow's content (for example when it grades output one model family produced). Covers every model call Rigor makes for the workflow: planning (classification, intent extraction, title), every step, research agents, review and quality checks, retrieval over files attached to the workflow, and per-step quality grading after the workflow ends. Not covered: processing when a file is uploaded (text extraction, audio and video transcription, indexing) and POST /api/rigor/enhance. A hard constraint: an excluded model, or one whose creator cannot be confirmed, is skipped; a step with no model left fails the workflow with policy_rule no_independent_model and is refunded; an optional planning or grading call with no model left is skipped. Not relaxed by any workspace policy enforcement mode. Fixed when the workflow is planned: an execute call on a stored plan that sends a different value is refused with 400; entry order does not matter.",
+ "minProperties": 1,
+ "properties": {
+ "families": {
+ "description": "Model creators: anthropic, deepseek, google, minimax, mistral, moonshot, openai, qwen, xai or zhipu. Case does not matter; any other name is refused with 400.",
+ "items": {
+ "maxLength": 64,
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$",
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "models": {
+ "description": "Model ids. A dated version or -latest alias of a listed id is excluded too.",
+ "items": {
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ }
+ },
+ "type": "object"
+}
changedInput schema / properties / preferences / properties / max_budget_usd / description
Previous value: -"Spending ceiling in USD. If the plan's quote is still above it after Rigor fits the plan (cheaper models, optional steps dropped), rigor_plan returns a max_budget_exceeded warning and rigor_execute refuses with 402 max_budget_exceeded before anything runs or is charged."New value: +"Spending ceiling in USD. If the plan's quote is still above it after Rigor fits the plan (cheaper models, optional steps dropped), the plan returns a max_budget_exceeded warning and execute refuses with 402 max_budget_exceeded before anything runs or is charged."
addedInput schema / properties / preferences / properties / max_budget_usd / exclusiveMinimum
Added value: +0
addedInput schema / properties / preferences / properties / model_preference
Added value: +{
+ "description": "LLM model selection bias.",
+ "enum": [
+ "quality_first",
+ "cost_optimized",
+ "balanced"
+ ],
+ "type": "string"
+}
changedInput schema / properties / preferences / properties / only_frameworks / description
Previous value: -"Restrict the plan to these frameworks (display name or ID). Applied before skip_frameworks; unknown names are reported in warnings."New value: +"Restrict the plan to these frameworks (display name or ID). Applied before skip_frameworks; unknown names are reported in warnings, and if none resolves the request is refused with 400 UNKNOWN_FRAMEWORK."
changedInput schema / properties / preferences / properties / output_contract / description
Previous value: -"Only read when execution is \"direct\". Declares the JSON shape you want back, so the answer is generated against your schema and validated against it before return, instead of returned as prose you have to parse. A conforming run also skips the quality-review call, costing 1 LLM call rather than 2. The schema is closed: a record carrying an undeclared key is rejected exactly like one missing a required key."New value: +"Only read when execution is \"direct\". Declares the JSON shape you want back, so the answer is generated against your schema (Anthropic forced tool-use, or an OpenAI-compatible json_schema response format) and validated against it before return, instead of returned as prose you have to parse. A conforming run also skips the quality-review call, costing 1 LLM call rather than 2. The schema is closed: a record carrying an undeclared key is rejected exactly like one missing a required key. Persists with the plan, so a later execute against the stored workflow_id inherits it. Not the same shape as the inference gateway's output_contract, which carries the items an answer must account for rather than a record schema."
addedInput schema / properties / preferences / properties / output_contract / properties / fields / items / properties / items
Added value: +{
+ "description": "The element schema, a field entry of this same shape. Only read when type is \"array\".",
+ "type": "object"
+}
addedInput schema / properties / preferences / properties / output_contract / properties / fields / items / properties / properties
Added value: +{
+ "description": "The nested field entries, each of this same shape. Only read when type is \"object\".",
+ "items": {
+ "type": "object"
+ },
+ "type": "array"
+}
changedInput schema / properties / preferences / properties / rigor_level / description
Previous value: -"Review depth. Default auto-detected from task complexity."New value: +"Review depth. Default auto-detected from the task type. Controls analysis depth and cost."
addedInput schema / properties / preferences / properties / tool_scope
Added value: +{
+ "description": "Which framework tiers to include.",
+ "enum": [
+ "mandatory",
+ "recommended",
+ "all"
+ ],
+ "type": "string"
+}
addedInput schema / properties / preferences / properties / use_connections
Added value: +{
+ "description": "Whether the plan may read your connected sources (a GitHub repository, an MCP server). false attaches none; true attaches all. Omitted, a source is attached only when the task is work on code or names a file, your own code, or the source itself.",
+ "type": "boolean"
+}
changedInput schema / properties / task_description / description
Previous value: -"Natural language description of the task, at most 4,000 characters. Be specific — include what you want produced, constraints, and context. Example: 'Design a caching layer for our API gateway with Redis integration.'"New value: +"Natural language description of the task, at least 2 words and at most 4,000 characters (200,000 across it and context.additional_context when task_type is compose). Be specific: include what you want produced, constraints, and context. Example: 'Design a caching layer for our API gateway with Redis integration.'"
changedInput schema / properties / task_type / description
Previous value: -"Optional hint to bypass automatic classification. Passing it also removes the slowest classification tiers from the critical path, so send it whenever you know the shape. Multi-step deliverable types: solution_design, requirements_analysis, code_implementation, code_review, bug_fix, root_cause_analysis, incident_response, deployment_execution, competitive_scan, financial_analysis, research_task, documentation, governance_change, compliance_audit, data_security_assessment, performance_optimization, user_story_definition, implementation_prompt_generation. Atomic single-call types, which auto-select direct execution: tag, score, rerank, compose, extract_entities, parse_query, quick_research, quick_classification, quick_extraction, quick_scoring. Call GET /api/rigor/task-types for the full vocabulary with each type's shape."New value: +"Optional hint to bypass automatic classification. Passing it also removes the slowest classification tiers from the critical path, so send it whenever you know the shape. Multi-step deliverable types: solution_design, requirements_analysis, code_implementation, code_review, bug_fix, root_cause_analysis, incident_response, deployment_execution, competitive_scan, financial_analysis, research_task, documentation, governance_change, compliance_audit, data_security_assessment, performance_optimization, user_story_definition, implementation_prompt_generation. Atomic single-call types, which auto-select direct execution: tag, score, rerank, compose, extract_entities, parse_query, quick_research, quick_classification, quick_extraction, quick_scoring. GET /api/rigor/task-types lists the full vocabulary with each type's shape."