---
name: pp-manager-mcp
description: >-
  Hosted MCP för Manager Pohlman Protean. Endast för orchestrator-subagenten.
  Kund, projekt, tasks, prio, status, assignee, kommentarer.
disable-model-invocation: true
---

# Manager Pohlman Protean — MCP (hosted only)

Prod: **https://manager.pohlmanprotean.se/api/mcp**

Läs alltid `pp-manager.config.json` i reporoten.

## Setup (obligatoriskt)

1. Kopiera `pp-manager.config.example.json` → `pp-manager.config.json`.
2. Kopiera `.cursor/mcp.json.example` → `.cursor/mcp.json` (hosted URL — **ingen** stdio/`node`-proxy).
3. Token i **Cursor-miljön** (samma värde som `MCP_API_TOKEN` i Vercel):
   - Sätt `MCP_API_TOKEN` (eller `PP_MANAGER_MCP_TOKEN` om du byter header i mcp.json) **innan Cursor startas**, eller i Cursor Settings → MCP.
   - Värdet i projektets `.env` räcker **inte** automatiskt om Cursor inte läser den filen för `${env:...}`.

4. Verifiera: `npm run test:mcp-prod` (läser token från `.env` i projektrot).

## Hur du arbetar

- Använd **endast** MCP-verktygen under servern **pp-manager** (`Create_Task`, `Update_Task`, …).
- Kör **aldrig** `scripts/pp-manager-mcp.mjs` eller lokala Manager-API-anrop för samma syfte.
- Kör **aldrig** pp-taskmanager lokalt.

## Vem är `userId` i MCP-anrop? (viktigt)

Orchestrator ska **inte** använda människans `userId` när den skapar/uppdaterar tasks. Använd **Manager-aktor**:

1. `managerActorUserId` i config om satt, annars  
2. `assignees.orchestrator.userId` (servicekonto — `setup-manager-agent-user.mjs --agent orchestrator`), annars  
3. `userId` endast som sista fallback (varna användaren).

Kalla detta **`actorUserId`** i tool-anrop som kräver `userId`.

| Config-fält | Roll |
|-------------|------|
| `userId` | Människa (admin) — inte Orchestrator MCP |
| `assignees.orchestrator.userId` | Orchestrator i Manager |
| `assignees.<agent>.userId` | Utförare (`assigneeId`) |

## Tools

Använd **`actorUserId`** som `userId` där det krävs.

### Create_Task

- **Viktigt:** `userId` på `Create_Task` blir **`assigneeId`**, inte skapare.
- **Beställare ≠ utförare:** skicka inte beställarens `userId` utan klargjord utförare.
- Lämna bort `userId` om otilldelad — tilldela med `Update_Task` efteråt.
- **`title`:** beskriv arbetet, inte utföraren. Ingen agent/person i titeln — utförare syns via **assignee** i Manager.

### Update_Task

- `userId` = `actorUserId`; `assigneeId` = utförare.
- `parentId` = överordnad task (subtask); `null` kopplar bort. Samma kund och projekt som barnet.

### Övriga

`Create_Customer`, `Create_Project`, `Add_Task_Comment`, `Search_Tasks`, `List_Tasks`, `Get_Task_Details`, `List_User_Projects` — se tidigare mall; sök innan skapa.

### Workflows (namngivna kedjor)

Ordna tasks i fast sekvens per kund/projekt:

| Verktyg | Syfte |
|---------|--------|
| `Create_Workflow` | Ny kedja (namn + beskrivning) |
| `List_Workflows` | Lista kedjor |
| `Set_Workflow_Order` | Sätt ordning (task-ids) |
| `Get_Next_Workflow_Task` | Nästa steg för användare/utförare |

**Användning:** dokumentera workflow-id och steg i `case-journal.md` (projektspecifikt). Exempel på kedja: *audit → analys → block* för Linux PUA — se agent **defender-linux-pua** i catalog.

## Konventioner

- Sök innan skapa (`Search_Tasks`).
- Efter tekniskt arbete: **journal-keeper** uppdaterar journal; du uppdaterar task-status här.
