**Objective:** Add member assignment and discovery to MCP interface (supports agents + humans).
**Tools to Add:**
1. **`list_members`** - Get team members
- Returns: id, name, role (worker/reviewer/orchestrator/user), active, assigned_count
- Filters: role, active (true/false)
- Use case: Orchestrator finds available workers
2. **`assign_ticket`** - Assign ticket + optional state transition (2-in-1)
- Parameters:
- `ticket_id` (required)
- `member_id` (optional) → if null, assigns to current_agent
- `status` (optional) → if provided, also transitions ticket to this state
- Examples:
- Worker: `assign_ticket(ticket_id, status: "in_progress")` → self-assign + start
- Orchestrator: `assign_ticket(ticket_id, member_id: X, status: "todo")` → assign + queue
- Only works on claimable statuses: backlog, todo
- Validates member exists and is active
- Returns: updated ticket with new assignee and status
**Acceptance Criteria:**
- `list_members` returns unified agent+user list with role field
- `assign_ticket` defaults to current_agent when member_id omitted
- `assign_ticket` performs both assignment and transition when status provided
- Assignment is logged/audited
- Follows existing MCP patterns
**Files to Modify:**
- `app/controllers/api/v1/mcp_controller.rb`
**Objective:** Add member assignment and discovery to MCP interface (supports agents + humans).
**Tools to Add:**
1. **`list_members`** - Get team members
- Returns: id, name, role (worker/reviewer/orchestrator/user), active, assigned_count
- Filters: role, active (true/false)
- Use case: Orchestrator finds available workers
2. **`assign_ticket`** - Assign ticket + optional state transition (2-in-1)
- Parameters:
- `ticket_id` (required)
- `member_id` (optional) → if null, assigns to current_agent
- `status` (optional) → if provided, also transitions ticket to this state
- Examples:
- Worker: `assign_ticket(ticket_id, status: "in_progress")` → self-assign + start
- Orchestrator: `assign_ticket(ticket_id, member_id: X, status: "todo")` → assign + queue
- Only works on claimable statuses: backlog, todo
- Validates member exists and is active
- Returns: updated ticket with new assignee and status
**Acceptance Criteria:**
- `list_members` returns unified agent+user list with role field
- `assign_ticket` defaults to current_agent when member_id omitted
- `assign_ticket` performs both assignment and transition when status provided
- Assignment is logged/audited
- Follows existing MCP patterns
**Files to Modify:**
- `app/controllers/api/v1/mcp_controller.rb`