Spots stalled agent-to-agent tasks and nudges or reassigns them. Works beside Offhand.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
List the latest nudges and reassigns (Pro) or would-nudges (free) for one board or all boards on your key.
A stable name for this task list, e.g. "offhand" or "team-ops". Cooldowns and the escalation ladder are tracked per board.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
List the latest nudges and reassigns (Pro) or would-nudges (free) for one board or all boards on your key.
| Argument | Type | Description |
|---|---|---|
| board | string | A stable name for this task list, e.g. "offhand" or "team-ops". Cooldowns and the escalation ladder are tracked per board. |
{
"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."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| board | string | A stable name for this task list, e.g. "offhand" or "team-ops". Cooldowns and the escalation ladder are tracked per board. |
| tasks* | array | Up to 200 tasks. |
| webhooks | object | Optional map of agent name to an https URL that wakes it (Pro posts nudges there). |
| fail_limit | integer | Failures before a task counts as failing. Default 2. |
| backup_agent | string | Default agent to hand stalled work to. |
| stall_minutes | integer | Minutes without activity before a task counts as stalled. Default 60. |
| nudges_before_reassign | integer | Nudges before suggesting a reassign. Default 2. |
{
"type": "object",
"required": [
"tasks"
],
"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",
"required": [
"id"
],
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"backup": {
"type": "string",
"description": "Agent that may take it over (optional)."
},
"status": {
"type": "string",
"description": "Offhand status: open, in_progress, blocked, done, need_review (also accepts todo, claimed, failed)."
},
"failures": {
"type": "integer",
"description": "Failed attempts so far (optional)."
},
"updatedAt": {
"type": "string",
"description": "ISO time of the last status change or note (alias: updated_at)."
},
"assignedTo": {
"type": "string",
"description": "Agent the task was handed to (alias: assignee)."
},
"idle_minutes": {
"type": "number",
"description": "Instead of updatedAt: minutes since the last activity."
}
}
},
"description": "Up to 200 tasks."
},
"webhooks": {
"type": "object",
"description": "Optional map of agent name to an https URL that wakes it (Pro posts nudges there)."
},
"fail_limit": {
"type": "integer",
"description": "Failures before a task counts as failing. Default 2."
},
"backup_agent": {
"type": "string",
"description": "Default agent to hand stalled work to."
},
"stall_minutes": {
"type": "integer",
"description": "Minutes without activity before a task counts as stalled. Default 60."
},
"nudges_before_reassign": {
"type": "integer",
"description": "Nudges before suggesting a reassign. Default 2."
}
}
}Show today's usage for your key or IP and the $9/month upgrade link. Free tier: 500 calls/day. Not metered.
No arguments.
{
"type": "object",
"properties": {}
}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.
No arguments.
{
"type": "object",
"properties": {}
}