Skip to documentation
Open Workflow Studio
On this page

Workflow reference

Workflow Studio connects model calls, tools, HTTP requests, user interactions, and local transformations into an executable workflow. Use it to build a solution visually, inspect each handoff in Preview, and export its definition or package it for a supported host.

In Benchius, choose Documentation above About to open this reference at /docs. Search the contents, select a topic, and use On this page to jump to a section. Both hosting modes include the same bundled reference and execution guides.

This reference describes the implemented workflow schema, version 1. JSON property names use camelCase; step kinds, protocols, and modes use the exact enum names shown here. Workflow Studio is experimental. Review provider requests, generated code, resource permissions, and costs before running a workflow.

Start with Build your first workflow, choose a step from the step catalog, and use the expression reference to select, validate, encode, compare, and transform data.

Automations covers the 20 automation templates, persistent server scheduling, unattended credentials, and completion notifications.

Build your first workflow

  1. Open Tools > Workflow Studio at /workflow-studio. Start with New or a template.
  2. Add steps from the toolbox. Select each step to configure it in Properties. Apply changes made in a hosted playground before previewing or saving that configuration.
  3. Connect an output port to an input port. Give connections descriptive input names when a step has several inputs.
  4. Enter Preview input, then start Preview. Inspect the output and activity for every step, including skipped branches and individual loop iterations.
  5. Use Save to keep a named workflow in the browser library, or Export to download its JSON. Configure the target host before running an exported package.

The following complete workflow needs no provider credentials. Save it as a JSON file and open it with the toolbar's Open action. Preview with the included input to produce Task: LAUNCH PLAN from the Format task step.

{
  "schemaVersion": 1,
  "id": "normalize-task",
  "name": "Normalize a task",
  "description": "Trim and normalize a task before sending it to another step.",
  "timeoutSeconds": 600,
  "previewInput": "  Launch plan  ",
  "nodes": [
    {
      "id": "normalize",
      "name": "Trim input",
      "kind": "Expression",
      "outputName": "task",
      "expression": {
        "function": "trim",
        "arguments": [
          { "function": "input", "value": "input" }
        ]
      }
    },
    {
      "id": "format",
      "name": "Format task",
      "kind": "Expression",
      "expression": {
        "function": "concat",
        "arguments": [
          { "function": "literal", "value": "\"Task: \"" },
          {
            "function": "upper",
            "arguments": [
              { "function": "input", "value": "task" }
            ]
          }
        ]
      }
    }
  ],
  "edges": [
    { "source": "normalize", "target": "format", "inputName": "task" }
  ]
}

The other JSON examples in the step reference are node fragments. Add them to a workflow's nodes array and create the indicated connections. Examples that use external services require real endpoints, permissions, and runtime credentials. Deployment consent remains disabled in infrastructure examples until the operator approves execution.

Work IQ and Fabric IQ samples

The starter gallery and Properties template picker include Work IQ with 20 samples and Fabric IQ with 10 samples. Workflow chat can reference every sample. The toolbox includes dedicated Work IQ and Fabric IQ MCP presets alongside the generic MCP step.

These workflows read live, authorized work data. Before any MCP discovery or model request, Authorize data access and model use presents the exact brief. Read authorized data permits scoped reads and sharing the returned data with the configured model. Cancel reaches a local receipt with no provider calls. Check organizational data-handling rules first: model usage is billable and Responses conversation storage is enabled.

Work IQ setup and samples

Configure WORK_IQ_MCP_ENDPOINT with an administrator-approved remote Work IQ MCP endpoint. A local stdio CLI and an A2A endpoint use different protocols. Supply WORK_IQ_IDENTITY using delegated authorization with the native api://workiq.svc.cloud.microsoft/.default audience and preconsented permissions. Native Work IQ does not support application-only tokens.

The initial MCP step calls fetch with a typed entityUrls array of relative Microsoft Graph v1.0 resource paths. The two-turn research model can use the explicitly selected fetch, get_schema, and search_paths tools for focused follow-ups. Grounding scenarios also expose retrieve, which is in public preview. Configure IQ_MODEL_API_KEY in the conversation model; its endpoint can be changed through the model playground or IQ_MODEL_ENDPOINT.

