> For a complete index of all SignalWire documentation pages, fetch https://signalwire.com/docs/llms.txt

# Step

> An individual step in a conversation context with prompt, criteria, and navigation.

[context]: /docs/server-sdks/reference/python/agents/context-builder/context

[addbullets]: /docs/server-sdks/reference/python/agents/context-builder/step/add-bullets

[addgatherquestion]: /docs/server-sdks/reference/python/agents/context-builder/step/add-gather-question

[addsection]: /docs/server-sdks/reference/python/agents/context-builder/step/add-section

[clearsections]: /docs/server-sdks/reference/python/agents/context-builder/step/clear-sections

[setend]: /docs/server-sdks/reference/python/agents/context-builder/step/set-end

[setfunctions]: /docs/server-sdks/reference/python/agents/context-builder/step/set-functions

[setgatherinfo]: /docs/server-sdks/reference/python/agents/context-builder/step/set-gather-info

[setresetconsolidate]: /docs/server-sdks/reference/python/agents/context-builder/step/set-reset-consolidate

[setresetfullreset]: /docs/server-sdks/reference/python/agents/context-builder/step/set-reset-full-reset

[setresetsystemprompt]: /docs/server-sdks/reference/python/agents/context-builder/step/set-reset-system-prompt

[setresetuserprompt]: /docs/server-sdks/reference/python/agents/context-builder/step/set-reset-user-prompt

[setskiptonextstep]: /docs/server-sdks/reference/python/agents/context-builder/step/set-skip-to-next-step

[setskipuserturn]: /docs/server-sdks/reference/python/agents/context-builder/step/set-skip-user-turn

[setstepcriteria]: /docs/server-sdks/reference/python/agents/context-builder/step/set-step-criteria

[settext]: /docs/server-sdks/reference/python/agents/context-builder/step/set-text

[setvalidcontexts]: /docs/server-sdks/reference/python/agents/context-builder/step/set-valid-contexts

[setvalidsteps]: /docs/server-sdks/reference/python/agents/context-builder/step/set-valid-steps

A Step represents a single phase within a
[`Context`][context]. Each step
has its own prompt text, completion criteria, available functions, and navigation
rules. The AI advances through steps automatically when criteria are met.

You create steps by calling `add_step()` on a Context object. All setter methods
return `self` for fluent method chaining.

## **Properties**

**`name`** `str` — required

Step name. Must be unique within the parent context.

---

## **Methods**

#### [add\_bullets](/docs/server-sdks/reference/python/agents/context-builder/step/add-bullets)

Add a POM section with bullet points to the step.

#### [add\_gather\_question](/docs/server-sdks/reference/python/agents/context-builder/step/add-gather-question)

Add a question to this step's gather\_info configuration.

#### [add\_section](/docs/server-sdks/reference/python/agents/context-builder/step/add-section)

Add a POM section to the step.

#### [clear\_sections](/docs/server-sdks/reference/python/agents/context-builder/step/clear-sections)

Remove all POM sections and direct text from this step.

#### [set\_end](/docs/server-sdks/reference/python/agents/context-builder/step/set-end)

Set whether the conversation should end after this step completes.

#### [set\_functions](/docs/server-sdks/reference/python/agents/context-builder/step/set-functions)

Set which SWAIG functions are available during this step.

#### [set\_gather\_info](/docs/server-sdks/reference/python/agents/context-builder/step/set-gather-info)

Enable structured info gathering for this step.

#### [set\_reset\_consolidate](/docs/server-sdks/reference/python/agents/context-builder/step/set-reset-consolidate)

Set whether to consolidate conversation history on context switch.

#### [set\_reset\_full\_reset](/docs/server-sdks/reference/python/agents/context-builder/step/set-reset-full-reset)

Set whether to completely replace the system prompt on context switch.

#### [set\_reset\_system\_prompt](/docs/server-sdks/reference/python/agents/context-builder/step/set-reset-system-prompt)

Set a new system prompt for context switching from this step.

#### [set\_reset\_user\_prompt](/docs/server-sdks/reference/python/agents/context-builder/step/set-reset-user-prompt)

Set a user message to inject when this step triggers a context switch.

#### [set\_skip\_to\_next\_step](/docs/server-sdks/reference/python/agents/context-builder/step/set-skip-to-next-step)

Automatically advance to the next step without evaluating criteria.

#### [set\_skip\_user\_turn](/docs/server-sdks/reference/python/agents/context-builder/step/set-skip-user-turn)

Skip waiting for user input after this step completes.

#### [set\_step\_criteria](/docs/server-sdks/reference/python/agents/context-builder/step/set-step-criteria)

Define when this step is considered complete.

#### [set\_text](/docs/server-sdks/reference/python/agents/context-builder/step/set-text)

Set the step's prompt text directly.

#### [set\_valid\_contexts](/docs/server-sdks/reference/python/agents/context-builder/step/set-valid-contexts)

Set which contexts the agent can navigate to from this step.

#### [set\_valid\_steps](/docs/server-sdks/reference/python/agents/context-builder/step/set-valid-steps)

Set which steps the agent can navigate to from this step.

## **Example**

```python
from signalwire import AgentBase

agent = AgentBase(name="my-agent", route="/agent")

contexts = agent.define_contexts()
ctx = contexts.add_context("default")

step = ctx.add_step("collect_info")

# Structured prompt with POM sections
step.add_section("Task", "Collect the caller's account information.")
step.add_bullets("Required Information", [
    "Full legal name",
    "Account number (10 digits)",
    "Reason for calling"
])

# Completion criteria
step.set_step_criteria(
    "Complete when all three pieces of information have been collected "
    "and confirmed with the caller."
)

# Only allow relevant functions
step.set_functions(["lookup_account", "verify_identity"])

# Navigation
step.set_valid_steps(["process_request", "escalate"])

agent.serve()
```