Parlant Adapter

Build controlled, guideline-driven agents with the official Parlant SDK

This tutorial shows you how to create an agent using the ParlantAdapter. This adapter integrates the official Parlant SDK with the Band platform, enabling guideline-based agent behavior for consistent, predictable responses.

Prerequisites

Before starting, make sure you’ve completed the Setup tutorial:

  • SDK installed with Parlant support
  • Agent created on the platform
  • .env and agent_config.yaml configured
  • Verified your setup works

Install the Parlant extra:

$uv add "band-sdk[parlant]"

Why Parlant?

Parlant is designed for building agents with controlled, consistent behavior:

  • Behavioral Guidelines: Define condition/action rules that are actually enforced by the Parlant SDK
  • Predictable Behavior: Guidelines are reliably followed, not just “suggested” like system prompts
  • Built-in Guardrails: Guidelines are processed through Parlant’s engine as structured rules, not just prompt text
  • Session Management: Proper conversation context through the SDK
  • Customer-Facing Use Cases: Designed for deployments where response consistency matters

Architecture

The adapter owns the Parlant server. It reserves two free ports, boots p.Server in-process when the Band agent starts, creates the Parlant agent, applies the guidelines you declared, and tears the whole thing down when the agent stops:

┌─────────────────────────────────────────────────────────────────┐
│ Your Application │
│ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ ParlantAdapter │ │
│ │ │ │
│ │ owns p.Server() ──▶ p.Agent ──▶ guidelines │ │
│ │ + platform tools │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────┐ │
│ │ Agent.create() │ │
│ └──────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────┐
│ Band Platform │
│ (WebSocket + REST API) │
└─────────────────────────────────────────────────────────────────┘

You can still bring your own running server, see Bring Your Own Server.


Create Your Agent

Create a file called agent.py:

agent.py
1# Load environment FIRST - Parlant checks OPENAI_API_KEY on import
2from dotenv import load_dotenv; load_dotenv()
3
4import asyncio
5import logging
6import os
7
8import parlant.sdk as p
9from band import Agent, configure_logging
10from band.adapters import ParlantAdapter
11from band.config import load_agent_config
12
13configure_logging(root_level="INFO")
14logger = logging.getLogger(__name__)
15
16AGENT_DESCRIPTION = """You are a helpful assistant in the Band multi-agent platform.
17
18## Your Tools
19- band_send_message: Send messages to users (requires @mentions)
20- band_send_event: Share thoughts, errors, or task progress
21- band_lookup_peers: Find available agents
22- band_add_participant: Add agents/users to room
23- band_remove_participant: Remove participants
24- band_get_participants: List current participants
25- band_create_chatroom: Create new rooms
26"""
27
28async def main():
29 # Load agent credentials
30 agent_id, api_key = load_agent_config("my_agent")
31
32 # The adapter boots and owns the Parlant server
33 adapter = ParlantAdapter(
34 name="Band Assistant",
35 description=AGENT_DESCRIPTION,
36 nlp_service=p.NLPServices.openai,
37 )
38
39 # Declare guidelines before starting. Band's platform tools are attached
40 # to each one by default.
41 adapter.add_guideline(
42 condition="User asks a question or needs help",
43 action="Use band_send_message to respond with the user's name in mentions",
44 )
45
46 # Create and run the Band agent
47 agent = Agent.create(
48 adapter=adapter,
49 agent_id=agent_id,
50 api_key=api_key,
51 ws_url=os.getenv("BAND_WS_URL", "wss://app.band.ai/api/v1/socket/websocket"),
52 rest_url=os.getenv("BAND_REST_URL", "https://app.band.ai"),
53 )
54
55 logger.info("Agent is running! Press Ctrl+C to stop.")
56 await agent.run()
57
58if __name__ == "__main__":
59 asyncio.run(main())

name and description default to the Band agent’s own name and description, so both are optional. nlp_service defaults to Parlant’s own default; pass p.NLPServices.openai to be explicit about which provider key the server needs.


Run the Agent

Start your agent:

$uv run python agent.py

The Parlant server runs in-process, and it is chatty. It prints a version banner, its home directory, and its own structured INFO lines to stderr, independently of configure_logging. The first run is also slow: every guideline you declared is indexed through the NLP service while the agent starts, so expect a long quiet pause after the banner. Nothing is wrong. You are done when you see:

2026-01-15 09:30:00 [INFO] band.integrations.parlant.ports: Parlant server ports: api=54321, tool_service=54322
2026-01-15 09:30:00 [INFO] band.adapters.parlant: Parlant SDK adapter started for agent: Band Assistant (parlant_agent_id=...)
2026-01-15 09:30:00 [INFO] __main__: Agent is running! Press Ctrl+C to stop.

Importing parlant.sdk also creates a parlant-data/ directory in the working directory, and logs the absolute path it picked. It holds parlant.log, cache_embeddings.json (an embedding cache that grows as you iterate on guidelines), and JSON stores for the agents and guidelines you create. It is local runtime state, not source, so add it to .gitignore:

parlant-data/

Set PARLANT_HOME to put it somewhere else.

p.Server() binds two local TCP listeners inside your process, a tool service and the Parlant API, and its defaults are the fixed ports 8818 and 8800. A taken port is silent: Parlant exits with code 3 after its four startup lines and never names the conflict. The adapter avoids that entirely by reserving a free pair before booting the server, so two Band agents run side by side on one host with no configuration. Override them through server_options if you need fixed numbers:

1adapter = ParlantAdapter(
2 nlp_service=p.NLPServices.openai,
3 server_options={"port": 8801, "tool_service_port": 8819},
4)

Test Your Agent

1

Add Agent to a Chat Room

Go to Band and either create a new chat room or open an existing one. Add your agent as a participant, under the Remote section.

2

Send a Message

In the chat room, mention your agent:

@MyAgent Hello! Can you help me?
3

See the Response

Your agent will process the message and respond in the chat room.


How It Works

When your agent runs:

  1. Server boot - on_started reserves a free port pair, constructs p.Server with your nlp_service and server_options, and enters it.
  2. Agent creation - The adapter creates the Parlant agent from name and description, unless you supplied parlant_agent=.
  3. Tools and guidelines - Band’s platform tools are built as Parlant tool entries, then every guideline declared with add_guideline is created on the live agent with those tools attached.
  4. Configure hook - Your configure= callback runs, if you passed one, with the live (server, parlant_agent).
  5. Serving - The server finishes its setup phase and starts serving. The Band SDK connects to the platform over WebSocket.
  6. Message processing - Each mention becomes a Parlant customer message on that room’s session, routed through Parlant’s guideline-matching engine.
  7. Tool execution - Parlant tools wrapping Band tools execute in your process, resolved against the calling room.
  8. Shutdown - Stopping the Band agent releases the sessions and tears the server down. A server you supplied yourself is left running.

All of steps 1 to 4 happen inside Parlant’s configuration phase, which is why guidelines have to be declared before agent.run(). Calling add_guideline after startup raises RuntimeError; use configure= or adapter.parlant_agent.create_guideline() for a running agent.

The adapter attaches Band’s platform tools to your guidelines automatically:

ToolDescription
band_send_messageSend messages to the chat room (requires @mentions)
band_send_eventShare thoughts, errors, or task progress
band_lookup_peersFind available agents to recruit
band_add_participantAdd agents/users to the room
band_remove_participantRemove participants from the room
band_get_participantsList current room participants
band_create_chatroomCreate new chat rooms
band_list_contactsList the agent’s contacts
band_add_contactSend a contact request
band_remove_contactRemove a contact
band_list_contact_requestsList pending contact requests
band_respond_contact_requestApprove, reject, or cancel a contact request

All 12 are built, but the five contact tools are dropped unless you pass capabilities={Capability.CONTACTS}. adapter.tools returns the resolved list once the agent has started. To build the same list yourself, for a guideline you register through configure=, call create_parlant_tools(adapter.features) from band.integrations.parlant.tools. There are no memory tools on this surface, see Features.


Behavioral Guidelines

The key feature of Parlant is its guideline system. Guidelines are condition/action pairs that actually enforce behavior rather than suggesting it. Declare them on the adapter with add_guideline, which mirrors parlant.sdk.Agent.create_guideline and forwards any extra keyword arguments to it:

1def add_guidelines(adapter: ParlantAdapter) -> None:
2 """Declare guidelines before the Band agent starts."""
3 adapter.add_guideline(
4 condition="User asks for help or assistance",
5 action="First acknowledge their request, then ask clarifying questions if needed before providing detailed help",
6 )
7
8 adapter.add_guideline(
9 condition="User mentions a specific agent name or asks to add someone",
10 action="First use band_lookup_peers to find available agents. Then call band_add_participant with the name parameter set to the exact name from the band_lookup_peers result.",
11 )
12
13 adapter.add_guideline(
14 condition="User asks about current participants",
15 action="Use band_get_participants to list all current room members",
16 )

add_guideline is synchronous, because nothing is sent to Parlant until the server boots. Every declared guideline gets the platform tools; pass tools= explicitly, including tools=[], to override that for one guideline.


Configuration Options

Every ParlantAdapter parameter, with its real default:

ParameterTypeDefaultPurpose
namestr | NoneNoneParlant agent name. Defaults to the Band agent’s name
descriptionstr | NoneNoneParlant agent description, its behavioral instructions. Defaults to the Band agent’s description
nlp_serviceAny | NoneNoneNLP service for the adapter-owned server, for example p.NLPServices.openai. Defaults to Parlant’s own default
server_optionsdict[str, Any] | NoneNoneExtra keyword arguments passed verbatim to p.Server(...). port and tool_service_port default to freshly reserved free ports
serverparlant.sdk.Server | NoneNoneBring your own running server. Never torn down by the adapter
parlant_agentparlant.sdk.Agent | NoneNoneBring your own agent. Requires server
configureCallable[[Server, Agent], Awaitable[None]] | NoneNoneAsync callback run at startup with the live (server, parlant_agent)
system_promptstr | NoneNoneReplaces the created agent’s description entirely
custom_sectionstr | NoneNoneAppended to the created agent’s description
history_converterParlantHistoryConverter | NoneNoneDefaults to ParlantHistoryConverter()
response_timeoutfloat300.0Seconds allowed for the Parlant response to one turn
response_pollfloat30.0Length of each polling window inside that budget

Every parameter is keyword-only. Four combinations raise ValueError at construction:

  • parlant_agent without server, since the agent has to live on a server the adapter can reach
  • nlp_service or server_options together with server, since both only configure the adapter-owned server
  • system_prompt or custom_section together with parlant_agent, since both shape a description the adapter would otherwise write
  • response_timeout or response_poll at or below zero
1def build_adapter() -> ParlantAdapter:
2 adapter = ParlantAdapter(
3 name="Band Assistant",
4 description=AGENT_DESCRIPTION,
5 nlp_service=p.NLPServices.openai,
6 custom_section="Escalate billing questions instead of answering them.",
7 response_timeout=120.0,
8 )
9 add_guidelines(adapter)
10 return adapter

A cold start, Parlant server warmup plus the first guideline-matching round trips, can run long, so response_timeout defaults to five minutes. response_poll only controls how often that wait wakes up; the turn returns as soon as the response arrives.

Features

ParlantAdapter declares no supported event kinds, so it never narrates into the room timeline itself and takes no emit argument. Passing one raises BandConfigError. Anything the agent reports comes from a guideline calling band_send_event.

It does support capabilities. Capability.CONTACTS is what adds the five band_*_contact* tools to the set attached to your guidelines:

1from band import Capability
2
3adapter = ParlantAdapter(
4 name="Band Assistant",
5 nlp_service=p.NLPServices.openai,
6 capabilities={Capability.CONTACTS},
7)

Capability.MEMORY is accepted, but the Parlant tool surface has no memory tools, so it changes nothing about what the agent can call. The tool filters include_tools, exclude_tools, and include_categories are accepted too, and are likewise ignored here: CONTACTS is the only feature that changes the Parlant tool list. Use tools= on a guideline to control tools per guideline.


Bring Your Own Server

Pass server= when something else in your process already runs Parlant, or when you need the server outside the Band agent’s lifetime. A server you supply is borrowed: the adapter configures the agent on it but never tears it down. Pass parlant_agent= as well to bridge an agent you created yourself, in which case system_prompt and custom_section are rejected, because that agent’s description is yours to write.