Sample Resources and result
SharePoint knowledge map Followed sites, document libraries, and a source-linked knowledge map.
SharePoint list exception review List schemas, item fields, and exception candidates.
SharePoint publication readiness Document grounding, versions, and publication-review questions.
OneDrive file discovery File metadata, supported search paths, and a ranked review queue.
OneDrive version comparison brief Observed version metadata and available content comparisons.
Planner personal task triage Assigned tasks, due dates, completion state, and review priorities.
Planner plan health review Observed plans, buckets, task details, and checklist gaps.
Outlook inbox triage Bounded inbox evidence and response priorities.
Outlook reply preparation Message context and unsent reply proposals.
Calendar focus planning An editable UTC calendar window and proposed focus time.
Meeting preparation packet Calendar details and related document grounding.
Teams channel decision digest Joined teams, a selected channel, and cited decision evidence.
Teams chat follow-up review Chat messages and explicit action-item references.
To Do and Planner reconciliation Personal lists, Planner assignments, and possible overlaps.
OneNote research handoff Notebooks, sections, pages, and cited research notes.
People stakeholder map Returned work-profile fields and ownership questions.
Microsoft 365 group onboarding map Memberships, discovered collaboration resources, and access gaps.
Microsoft 365 project readiness SharePoint, Planner, email, and a cited readiness matrix.
Meeting action-to-task proposals Meeting evidence and proposed tasks checked against existing work.
Grounded enterprise work answer Graph metadata and Work IQ retrieval citations.

Edit the question, resource paths, and example dates before running. The brief accepts 1-4 paths and a question of up to 2,000 characters. The model checks schemas and observed IDs before follow-up reads. Tenant policy can restrict paths, including Teams, groups, Planner, and OneNote. A valid Graph path does not grant access. Work IQ collection limits and blocked $skip or $skiptoken pagination can leave gaps; the draft must disclose them. File metadata cannot establish document contents.

Fabric IQ setup and samples

Native Fabric IQ uses https://fabriciq.svc.cloud.microsoft/v1/mcp/fabriciq. Organizations using private links can configure https://api.fabric.microsoft.com/v1/mcp/fabriciq, subject to the host's endpoint-access policy. Supply FABRIC_IQ_IDENTITY with delegated Power BI authorization for Item.Read.All, Item.Execute.All, and Dataset.Read.All; the default token scope is https://analysis.windows.net/powerbi/api/.default. Service-principal and application-only authentication are unsupported.

Replace the example artifacts with 1-2 report or semantic-model names or supported browser URLs you can access. Supply IQ_MODEL_API_KEY on the conversation model. The model discovers the server's actual tool schemas during Run, then combines artifact discovery, report metadata, semantic-model schemas, value search, and executed DAX.

Sample Analysis
Sales variance investigation Comparable-period regional sales changes.
Margin bridge review Compatible revenue, cost, and margin measures.
Inventory aging review Snapshot dates, age bands, and stock concentrations.
Fulfillment service-level investigation On-time rates, eligibility, and denominators.
Customer retention cohort review Cohort definitions and comparable retention windows.
Support demand and backlog analysis Ticket arrivals, unresolved stock, and age measures.
Budget and actuals variance review Budget versions, periods, currencies, and actual spending.
Aggregate workforce capacity review Authorized team-level demand and capacity aggregates.
Supplier delivery risk review Delivery and quality exceptions with sample-size context.
Cross-model KPI reconciliation Separate queries and explicit measurement-definition comparisons.

Native Fabric IQ is read-only and supports Power BI reports and semantic models. Ontologies and data agents have separate MCP integrations. Each query targets one semantic model. Cross-model comparisons require separate queries with compatible periods, units, definitions, and grain. RLS and OLS remain effective, and results reflect the latest successful model refresh. The samples request focused aggregates and at most 100 returned rows per query; incomplete results and unknown freshness must remain visible.

Evidence and review boundaries

Both categories use two bounded model turns: investigate, then verify the complete draft against observed evidence. The existing runtime limits each turn to eight tool-handoff rounds and each invocation to 64 tool calls. Sample instructions request at most eight focused tool calls per turn.

Human evidence review presents the exact final draft. Mark reviewed and Hold for review produce separate receipts that retain the brief, draft, decision, and initial Graph evidence where applicable. Both report externalWritesExecuted=false. No sample sends mail, changes meetings, creates tasks, updates files, refreshes semantic models, or executes business decisions. A proposed action needs separate authorization and execution.

See the Work IQ MCP tool reference, Work IQ MCP overview, and Fabric IQ MCP documentation for current service contracts and permission requirements.

Grok Voice 3 industry rehearsals

The Voice & Speech industry workflows section includes 12 Grok Voice 3 samples in the starter gallery and Properties template picker. Workflow chat can also reference every sample. They use grok-voice-3.0 through the Model step's native text-turn adapter, with XAI_VOICE_API_KEY supplied at runtime.

