> Fetch clean Markdown by appending `.md` to any page URL under https://signalwire.com/docs or requesting it with the HTTP header `Accept: text/markdown`. The root index at https://signalwire.com/docs/llms.txt lists the available documentation indexes. # 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\_history](/docs/server-sdks/reference/python/agents/context-builder/step/set-history) Control what the model still sees from earlier steps when this step is entered. #### [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() ``` > An individual step in a conversation context with prompt, criteria, and navigation. ## Docs - [add_bullets](https://signalwire.com/docs/server-sdks/reference/python/agents/context-builder/step/add-bullets.md): Add a POM section with bullet points to the step. - [add_gather_question](https://signalwire.com/docs/server-sdks/reference/python/agents/context-builder/step/add-gather-question.md): Add a question to this step's gather_info configuration. - [add_section](https://signalwire.com/docs/server-sdks/reference/python/agents/context-builder/step/add-section.md): Add a POM section to the step. - [clear_sections](https://signalwire.com/docs/server-sdks/reference/python/agents/context-builder/step/clear-sections.md): Remove all POM sections and direct text from this step. - [set_end](https://signalwire.com/docs/server-sdks/reference/python/agents/context-builder/step/set-end.md): Set whether the conversation should end after this step completes. - [set_functions](https://signalwire.com/docs/server-sdks/reference/python/agents/context-builder/step/set-functions.md): Set which SWAIG functions are available during this step. - [set_gather_info](https://signalwire.com/docs/server-sdks/reference/python/agents/context-builder/step/set-gather-info.md): Enable structured info gathering for this step. - [set_history](https://signalwire.com/docs/server-sdks/reference/python/agents/context-builder/step/set-history.md): Control what the model still sees from earlier steps when this step is entered. - [set_reset_consolidate](https://signalwire.com/docs/server-sdks/reference/python/agents/context-builder/step/set-reset-consolidate.md): Set whether to consolidate conversation history on context switch. - [set_reset_full_reset](https://signalwire.com/docs/server-sdks/reference/python/agents/context-builder/step/set-reset-full-reset.md): Set whether to completely replace the system prompt on context switch. - [set_reset_system_prompt](https://signalwire.com/docs/server-sdks/reference/python/agents/context-builder/step/set-reset-system-prompt.md): Set a new system prompt for context switching from this step. - [set_reset_user_prompt](https://signalwire.com/docs/server-sdks/reference/python/agents/context-builder/step/set-reset-user-prompt.md): Set a user message to inject when this step triggers a context switch. - [set_skip_to_next_step](https://signalwire.com/docs/server-sdks/reference/python/agents/context-builder/step/set-skip-to-next-step.md): Automatically advance to the next step without evaluating criteria. - [set_skip_user_turn](https://signalwire.com/docs/server-sdks/reference/python/agents/context-builder/step/set-skip-user-turn.md): Skip waiting for user input after this step completes. - [set_step_criteria](https://signalwire.com/docs/server-sdks/reference/python/agents/context-builder/step/set-step-criteria.md): Define when this step is considered complete. - [set_text](https://signalwire.com/docs/server-sdks/reference/python/agents/context-builder/step/set-text.md): Set the step's prompt text directly. - [set_valid_contexts](https://signalwire.com/docs/server-sdks/reference/python/agents/context-builder/step/set-valid-contexts.md): Set which contexts the agent can navigate to from this step. - [set_valid_steps](https://signalwire.com/docs/server-sdks/reference/python/agents/context-builder/step/set-valid-steps.md): Set which steps the agent can navigate to from this step.