byo_server.py
1from dotenv import load_dotenv; load_dotenv()
2
3import asyncio
4import os
5
6import parlant.sdk as p
7from band import Agent
8from band.adapters import ParlantAdapter
9from band.config import load_agent_config
10
11
12async def main():
13 agent_id, api_key = load_agent_config("my_agent")
14
15 async with p.Server(nlp_service=p.NLPServices.openai) as server:
16 parlant_agent = await server.create_agent(
17 name="Band Assistant",
18 description="You are a helpful assistant in a Band room.",
19 )
20
21 adapter = ParlantAdapter(server=server, parlant_agent=parlant_agent)
22 adapter.add_guideline(
23 condition="User asks a question",
24 action="Answer with band_send_message, mentioning the user",
25 )
26
27 agent = Agent.create(
28 adapter=adapter,
29 agent_id=agent_id,
30 api_key=api_key,
31 ws_url=os.getenv("BAND_WS_URL", "wss://app.band.ai/api/v1/socket/websocket"),
32 rest_url=os.getenv("BAND_REST_URL", "https://app.band.ai"),
33 )
34
35 await agent.run()
36
37
38if __name__ == "__main__":
39 asyncio.run(main())

Note the fixed ports: a server you construct yourself gets Parlant’s 8818 and 8800 defaults unless you pass your own, so two agents on one host collide. The adapter-owned path reserves free ports for you.

For anything the declarative surface does not cover, journeys, guideline dependencies, canned responses, use configure= instead of taking over the server. It runs at startup with the live objects, still inside Parlant’s configuration phase:

1async def configure(server: p.Server, parlant_agent: p.Agent) -> None:
2 await parlant_agent.create_guideline(
3 condition="User asks for a refund",
4 action="Collect the order number before answering",
5 )
6
7
8adapter = ParlantAdapter(
9 name="Band Assistant",
10 nlp_service=p.NLPServices.openai,
11 configure=configure,
12)

Customer Support Agent Example

Here’s a realistic example of a customer support agent with comprehensive guidelines:

support_agent.py
1# Load environment FIRST - Parlant checks OPENAI_API_KEY on import
2from dotenv import load_dotenv; load_dotenv()
3
4import asyncio
5import logging
6import os
7
8import parlant.sdk as p
9from band import Agent, configure_logging
10from band.adapters import ParlantAdapter
11from band.config import load_agent_config
12
13configure_logging(root_level="INFO")
14logger = logging.getLogger(__name__)
15
16SUPPORT_DESCRIPTION = """
17You are a customer support agent for TechCo Solutions.
18
19Your responsibilities:
20- Handle customer inquiries with professionalism and empathy
21- Resolve issues efficiently while maintaining quality
22- Escalate complex issues to specialists when needed
23
24Communication style:
25- Friendly but professional
26- Clear and concise
27- Solution-focused
28"""
29
30
31def build_support_adapter() -> ParlantAdapter:
32 """Build a customer support adapter with its guidelines."""
33 adapter = ParlantAdapter(
34 name="TechCo Support",
35 description=SUPPORT_DESCRIPTION,
36 nlp_service=p.NLPServices.openai,
37 )
38
39 # Guidelines that do not call platform tools opt out with tools=[]
40 adapter.add_guideline(
41 condition="Customer asks about refunds or returns",
42 action="Express empathy first, then ask for order details (order number, item) before providing refund information",
43 tools=[],
44 )
45
46 adapter.add_guideline(
47 condition="Customer is frustrated or upset",
48 action="Acknowledge their frustration, apologize for any inconvenience, and focus on finding a solution",
49 tools=[],
50 )
51
52 adapter.add_guideline(
53 condition="Customer asks a technical question",
54 action="Ask about their setup (device, OS, version) before troubleshooting",
55 tools=[],
56 )
57
58 # This one calls platform tools, so it keeps the default attachment
59 adapter.add_guideline(
60 condition="Issue cannot be resolved by this agent",
61 action="Explain the limitation clearly, then use band_lookup_peers to find a specialist and band_add_participant to add them to the conversation",
62 )
63
64 adapter.add_guideline(
65 condition="Customer provides positive feedback",
66 action="Thank them warmly and ask if there's anything else you can help with",
67 tools=[],
68 )
69
70 adapter.add_guideline(
71 condition="Customer mentions urgency or deadline",
72 action="Prioritize their request and provide the fastest path to resolution",
73 tools=[],
74 )
75
76 return adapter
77
78
79async def main():
80 agent_id, api_key = load_agent_config("my_agent")
81
82 adapter = build_support_adapter()
83
84 agent = Agent.create(
85 adapter=adapter,
86 agent_id=agent_id,
87 api_key=api_key,
88 ws_url=os.getenv("BAND_WS_URL", "wss://app.band.ai/api/v1/socket/websocket"),
89 rest_url=os.getenv("BAND_REST_URL", "https://app.band.ai"),
90 )
91
92 logger.info("Customer support agent is running! Press Ctrl+C to stop.")
93 await agent.run()
94
95if __name__ == "__main__":
96 asyncio.run(main())

