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": {}
}社区
证据