Handoff Watch
Spots stalled agent-to-agent tasks and nudges or reassigns them. Works beside Offhand.
我該用這個嗎
品質與安全性
發現項目(3)
- HIGH
- MEDIUM在 scan_handoffs 中
- INFO在 scan_handoffs 中
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"handoff": {
"url": "https://handoff.cloudforbots.com/mcp"
}
}
}遠端端點
https://handoff.cloudforbots.com/mcpstreamable-http它能做什麼
工具清單
工具(4)
🟡scan_handoffs(board, tasks, stall_minutes, fail_limit, nudges_before_reassign, ...)
Pass the tasks your agents handed each other (e.g. the result of Offhand list_todos) and get back which are stalled or failing and what to do. A task is stalled when it is claimed (in_progress) or handed over but untouched for stall_minutes, and failing when it is blocked or has failed fail_limit times. Ladder: nudge the assignee, nudge again, then reassign to a backup agent (or ask the person). Pro acts: records each nudge with a cooldown so nobody is pinged twice, and POSTs the nudge to the agent's webhook if you give one. Free watch-only takes no action and returns would_nudge / would_reassign. It never changes a task in Offhand itself and never takes a task another agent holds; reassigning returns an Offhand add_task call for your agent to make.
輸入結構描述
{
"type": "object",
"properties": {
"board": {
"type": "string",
"description": "A stable name for this task list, e.g. \"offhand\" or \"team-ops\". Cooldowns and the escalation ladder are tracked per board."
},
"tasks": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "string",
"description": "Offhand status: open, in_progress, blocked, done, need_review (also accepts todo, claimed, failed)."
},
"assignedTo": {
"type": "string",
"description": "Agent the task was handed to (alias: assignee)."
},
"updatedAt": {
"type": "string",
"description": "ISO time of the last status change or note (alias: updated_at)."
},
"idle_minutes": {
"type": "number",
"description": "Instead of updatedAt: minutes since the last activity."
},
"failures": {
"type": "integer",
"description": "Failed attempts so far (optional)."
},
"backup": {
"type": "string",
"description": "Agent that may take it over (optional)."
}
},
"required": [
"id"
]
},
"description": "Up to 200 tasks."
},
"stall_minutes": {
"type": "integer",
"description": "Minutes without activity before a task counts as stalled. Default 60."
},
"fail_limit": {
"type": "integer",
"description": "Failures before a task counts as failing. Default 2."
},
"nudges_before_reassign": {
"type": "integer",
"description": "Nudges before suggesting a reassign. Default 2."
},
"backup_agent": {
"type": "string",
"description": "Default agent to hand stalled work to."
},
"webhooks": {
"type": "object",
"description": "Optional map of agent name to an https URL that wakes it (Pro posts nudges there)."
}
},
"required": [
"tasks"
]
}🟢nudge_log(board)
List the latest nudges and reassigns (Pro) or would-nudges (free) for one board or all boards on your key.
輸入結構描述
{
"type": "object",
"properties": {
"board": {
"type": "string",
"description": "A stable name for this task list, e.g. \"offhand\" or \"team-ops\". Cooldowns and the escalation ladder are tracked per board."
}
}
}🟢weekly_report
Draft a plain-English report of the last 7 days: stalled tasks found, nudges and reassigns made (Pro) or that would have been made (free). Read-only; sends nothing.
輸入結構描述
{
"type": "object",
"properties": {}
}🟢usage_and_upgrade
Show today's usage for your key or IP and the $9/month upgrade link. Free tier: 500 calls/day. Not metered.
輸入結構描述
{
"type": "object",
"properties": {}
}社群
證據