Skip to main content

steps

Impact: ⚙️ Runtime Define the execution flow for the action. Steps run sequentially.

Step Properties

Conditional Steps

Conditions use JEXL syntax with helper functions:Common patterns:

Step Functions

request

Impact: ⚙️ Runtime Make an HTTP request to the provider API.

Args Location (in)

The runtime builds requests as follows:
  1. URL: baseUrl + url with path params interpolated
  2. Query: All in: query args joined with &
  3. Body: All in: body args merged into JSON object
  4. Headers: Connector authentication headers + custom headers + in: headers args
Path parameter example:
Resolves to: /employees/123/time-off/456Body construction:
Sends: { "firstName": "John", "lastName": "Doe" }
Use customErrors to remap provider error responses. This is useful for:
  • GraphQL APIs that return errors with 200 status codes
  • Provider-specific error formats that need normalization
  • Custom error messages for better AI agent understanding
customErrors properties:The condition property is useful for GraphQL APIs where errors are returned in the response body with a 200 status code.

paginated_request

Impact: ⚙️ Runtime Automatically handle pagination for list endpoints.

Pagination Types

The runtime handles pagination automatically:Cursor pagination:
  1. Make initial request without cursor
  2. Read cursor_path from response
  3. If cursor exists, make next request with cursor in cursor_position
  4. Repeat until no cursor returned
  5. Aggregate all data_path results
Result format:
MCP behavior: When an agent calls a list action, they receive the first page. The next cursor allows fetching subsequent pages by passing it back as an input parameter.

map_fields

Impact: ⚙️ Runtime Transform data between formats.
Expressions support JEXL syntax with the source object as context:Simple path:
Concatenation:
Conditional:
Null coalescing:
Nested access:
Array operations:
Type coercion: The type field ensures output matches expected type:
  • string - Converts to string
  • number - Converts to number
  • boolean - Converts to boolean
  • datetime_string - Formats as ISO 8601

group_data

Impact: ⚙️ Runtime Group array data by a field.
Transforms flat array into grouped structure:Input:
Output:
Useful for restructuring provider responses into more usable formats.

typecast

Impact: ⚙️ Runtime Convert data types.

soap_request

Impact: ⚙️ Runtime Make SOAP API requests. Used primarily for enterprise providers like Workday.
Namespaces map XML prefixes to URIs:
Reference namespaces in field names with the identifier prefix:
XML attribute syntax: Use @_ prefix for XML attributes and #text for text content.

static_values

Impact: ⚙️ Runtime Return predefined static values without making an API request. Useful for enum lookups or constant data.
Use static_values when:
  1. Provider doesn’t have an API endpoint for enum values:
  1. Combining with dynamic data via multi-step actions:

merge_collections

Impact: ⚙️ Runtime Merge multiple data collections into a single array.
Combine static defaults with API-fetched data:
Collections are merged in order—items from the first collection appear first in the result.

code_execution_lambda

Impact: ⚙️ Runtime Invoke an AWS Lambda function and use the response as the step output. Useful for offloading custom transformations, provider-specific logic, or computation that doesn’t fit other step functions.

Invocation Types

Output

The args array is assembled into a single JSON object and sent as the Lambda payload:Input args:
Sent payload:
Conditional args:
Extracting a nested response:
If the Lambda returns { "result": { "score": 0.9 }, "meta": {...} }, then $.steps.{stepId}.output.data is { "score": 0.9 }.

Iterator Steps

Impact: ⚙️ Runtime Iterator steps (foreach) execute step function(s) for each item in an array. Define by adding the iterator property to a step.
Inside an iterator step, these additional variables are available:Multiple step functions per iteration:
Each iteration collects the final step function output. All iteration results are combined into $.steps.{stepId}.output.data as an array.