The scenarios are informed by xAI's October 14, 2026 launch announcement, Speech to Speech API documentation, and prompting guide, checked October 15, 2026. The announcement emphasizes responsive support resolution, spoken reasoning, multilingual conversations, and natural turn-taking. These workflow samples exercise grounded responses, corrections, clear readbacks, pronunciation, and speech-speed controls. Live audio interruption and latency measurements belong in the live playground.

Industry Sample focus
Contact Center Correct a case number, preserve failed troubleshooting, explain replacement review, and prepare a specialist handoff.
Telecommunications Combine an outage snapshot with troubleshooting history and preserve an unknown restoration estimate.
Retail Keep order lines separate and explain replacement evidence without changing the unaffected item.
Financial Services Explain authenticated lost-card support while avoiding collection of account secrets.
Insurance Preserve a corrected incident date and prepare first-notice evidence for adjuster review.
Healthcare Administration Acknowledge access and scheduling needs with slower speech and a reception handoff.
Hospitality Read back room and night counts, identify missing dates, and explain reservation prerequisites.
Travel Explain a disruption snapshot and prepare rebooking questions while keeping the itinerary unchanged.
Logistics Confirm a corrected tracking code and explain authenticated redelivery prerequisites.
Utilities Explain an interruption snapshot and prepare a staffed service-desk escalation.
Public Services Explain library membership confirmation in Spanish, with bilingual audio review.
Education Offer one focused practice prompt and preserve teacher assessment authority.

Contact Center walkthrough

  1. Validate authorized support intake requires authorized=true, a case ID, caller text, and reference text. Caller and reference text are each limited to 12,000 characters. Default data is fictional.
  2. Read case history and replacement policy creates a read-only evidence packet. The default case includes a corrected case number, two failed restarts, and a replacement request awaiting review.
  3. Review context and choose handling pauses for a person. Generate response and Prepare specialist handoff each authorize one billable voice turn; Hold without generation reaches a local receipt with no provider call.
  4. Keep the handling decision with its evidence joins the exact reviewed context and choice. Conditions then select the resolution or specialist-handoff brief.
  5. Grok Voice 3: speak the selected response runs one fresh native realtime text turn with high reasoning. It produces a transcript and WAV; no microphone or phone call is connected.
  6. Assemble transcript, audio, and proposed next step keeps the source, selected handling, and exact response together, and rejects blank or oversized spoken drafts.
  7. Human audio, factual, and language review asks a person to listen and check corrected codes, policy facts, authority limits, and language quality.
  8. Rehearsal accepted? routes to a reviewed case packet or a hold-for-correction packet. Both state actionsExecuted=false.

The remaining templates use the same explicit approval and review boundaries with their own intake, evidence, resolution, escalation, and prompting details. Healthcare uses slower speech, telecommunications includes a pronunciation replacement, and public services specifies Spanish (Mexico). Any requested real action requires separate authenticated, authorized integration and confirmation. Default samples perform no identity verification, refunds, bookings, shipping changes, CRM writes, or call transfers.

Step catalog

Step JSON kind Use it to
Model Model Call a configured text, image, video, document, retrieval, or speech model, including bounded Grok Voice 3 text turns.
Chat Completions ChatCompletions Call a model through the Chat Completions protocol.
Responses Responses Call a model through the Responses protocol.
MCP Mcp Execute one configured MCP tool or WebIQ search.
REST call RestCall Send an HTTP request and consume its completed response body.
Entra ID Auth EntraIdAuth Acquire an access token for a configured resource audience.
Variable Variable Set or read a named, run-scoped JSON value.
Expression Expression Compute a new value with the built-in expression functions.
Condition Condition Route the incoming data through true and false branches.
Loop Loop Process an array, repeat a body, refine until a condition, or poll.
Multi-turn MultiTurn Maintain a bounded model conversation with feedback and optional tools.
User input UserInput Wait for a person's choice or text response.
Just-in-Time Tool JitTool Expose model-callable code tools in an approved server-side environment.
Local Just-in-Time Tool LocalJitTool Expose bounded JavaScript tools in an isolated browser worker.
ACA Sandbox AcaSandbox Create a run-owned sandbox shared by referencing code-tool steps.
Stitch Video StitchVideo Concatenate an ordered collection of compatible MP4 clips.
Add Image Watermark ImageWatermark Composite visible text or a logo onto a PNG or JPEG image.
Add Video Watermark VideoWatermark Embed and verify an experimental pixel-based copy identifier.

