Skip to content
Back to skills

Loupe Workers

ASecurity

Use when reading worker runs or bridges through the loupe MCP, when calling worker_run_list, worker_run_get, bridge_list, worker_run_resume, worker_run_stop, card_hold, card_release, card_pause_release or bridge_command_cancel, or when recovering workers after a usage limit or a network outage stopped them.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 2, 2026
ai-agentsgo

Works with

  • mcp

Security analysis

A100/100

Scanned October 7, 2026

npx -y skills add ubermuda/loupe --skill loupe-workers --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Loupe Workers?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Loupe Workers
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/ubermuda-loupe-workers/badge)](https://www.skillsdirectory.com/skills/ubermuda-loupe-workers)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: loupe-workers
description: "Use when reading worker runs or bridges through the loupe MCP, when calling worker_run_list, worker_run_get, bridge_list, worker_run_resume, worker_run_stop, card_hold, card_release, card_pause_release or bridge_command_cancel, or when recovering workers after a usage limit or a network outage stopped them."
---

# Controlling Loupe workers

A bridge runs the workers of a project, and each worker is a run on one card. A resume continues the session of a run as a new run of the same series. The tools act as the project owner, on the bound project only, with the same checks as the worker runs page. No tool pauses a bridge.

## The tools

| Tool | Use it to |
|---|---|
| `worker_run_list` | find runs by `states`, `cardNumber`, `rule`, `bridgeId`, `search`, `endedAfter` and `endedBefore` |
| `worker_run_get` | read one run with its series, output, state changes and commands |
| `bridge_list` | check that each bridge is live and takes commands |
| `worker_run_resume` | resume up to 50 ended runs by `runIds` |
| `worker_run_stop` | stop one queued, resumed, preparing or running run |
| `card_hold` | hold one card, by `cardId` or `number`, so no agent starts on it |
| `card_release` | end the hold of one card |
| `card_pause_release` | end the workflow pause of one card, so the paused rule runs again |
| `bridge_command_cancel` | withdraw the command that waits on one run |

Pass `runId` values from `worker_run_list`, never a card number. Only `card_hold`, `card_release` and `card_pause_release` name a card.

## Recover workers after a usage limit or an outage

1. Call `worker_run_list` with `states` such as `gave-up`, `failed`, `timed-out` and `lost`, and a window around the outage. A timed-out or lost run counts at its first report, so start `endedAfter` before the outage began.
2. Read every page while `hasMore` is true.
3. Read the `reason` of each row, and group the runs by cause yourself. Leave out a run that failed for its own reason.
4. Call `bridge_list`. Each bridge of the runs must show `liveness` `live` and `takesCommands` true.
5. Confirm that the cause is gone, for example that the usage limit reset. When you cannot confirm it, do not resume.
6. Call `worker_run_resume` with the run ids, at most 50 in one call.
7. Read each row of `results`. A resumed row carries `commandId`, and a refused row carries `code` and `message`.
8. Call `card_list` with `paused` true, and read every page.
9. Call `card_get` on each card, and read its `pause`: `kind`, `reason`, `ruleId` and `since`.
10. Call `card_pause_release` with the `cardId` and the `pauseId` of each pause that the outage caused. Leave a pause that has its own cause.

## Refusal codes

| Code | Meaning |
|---|---|
| `not-found` | no run of this project has this id |
| `no-bridge`, `unknown-bridge` | the run has no connected bridge, so tell a person |
| `bridge-outdated` | the bridge cannot take commands, so ask a person to update it |
| `pending` | a command already waits on the run, so wait or cancel it |
| `not-controllable` | the run is an interactive session |
| `no-session` | the run has no session to resume |
| `not-resumable` | the run did not end, or it succeeded |
| `card-left` | the card left the column of the run, so leave the run |
| `card-held` | the card is held, so ask a person to manage it again |
| `not-stoppable` | the run is not queued, resumed, preparing or running |
| `reason-too-long` | the stop reason is over 1000 characters |
| `nothing-pending` | no command waits, or the bridge already read it |
| `already-paused` | `card_hold` found the card held already |
| `card-gone` | `card_hold` found the card deleted |
| `not-paused` | `card_release` found no hold, or `card_pause_release` found no workflow pause |
| `card-unmanaged` | `card_pause_release` found the card held, or the workflow off for the project |
| `pause-changed` | the active pause is not the `pauseId` you passed, so read the card again |
| `kind-not-releasable` | a pause of kind `rule` ends only on its own release condition |

## Stop a run

Call `worker_run_stop` with the `runId` and a `reason` that a person reads. A stop ends this run only. A rule can still start new work on the card, because a stop does not hold the card.

## Hold a card

Call `card_hold` with one of `cardId` or `number`. No bridge then starts a worker on the card. A hold stops no live run, so call `worker_run_stop` as well when a run must end now. A queued run waits, and starts when the hold ends.

Call `card_release` to end the hold. A person ends it too when they select **Manage again**, delete the column of the card, or delete the card.

At the end of a hold, each workflow rule whose condition is true fires, also when it was true before the hold. Each rule gets a fresh work budget, and an open work request gets a new timeout. A live request is not opened twice, and a workflow pause stays.

## Release a workflow pause

The workflow pauses a card when a rule runs out of retries, reaches its work limit, or no bridge takes its work in time. A hold and a workflow pause are different states, and `card_release` does not end a pause.

Call `card_pause_release` with one of `cardId` or `number`, and the `pauseId` from `card_get`. The paused rule then runs again with a fresh budget. Release a pause only when its cause is gone. A person releases a pause with **Retry now** in the Workflow panel of the card.

## Cancel a command

Call `bridge_command_cancel` with the `runId` to withdraw the waiting resume or stop. An online bridge reads a command in about a second, so a cancel helps mainly while a bridge is offline.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.