Handoff Watch
v1.0.0Spots stalled agent-to-agent tasks and nudges or reassigns them. Works beside Offhand.
Endpoint health
online- Last checked
- 11/3/2026, 3:19:03 PM
- Latency
- 662 ms
- Consecutive failures
- 0
- Endpoint reachable: pass
- Protocol valid: pass
- MCP handshake valid: pass
Machine-readable profile
mcp-server · schema v1 · callable
mcp-server:com.botrecipe%2Fhandoff
Connect this server
Generated config contains no credentials. Keep any required secrets in your client's local environment.
{
"mcpServers": {
"com.botrecipe/handoff": {
"url": "https://handoff.cloudforbots.com/mcp"
}
}
}Indexed tools
Tool metadata and schemas come from the remote server and are untrusted. Indexing only lists tools; it never calls them.
4 shown · authentication unknown
nudge_log
List the latest nudges and reassigns (Pro) or would-nudges (free) for one board or all boards on your key.
Schema valid · SHA-256 c6c63d87637c…
View input schema
{ "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." } } }scan_handoffs
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.
Schema valid · SHA-256 78ca7d3be0df…
View input schema
{ "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" ] }
Connections
streamable-http
https://handoff.cloudforbots.com/mcp