Workflow configuration

Property Default Meaning
schemaVersion 1 Required in imported JSON, including every loop body.
id Generated ID Workflow identifier: 1-64 ASCII letters, digits, hyphens, or underscores; begins with a letter or digit.
name "Untitled workflow" Readable name, 1-128 characters without control characters.
description "An agentic solution composed with Benchius." Optional descriptive text, up to 4,096 characters.
type Default Default or ModelEvaluationAndScoring; configure this on the root workflow. Default exports omit this field.
sampleId Unset Optional stable built-in sample identifier on the root workflow.
timeoutSeconds 600 Overall execution deadline, 1-3,600 seconds. A loop body's deadline is also enforced for each execution of that body.
budgetUsd Unset Optional nonnegative USD budget on the root workflow. A positive budget includes nested steps and model turns and requires a host that supports approval when it is exceeded. Zero disables budget pausing.
previewInput "" Text used by the editor's Preview. Runtime callers supply their own input separately.
automation Unset Optional root recommendation with runType (OneTime, Recurring, or LongRunning), intervalMinutes, notifyOnCompletion, and delivery. Recommendations never create schedules automatically.
nodes [] Steps in this graph. Runnable workflows and loop bodies need at least one step.
edges [] Connections between steps in this graph.
traderDashboard Unset Optional root-level trader presentation configuration. Its quote and insight sources must reference distinct polling loops.
orchestration Unset Optional root-level native multi-agent presentation and run controls for a configured OpenAI Responses model. Start from a compatible template.

traderDashboard and orchestration are specialized presentation configurations with different input contracts. They cannot be enabled together.

Shared step configuration

All steps use the following envelope. Each step page describes its matching configuration object.

Property Default Meaning
id Generated node ID Globally unique across the complete hierarchy, including loop bodies and multi-turn model children. Uses the same identifier format as workflow IDs.
name "Model" Display name, 1-128 characters without control characters. Use descriptive names for activity and joined text.
kind Model Step kind from the catalog. Set it explicitly in authored JSON.
timeoutSeconds 180 Step deadline, 1-3,600 seconds. Container deadlines cover their entire operation.
outputName "" Suggested binding name for outgoing connections that have no explicit inputName.
x, y 80, 80 Canvas position only. Finite coordinates with absolute values no greater than 100,000.
sandboxNodeId Unset Optional ACA Sandbox node ID for a JitTool or LocalJitTool. The referenced sandbox must be in the same graph or a containing graph.

Set only the configuration object that matches the kind. Model, ChatCompletions, and Responses all use model. Other kinds use mcp, rest, entraIdAuth, variable, expression, condition, loop, multiTurn, userInput, jitTool, localJitTool, acaSandbox, stitchVideo, imageWatermark, or videoWatermark.

Binding names are case-sensitive, 1-128 characters, begin with an ASCII letter or underscore, and contain only ASCII letters, digits, underscores, and hyphens. Credentials and endpoint references use environment-style names: the same format with hyphens excluded.

Connections and input bindings

A connection is a workflow edge:

{
  "source": "search",
  "target": "summarize",
  "inputName": "research",
  "transform": {
    "function": "trim",
    "arguments": [
      { "function": "input", "value": "input" }
    ]
  }
}
Property Meaning
source Source node ID.
target Destination node ID in the same graph.
inputName Optional destination binding name.
condition Optional true or false branch filter. Only a Condition step can be its source. Omit it for an unfiltered connection.
transform Optional expression evaluated against this source's output before the destination receives it.

Input names are assigned in this order: explicit connection inputName, source outputName, then input for a single unnamed connection or input_1, input_2, and so on for multiple connections. The numbered names follow incoming-edge order. Every incoming binding at a join must have a unique name; input is reserved for the combined value when there are multiple connections.

One input: the destination's input is the source's typed value after any connection transformation. A named connection also exposes that value under its assigned name.

Several active inputs: each named binding retains its own JSON type. The combined input is text formatted as ### <source name> sections in workflow node order. Use named paths such as quote.total or research.results[0] for structured processing.

Branches and joins: a join waits for all predecessors to settle. Inactive branch bindings are null. A step with data connections runs when at least one incoming connection is active; it is skipped when all are inactive. An unfiltered Condition connection receives the input on either branch. Inferred variable and sandbox dependencies also participate in scheduling.

Root steps: a step with no incoming data connections receives the graph's original input. Independent steps can execute concurrently. Canvas position and node-list order do not establish dependencies.

