needs-input and routes the question to the appropriate stakeholder. Rather than blocking the entire queue, dotbot sends the question out-of-band via Microsoft Teams, email, or Jira, waits for a reply, and then resumes the task automatically once an answer arrives. This keeps pipelines moving without requiring the team to monitor the dashboard in real time.
Why human-in-the-loop matters
AI models can resolve most questions by reading the codebase, product documents, and task context. But some decisions require human judgment — a stakeholder who knows the business constraint, the architect who owns the design, or the product owner who decides between competing priorities. Without a structured way to ask those questions, the AI either guesses (introducing risk) or halts the pipeline entirely. Theneeds-input mechanism gives the AI a safe escape hatch: pause the task, ask the right person, and continue when the answer arrives — without blocking any other tasks that do not depend on this one.
How the flow works
Task reaches needs-input
The AI determines it cannot proceed without more information and calls the
task_mark_needs_input MCP tool. The task is paused and removed from the active execution queue.Question is sent to the stakeholder
dotbot’s notification client reads the
mothership settings block and sends the question to the configured channel (teams, email, or jira) along with the available choices.Stakeholder answers
The stakeholder replies directly in Teams via an Adaptive Card, by email, or via a Jira comment. The answer is stored as a JSON record on the server.
Configuring Microsoft Teams integration
Add themothership block to your settings.default.json and set channel to teams:
settings.default.json
| Field | Type | Description |
|---|---|---|
enabled | boolean | Set to true to activate the mothership integration |
server_url | string | Base URL of the deployed Teams bot App Service |
api_key | string | API key used to authenticate requests to the bot server |
channel | string | Delivery channel: teams, email, or jira |
recipients | array | List of Teams user object IDs, email addresses, or Jira account IDs |
project_name | string | Displayed in the question card so stakeholders know which project is asking |
project_description | string | Additional context shown in the notification |
poll_interval_seconds | integer | How often dotbot checks for answers (default: 30) |
sync_tasks | boolean | Whether to sync task state to the mothership server |
sync_questions | boolean | Whether to push questions and retrieve answers via the server |
Setting up the server_url and api_key
To use Teams (or any other notification channel), you need a deployed mothership server. Once your server is running, set its URL and API key insettings.default.json:
settings.default.json
What stakeholders see
When a question is routed to Teams, the recipient receives an Adaptive Card that includes the project name, the question text, and a set of choices to select from. Clicking a choice submits the answer directly — no separate login or dashboard access is required. The architecture is:Answer format
When a stakeholder responds, the bot stores an answer record on the server. dotbot reads this record during the next poll cycle:task_answer_question MCP tool ingests this record and attaches the answer to the paused task before resuming it.
Other routing options
- Email
- Jira
Set
channel to email and populate recipients with email addresses. dotbot sends a formatted message with answer choices and resumes when a reply is received.