> For the complete documentation index, see [llms.txt](https://docs.autommate.com/userguide/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.autommate.com/userguide/mcp-and-ai-reference/read-hyperflow-and-action-input-contracts.md).

# Read Hyperflow and action input contracts

Read Hyperflow and action inputs, typed defaults and readable flow data before execution.

A Hyperflow’s run inputs and an application action’s configuration inputs are separate contracts. Read the relevant contract before composing values. API and tool identifiers retain the legacy term Autom.

### Read an existing Hyperflow

`automs_get` requires an `autom_id` returned by `automs_search`. Its default `include_flow` value is false.

The automs\_get response example contains:

| Object or field | Observed fields                                     |
| --------------- | --------------------------------------------------- |
| Identity        | `autom_id`, `name`, `description`, `status`, `type` |
| `version`       | `id`, `type`                                        |
| `group`         | `id`, `name`; both can be null                      |
| `trigger`       | `mode`, `type`, `application`, `credential_name`    |
| `execution`     | `queue_enabled`, `target_agent_name`                |
| `owner`         | `created_by_fullname`, `updated_by_fullname`        |
| Dates           | `created_at`, `updated_at`                          |
| Inputs          | `input_contract`                                    |

After a successful read, input\_contract: \[] means declared empty inputs. A non-empty array defines the available inputs. inputs\_note without input\_contract means the inputs are unknown.

### Interpret a non-empty run input contract

The non-empty input example uses these fields:

| Field          | Observed type | How to interpret it                                                                                |
| -------------- | ------------- | -------------------------------------------------------------------------------------------------- |
| `name`         | string        | Input key used in the run input object.                                                            |
| `display_name` | string        | Display label; an empty string was possible.                                                       |
| `type`         | string        | Declared input type; the sampled entries used `array`.                                             |
| `description`  | string        | User-provided guidance; it can be empty.                                                           |
| `is_masked`    | boolean       | Do not infer or reveal masked values.                                                              |
| `default`      | string        | A declared default representation, not necessarily a value already decoded into the declared type. |

The array inputs had `default: "[]"`: a string containing a JSON array representation. Do not copy that string into an array input merely because it appears in the default field. Resolve the intended typed value from the contract and the user's requirements.

This Hyperflow input example has no is\_required field. Its absence does not mark an input as required or optional. Resolve missing requirements before execution rather than copying catalogue action rules.

### Request the readable flow representation

With `include_flow: true`, the response added:

| Field          | Observed type | Purpose                                                                              |
| -------------- | ------------- | ------------------------------------------------------------------------------------ |
| `flow_outline` | string        | Readable outline.                                                                    |
| `flow_summary` | string        | Summary of the flow.                                                                 |
| `flow_stats`   | object        | `step_count`, `branch_count`, `error_handling_steps`, and `systems`.                 |
| `flow_tree`    | array         | Hierarchical records with `caption`, and where present `kind` and nested `children`. |

The flow\_tree example is structured data, not a Mermaid string. It is a readable representation without raw editable flow JSON or field values.

### Read a catalogue action

Discover an action with `library_search_actions`, then pass its returned `action_ref` to `library_get_action`.

The Xurrent Get Any Object with ID example returns action\_ref, action\_label, library\_label, library\_name and inputs. An input entry looks like this:

{% code collapsedlinecount="10" %}

```json
{
  "name": "object_id",
  "display_name": "Object ID",
  "type": "string",
  "description": "Specify an Object ID to get.",
  "is_required": true,
  "is_masked": false,
  "default": ""
}
```

{% endcode %}

This is catalogue metadata, not an action invocation. In this example, object and object\_id are required inputs.

For actions, `inputs: []` means declared empty inputs after a successful read. `inputs_note` without `inputs` means the contract was not established.

### Confirm before execution

Reading `flow_tree` does not create, edit or deploy a Hyperflow or Service definition. For authoring, use the separate `automs_get_flow` / `automs_edit_flow` contracts and the supported Service tools on the active connection.

Use the automs\_run contract and selected Hyperflow’s trigger to determine execution behavior. The examples on this page cover read operations only.

## Preserve structured values

Keep objects, arrays, numbers and booleans typed across action boundaries. Missing, null, empty string, zero and false are distinct states. Read an actual output schema or a permitted redacted sample before selecting a child field; an output labelled object alone does not establish its properties. A declared input does not automatically mean a human must enter it: see [deployment input resolution](https://docs.autommate.com/userguide/mcp-and-ai-reference/deployment-input-resolution).

## Conditional fields and returned results

Input metadata must distinguish required, optional, conditional and defaulted fields. Do not assume that an omitted response status code defaults to 200 unless the installed action contract establishes it. Preserve the configured result, target variable and actual Stop response separately from an Example Response. Missing metadata is an authoring gap, not permission to fill plausible values.

For approval and governance, data supplied by a requester is not independent evidence that policy was satisfied. Resolve the approval record and verify the authoritative decision and identities through the configured integration.