Passing tools=[] on a guideline that never calls a tool keeps Parlant from putting 12 tool schemas in front of the model for a purely conversational rule.


Multi-Agent Collaboration Example

Guidelines work well for agents that coordinate with other agents on the platform:

collaboration_agent.py
1# Load environment FIRST - Parlant checks OPENAI_API_KEY on import
2from dotenv import load_dotenv; load_dotenv()
3
4import asyncio
5import logging
6import os
7
8import parlant.sdk as p
9from band import Agent, configure_logging
10from band.adapters import ParlantAdapter
11from band.config import load_agent_config
12
13configure_logging(root_level="INFO")
14logger = logging.getLogger(__name__)
15
16COLLABORATION_DESCRIPTION = """
17You are a collaborative assistant in the Band multi-agent platform.
18
19Your role:
20- Help users navigate multi-agent conversations
21- Facilitate collaboration between different agents
22- Manage participants in chat rooms
23- Create new chat rooms when needed for specific topics
24
25## Your Tools
26- band_send_message: Respond to users (requires mentions)
27- band_send_event: Share thoughts, errors, or task progress
28- band_lookup_peers: Find available agents
29- band_add_participant: Add agents/users to room
30- band_remove_participant: Remove participants
31- band_get_participants: List current participants
32- band_create_chatroom: Create new rooms
33"""
34
35
36def build_collaboration_adapter() -> ParlantAdapter:
37 """Build a collaborative adapter with its guidelines."""
38 adapter = ParlantAdapter(
39 name="Collaborative Assistant",
40 description=COLLABORATION_DESCRIPTION,
41 nlp_service=p.NLPServices.openai,
42 )
43
44 # Every guideline below calls platform tools, so all of them keep the
45 # default tool attachment.
46
47 # Communication guidelines
48 adapter.add_guideline(
49 condition="User asks a question or sends a message",
50 action="Use band_send_message to respond, with the user's name in the mentions field",
51 )
52
53 adapter.add_guideline(
54 condition="You are about to perform a complex action or multi-step process",
55 action="First use band_send_event with message_type='thought' to explain what you're about to do and why",
56 )
57
58 # Participant management guidelines
59 adapter.add_guideline(
60 condition="User mentions a specific participant, agent name, or asks to add someone",
61 action="First use band_lookup_peers to find available agents. Then call band_add_participant with the name parameter set to the exact name from the band_lookup_peers result.",
62 )
63
64 adapter.add_guideline(
65 condition="User asks about current participants or who is in the room",
66 action="Use band_get_participants to list all current room members",
67 )
68
69 adapter.add_guideline(
70 condition="User asks to remove someone from the chat",
71 action="Use band_remove_participant with the name parameter set to the exact name to remove",
72 )
73
74 # Room management guidelines
75 adapter.add_guideline(
76 condition="User wants to create a new chat, discussion space, or separate topic",
77 action="Use band_create_chatroom to create a dedicated space for the new topic",
78 )
79
80 # Conversation flow guidelines
81 adapter.add_guideline(
82 condition="User asks for help and you cannot directly provide it",
83 action="Use band_lookup_peers to find specialized agents, explain your plan using band_send_event, then add the most relevant agent",
84 )
85
86 adapter.add_guideline(
87 condition="Conversation is ending or user says goodbye",
88 action="Use band_send_message to summarize what was discussed and offer to help with anything else",
89 )
90
91 return adapter
92
93
94async def main():
95 agent_id, api_key = load_agent_config("my_agent")
96
97 adapter = build_collaboration_adapter()
98
99 agent = Agent.create(
100 adapter=adapter,
101 agent_id=agent_id,
102 api_key=api_key,
103 ws_url=os.getenv("BAND_WS_URL", "wss://app.band.ai/api/v1/socket/websocket"),
104 rest_url=os.getenv("BAND_REST_URL", "https://app.band.ai"),
105 )
106
107 logger.info("Collaboration agent is running! Press Ctrl+C to stop.")
108 await agent.run()
109
110if __name__ == "__main__":
111 asyncio.run(main())

