Handoff Watch
Spots stalled agent-to-agent tasks and nudges or reassigns them. Works beside Offhand.
¿Debería usar esto?
Calidad y seguridad
Hallazgos (3)
- HIGH
- MEDIUMen scan_handoffs
- INFOen scan_handoffs
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"handoff": {
"url": "https://handoff.cloudforbots.com/mcp"
}
}
}Puntos de conexión remotos
https://handoff.cloudforbots.com/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"type": "object",
"properties": {}
}Comunidad
Evidencia