***

title: Context
slug: /reference/python/agents/context-builder/context
description: A named conversation workflow containing steps, prompts, and navigation rules.
max-toc-depth: 3
---------------------

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

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

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

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

[addenterfiller]: /docs/server-sdks/reference/python/agents/context-builder/context/add-enter-filler

[addexitfiller]: /docs/server-sdks/reference/python/agents/context-builder/context/add-exit-filler

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

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

[addsystembullets]: /docs/server-sdks/reference/python/agents/context-builder/context/add-system-bullets

[addsystemsection]: /docs/server-sdks/reference/python/agents/context-builder/context/add-system-section

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

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

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

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

[setenterfillers]: /docs/server-sdks/reference/python/agents/context-builder/context/set-enter-fillers

[setexitfillers]: /docs/server-sdks/reference/python/agents/context-builder/context/set-exit-fillers

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

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

[setpostprompt]: /docs/server-sdks/reference/python/agents/context-builder/context/set-post-prompt

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

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

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

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

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

A Context represents a distinct conversation mode -- like "sales", "support", or
"billing" -- within a [`ContextBuilder`][contextbuilder].
Each context holds an ordered sequence of
[`Step`][step] objects and
configures its own prompt, system prompt, fillers, and navigation rules.

You obtain a Context by calling `add_context()` on a ContextBuilder or by calling
`get_context()` to retrieve one that already exists.

## **Properties**

<ParamField path="name" type="str" required={true} toc={true}>
  Unique context name. When using a single context inside a ContextBuilder, this
  must be `"default"`.
</ParamField>

## **Methods**

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

  <Card title="add_enter_filler" href="/docs/server-sdks/reference/python/agents/context-builder/context/add-enter-filler">
    Add enter fillers for a specific language.
  </Card>

  <Card title="add_exit_filler" href="/docs/server-sdks/reference/python/agents/context-builder/context/add-exit-filler">
    Add exit fillers for a specific language.
  </Card>

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

  <Card title="add_step" href="/docs/server-sdks/reference/python/agents/context-builder/context/add-step">
    Add a new step to this context.
  </Card>

  <Card title="add_system_bullets" href="/docs/server-sdks/reference/python/agents/context-builder/context/add-system-bullets">
    Add a POM section with bullets to the system prompt.
  </Card>

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

  <Card title="get_step" href="/docs/server-sdks/reference/python/agents/context-builder/context/get-step">
    Get an existing step by name.
  </Card>

  <Card title="move_step" href="/docs/server-sdks/reference/python/agents/context-builder/context/move-step">
    Move an existing step to a specific position in the step order.
  </Card>

  <Card title="remove_step" href="/docs/server-sdks/reference/python/agents/context-builder/context/remove-step">
    Remove a step from this context.
  </Card>

  <Card title="set_consolidate" href="/docs/server-sdks/reference/python/agents/context-builder/context/set-consolidate">
    Set whether to consolidate conversation history when entering this context.
  </Card>

  <Card title="set_enter_fillers" href="/docs/server-sdks/reference/python/agents/context-builder/context/set-enter-fillers">
    Set all enter fillers at once.
  </Card>

  <Card title="set_exit_fillers" href="/docs/server-sdks/reference/python/agents/context-builder/context/set-exit-fillers">
    Set all exit fillers at once.
  </Card>

  <Card title="set_full_reset" href="/docs/server-sdks/reference/python/agents/context-builder/context/set-full-reset">
    Set whether to completely replace the system prompt when entering this context.
  </Card>

  <Card title="set_isolated" href="/docs/server-sdks/reference/python/agents/context-builder/context/set-isolated">
    Set whether to truncate conversation history when entering this context.
  </Card>

  <Card title="set_post_prompt" href="/docs/server-sdks/reference/python/agents/context-builder/context/set-post-prompt">
    Override the post-prompt text while this context is active.
  </Card>

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

  <Card title="set_system_prompt" href="/docs/server-sdks/reference/python/agents/context-builder/context/set-system-prompt">
    Set a new system prompt that takes effect when this context is entered.
  </Card>

  <Card title="set_user_prompt" href="/docs/server-sdks/reference/python/agents/context-builder/context/set-user-prompt">
    Inject a user message when entering this context.
  </Card>

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

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

## **Example**

```python
from signalwire import AgentBase

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

contexts = agent.define_contexts()
main = contexts.add_context("default")
main.add_step("menu").set_text("Ask whether the caller needs sales or support.")

support = contexts.add_context("support")

# System prompt for this context
support.set_system_prompt("You are a patient technical support engineer.")
support.set_consolidate(True)

# Fillers for smooth transitions
support.add_enter_filler("en-US", [
    "Let me connect you with support...",
    "Transferring you now..."
])
support.add_exit_filler("en-US", [
    "Thank you for contacting support.",
    "Glad I could help."
])

# Navigation
support.set_valid_contexts(["default"])

# Steps
support.add_step("diagnose",
    task="Understand the customer's issue and gather relevant details.",
    criteria="Issue is clearly identified",
    functions=["lookup_account", "check_status"],
    valid_steps=["resolve"]
)
support.add_step("resolve",
    task="Resolve the issue or escalate to a specialist.",
    functions=["create_ticket", "transfer_call"],
    valid_steps=["farewell"]
)
support.add_step("farewell") \
    .set_text("Thank the caller and end the conversation.") \
    .set_functions("none") \
    .set_end(True)

agent.serve()
```