ruLog in to Senler

Reading Automation Steps

A question about one message or condition does not require reading the entire automation. Find the step first, then request its full settings. This reduces the data in the agent context while allowing it to read connected steps when needed.

Both methods below are read-only. They do not change the draft, start runs, or publish the automation. You need can_view_automations in its project and a server-side API key or OAuth token. In the examples, AUTOMATION_ID is the automation ID and NODE_ID is the step UUID.

Find Matching Steps

GET /api/automations/{automationId}/nodes/search returns a compact list with node_id, name, and type, without full step settings.

curl --fail-with-body --get \
  "https://api.senler.io/api/automations/$AUTOMATION_ID/nodes/search" \
  --header "Authorization: Bearer $ACCESS_TOKEN" \
  --data-urlencode "view=draft" \
  --data-urlencode "search=Thank you for subscribing" \
  --data-urlencode "limit=20"
  • view: draft for the saved draft or published for the published version. Defaults to draft.
  • search: part of a step name or message text, up to 200 characters. Search is case-insensitive; spaces and line breaks act as word separators. This is a literal text search, not a regular expression.
  • types: a separate step-type filter. Use getNodeTypes to retrieve the supported values.
  • node_ids: an optional list of 1–20 UUIDs, comma-separated or as an array. Limits the search to specific steps, such as IDs from a diagnostics report.
  • limit: page size, 20 by default, up to 100.
  • cursor: the previous response's next_cursor to retrieve the next page.
  • expected_revision: an optional check against the revision in a previous response. If the workflow changed, the server returns 409 instead of another version's data.

The response also contains view, revision, version_id, and next_cursor. Keep revision for the next request. A null next_cursor means there is no next page. Without search, you can list all steps or filter them only by types.

If the automation has not been published, use view=draft: a published request returns 404 instead of substituting the draft for a production version.

When the ID is known, pass node_ids=NODE_ID rather than putting the UUID in search: text search matches names and message text. node_ids, search, and types apply together. To check whether a step exists, omit the text and type filters: they can exclude an existing step from the result. Search returns an existing step even if its settings contain errors; this does not confirm that it is ready to publish.

Read Settings And Connections

GET /api/automations/{automationId}/nodes accepts 1 to 20 UUIDs in node_ids. Pass the search response's revision as expected_revision and keep the same view:

curl --fail-with-body --get \
  "https://api.senler.io/api/automations/$AUTOMATION_ID/nodes" \
  --header "Authorization: Bearer $ACCESS_TOKEN" \
  --data-urlencode "view=draft" \
  --data-urlencode "node_ids=$NODE_ID" \
  --data-urlencode "expected_revision=$REVISION" \
  --data-urlencode "include_edges=true" \
  --data-urlencode "edges_limit=50"

Multiple IDs can be comma-separated. nodes contains full settings for found steps in the order of requested IDs; missing IDs are listed in missing_node_ids.

Connections are omitted unless include_edges=true. With it, the response includes a page of incoming and outgoing connections for the selected steps. edges_limit defaults to 50 and accepts up to 200. To continue, pass edges_next_cursor as edges_cursor, keeping the same node_ids set, view, and expected_revision.

Neighboring steps are not loaded automatically: request their IDs from the connections when needed. Use getGraph for a complete workflow overview.

Keep One Data Version

expected_revision helps avoid combining search results with newer settings changed in the meantime. For draft, it is the draft revision; for published, it is the published version number.

Cursors are also tied to the data version and request parameters. On a 409 response reporting a changed context, repeat the search from the first page without the old cursor and use the new revision. This does not mean there are no matching steps.

Call The Methods Through MCP

In Senler.io User MCP, find and describe searchAutomationNodes and getAutomationNodes, then call them through execute using the returned parameter schema.

For example, when asked to find a greeting in an automation, the agent first requests compact results, then reads the selected step's full settings. If the question concerns what follows the message, it also reads connections and the necessary neighboring steps. To search manually in the cabinet, use Step search.