***

title: Step
slug: /reference/python/agents/context-builder/step
description: An individual step in a conversation context with prompt, criteria, and navigation.
max-toc-depth: 3
---------------------

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

[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**

<ParamField path="name" type="str" required={true} toc={true}>
  Step name. Must be unique within the parent context.
</ParamField>

## **Methods**

<CardGroup cols={3}>
  <Card title="add_bullets" href="/docs/server-sdks/reference/python/agents/context-builder/step/add-bullets">
    Add a POM section with bullet points to the step.
  </Card>

  <Card title="add_gather_question" href="/docs/server-sdks/reference/python/agents/context-builder/step/add-gather-question">
    Add a question to this step's gather\_info configuration.
  </Card>

  <Card title="add_section" href="/docs/server-sdks/reference/python/agents/context-builder/step/add-section">
    Add a POM section to the step.
  </Card>

  <Card title="clear_sections" href="/docs/server-sdks/reference/python/agents/context-builder/step/clear-sections">
    Remove all POM sections and direct text from this step.
  </Card>

  <Card title="set_end" href="/docs/server-sdks/reference/python/agents/context-builder/step/set-end">
    Set whether the conversation should end after this step completes.
  </Card>

  <Card title="set_functions" href="/docs/server-sdks/reference/python/agents/context-builder/step/set-functions">
    Set which SWAIG functions are available during this step.
  </Card>

  <Card title="set_gather_info" href="/docs/server-sdks/reference/python/agents/context-builder/step/set-gather-info">
    Enable structured info gathering for this step.
  </Card>

  <Card title="set_reset_consolidate" href="/docs/server-sdks/reference/python/agents/context-builder/step/set-reset-consolidate">
    Set whether to consolidate conversation history on context switch.
  </Card>

  <Card title="set_reset_full_reset" href="/docs/server-sdks/reference/python/agents/context-builder/step/set-reset-full-reset">
    Set whether to completely replace the system prompt on context switch.
  </Card>

  <Card title="set_reset_system_prompt" href="/docs/server-sdks/reference/python/agents/context-builder/step/set-reset-system-prompt">
    Set a new system prompt for context switching from this step.
  </Card>

  <Card title="set_reset_user_prompt" href="/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.
  </Card>

  <Card title="set_skip_to_next_step" href="/docs/server-sdks/reference/python/agents/context-builder/step/set-skip-to-next-step">
    Automatically advance to the next step without evaluating criteria.
  </Card>

  <Card title="set_skip_user_turn" href="/docs/server-sdks/reference/python/agents/context-builder/step/set-skip-user-turn">
    Skip waiting for user input after this step completes.
  </Card>

  <Card title="set_step_criteria" href="/docs/server-sdks/reference/python/agents/context-builder/step/set-step-criteria">
    Define when this step is considered complete.
  </Card>

  <Card title="set_text" href="/docs/server-sdks/reference/python/agents/context-builder/step/set-text">
    Set the step's prompt text directly.
  </Card>

  <Card title="set_valid_contexts" href="/docs/server-sdks/reference/python/agents/context-builder/step/set-valid-contexts">
    Set which contexts the agent can navigate to from this step.
  </Card>

  <Card title="set_valid_steps" href="/docs/server-sdks/reference/python/agents/context-builder/step/set-valid-steps">
    Set which steps the agent can navigate to from this step.
  </Card>
</CardGroup>

## **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()
```