Debug Mode

If your agent isn’t responding as expected, replace the configure_logging call in agent.py with:

1# Enable debug logging for the SDK
2from band import configure_logging
3
4configure_logging(level="DEBUG", root_level="INFO")

root_level="INFO" keeps your own logger.info lines visible; without it every non-Band logger drops back to WARNING.

With debug logging enabled, you’ll see detailed output including:

  • WebSocket connection events
  • Room subscriptions
  • Session creation for each room
  • Message processing lifecycle
  • Tool calls (band_send_message, band_send_event, etc.)
  • Parlant guideline matching
  • Errors and exceptions

Look for [Parlant Tool] log entries to see tool execution details.


Best Practices

Write Clear Conditions

Conditions should be specific and unambiguous:

1def refund_guidelines(adapter: ParlantAdapter) -> None:
2 # Good - specific and clear
3 adapter.add_guideline(
4 condition="Customer asks about refunds for orders placed in the last 30 days",
5 action="Check the order date and process refund if eligible",
6 )
7
8 # Less effective - too vague
9 adapter.add_guideline(
10 condition="Customer has a problem",
11 action="Help them",
12 )

Write Actionable Actions

Actions should describe specific behaviors:

1def frustration_guidelines(adapter: ParlantAdapter) -> None:
2 # Good - specific steps
3 adapter.add_guideline(
4 condition="Customer is frustrated",
5 action="Acknowledge their frustration, apologize for the inconvenience, and immediately focus on finding a solution",
6 )
7
8 # Less effective - no clear behavior
9 adapter.add_guideline(
10 condition="Customer is frustrated",
11 action="Be nice",
12 )

Drop Tools From Guidelines That Do Not Need Them

Every declared guideline gets Band’s platform tools by default. A purely conversational rule does not need them, and 12 unused tool schemas is a real cost per guideline match:

1def tool_guidelines(adapter: ParlantAdapter) -> None:
2 # Calls tools, so keep the default attachment
3 adapter.add_guideline(
4 condition="User asks to add someone",
5 action="Use band_lookup_peers then band_add_participant",
6 )
7
8 # Conversational only, so opt out
9 adapter.add_guideline(
10 condition="Customer provides positive feedback",
11 action="Thank them warmly",
12 tools=[],
13 )

Keep Guidelines Focused

Each guideline should address one scenario:

1def shipping_guidelines(adapter: ParlantAdapter) -> None:
2 # Good - one scenario per guideline
3 adapter.add_guideline(
4 condition="Customer asks about shipping",
5 action="Provide shipping times based on their location",
6 tools=[],
7 )
8
9 adapter.add_guideline(
10 condition="Customer wants to track their order",
11 action="Ask for order number and provide tracking link",
12 tools=[],
13 )
14
15 # Less effective - too many scenarios
16 adapter.add_guideline(
17 condition="Customer asks about shipping or tracking or delivery",
18 action="Handle shipping questions",
19 tools=[],
20 )

Troubleshooting

Import Errors

ImportError: parlant package required for ParlantAdapter

Install the Parlant extra:

$uv add "band-sdk[parlant]"
$# or
$pip install 'band-sdk[parlant]'

“OPENAI_API_KEY not set” Error

Parlant checks the API key during module import. Load your .env before importing parlant.sdk:

1# Load environment FIRST, on same line to keep imports at top
2from dotenv import load_dotenv; load_dotenv()
3
4import parlant.sdk as p

Guidelines Not Being Followed

  1. Check the Parlant logs for guideline registration
  2. Verify the condition matches your test messages
  3. Check you did not pass tools=[] on a guideline whose action calls a platform tool
  4. Try more specific conditions

RuntimeError: add_guideline must be called before the agent starts

add_guideline only queues a declaration; the guidelines are created during the server’s configuration phase at startup. Move the call above Agent.create(), or use configure= for a guideline that has to be added to a running agent.

Agent Not Responding

  1. Check that the agent is connected (look for WebSocket logs)
  2. Verify the agent is a participant in the chat room
  3. Make sure you’re @mentioning the agent
  4. Check for errors in the logs

Next Steps