A transformation sees the source value as input and under the connection's assigned name. Use those bindings or established variables in a transform. Perform operations that combine multiple source outputs in the destination Expression step.

Templates and typed values

Templates use placeholders such as {{input}}, {{quote.total}}, and {{research.results[0].title}}. The path rules are documented in Expressions. A placeholder reads an available input; expression functions are configured as expression trees.

Location Rendering behavior
Text templates Strings remain text. Objects and arrays become compact JSON text; null becomes null. Replacements are inserted once.
JSON request bodies and MCP arguments Placeholders are resolved in string values; property names stay unchanged. A whole named placeholder preserves its JSON type. Embedded placeholders become escaped string content.
Exact {{input}} in model or MCP JSON Preserves the rendered input as a string for prompt compatibility.
Exact placeholders in REST JSON Preserve typed input, including objects, arrays, numbers, and booleans.
Endpoint placeholders Each replacement is URL-escaped automatically. Put placeholders in path or query values under a fixed public HTTPS origin.
Header values Use text rendering and are revalidated for safe header content.

Runtime text that is valid JSON is parsed into a typed value. Other text remains a string. Expression and Variable steps preserve typed values directly. User input always produces a string, even when a person types JSON; apply jsonParse explicitly when structured input is required.

Use urlEncode when constructing URL text in an expression. Keep endpoint-template input unencoded because the endpoint renderer already encodes it.

Preview, limits, and failures

Preview shows streamed deltas, completed outputs, loop or conversation revisions, user-input requests, usage, and activity. Downstream steps receive completed results. A partial provider stream cannot substitute for a final result.

The workflow assistant uses this bundled reference and can read its step, expression, and execution-guide pages as needed. Each chat turn includes the selected retained preview run's step statuses, outputs, recent activities and revisions, together with visible composer and validation errors. The snapshot is limited to 64 KiB of UTF-8 text, prioritizes failed steps, and marks truncated excerpts or omitted history.

Preview context is sent to the selected chat model. Known runtime credentials are redacted, and raw HTTP debug payloads stay outside chat context. Review your preview data before sending a message. Assistant edits require a new explicit Preview to verify the result.

Validation rejects unknown properties, duplicate JSON properties, unsupported enums, dangling or duplicate connections, self-connections, and dependency cycles. Repetition belongs inside a Loop or Multi-turn container. Data edges cannot cross a container boundary.

Limit Current value
Workflow JSON document 1 MiB UTF-8
Nodes across the complete hierarchy 50
Edges across all graphs 200
Container nesting 8 levels
Node executions in one run 10,000
Individual configuration JSON or template budget 256 KiB where specified by the step contract
Expression tree 16 levels, 256 operations, at most 32 arguments per function

Host resource limits separately bound text, requests, responses, streaming frames, events, and retained run memory. Default text and expression output are limited to 16 MiB UTF-8; hosts can change these limits. Media and code-tool limits are documented on their step pages.

A failed step fails the run and cancels remaining execution. Timeouts, malformed provider results, missing bindings, and unsupported hosts produce explicit errors. Cancellation stops local waiting and initiates cleanup; external services can have their own cancellation or cleanup limitations.

Paused budget approval does not undo requests already submitted to a provider. In custom hosts, supply WorkflowRunControl for positive budgets and a fresh WorkflowUserInputSession for workflows requiring human input. Resume reuses compatible completed outputs, while authentication and run-scoped tool capabilities can require a fresh run.

Credentials, storage, and packaging

Keep credentials in Vault, session memory, or the target host's protected configuration. Workflow JSON carries references such as MODEL_API_KEY, together with non-secret connection settings. Authentication headers must be configured through their dedicated fields. Custom headers cannot carry credentials or transport overrides.

Provider connections require public HTTPS endpoints. Local, private, reserved, credential-bearing, or fragmented URLs are rejected unless the specific endpoint-secret consent mechanism permits the credential-bearing portion. Confirmed secret-bearing URLs are still sensitive and are excluded from persisted workflow libraries.

Saving permits incomplete drafts, but Preview requires runnable configuration. Browser libraries are local to that browser. Export a copy before moving to another browser or host.

Packaging targets include Aspire, Foundry Agent, Microsoft 365 Copilot, and Copilot Studio. Host capabilities differ: browser-local tools need an interactive browser host, infrastructure steps need authorized identities, and media processing needs its configured FFmpeg backend. Review packaging validation for the selected target.

The implementation contracts are defined in WorkflowDefinition, WorkflowGraphValidator, WorkflowBindings, and WorkflowExecution.

An unhandled error has occurred. Reload 🗙