MCP tools: remote-outreach-queue
remote-outreach-queue
Registered when: the two outreach flags + outreach.queue (on by default); never a runner or user-scoped key.
outreach_claim_work
Claim the next due outreach work item with a lease (kinds: sequence_step, byo_send_intent, reply_needs_attention). Returns { item } or { item: null }. The item holds ids only; act through the normal tools (a send still needs its permit), then call outreach_complete_work with the item's etag. If your lease expires, someone else may claim it and your etag stops working.
| Parameter | Type | Required | Description |
|---|---|---|---|
orgId | string | yes | Organization id (uuid); every result echoes it. |
kinds | "sequence_step" \ | "byo_send_intent" \ | "reply_needs_attention"[] |
leaseSeconds | integer | no |
Example call:
{"name":"outreach_claim_work","arguments":{"orgId":"<orgId>"}}
Related: outreach_list_work, outreach_heartbeat_work, outreach_complete_work, outreach_release_work.
outreach_complete_work
Finish a claimed item: outcome done (default) or failed, with a short note. Completing performs nothing by itself.
| Parameter | Type | Required | Description |
|---|---|---|---|
orgId | string | yes | Organization id (uuid); every result echoes it. |
itemId | string | yes | |
etag | string | yes | The etag the claim (or your last heartbeat) returned. A stale one is refused: claim again. |
outcome | "done" \ | "failed" | no |
note | string | no |
Example call:
{"name":"outreach_complete_work","arguments":{"orgId":"<orgId>","itemId":"<itemId>","etag":"<etag>"}}
Related: outreach_claim_work, outreach_list_work, outreach_heartbeat_work, outreach_release_work.
outreach_heartbeat_work
Extend your lease on a claimed item (up to one hour after the claim). Returns the new etag: use it next.
| Parameter | Type | Required | Description |
|---|---|---|---|
orgId | string | yes | Organization id (uuid); every result echoes it. |
itemId | string | yes | |
etag | string | yes | The etag the claim (or your last heartbeat) returned. A stale one is refused: claim again. |
leaseSeconds | integer | no |
Example call:
{"name":"outreach_heartbeat_work","arguments":{"orgId":"<orgId>","itemId":"<itemId>","etag":"<etag>"}}
Related: outreach_claim_work, outreach_list_work, outreach_complete_work, outreach_release_work.
outreach_list_work
List outreach work items (open first). Filters: status (queued, claimed, done, failed, cancelled), kind. Read only.
| Parameter | Type | Required | Description |
|---|---|---|---|
orgId | string | yes | Organization id (uuid); every result echoes it. |
status | "queued" \ | "claimed" \ | "done" \ |
kind | "sequence_step" \ | "byo_send_intent" \ | "reply_needs_attention" |
Example call:
{"name":"outreach_list_work","arguments":{"orgId":"<orgId>"}}
Related: outreach_claim_work, outreach_heartbeat_work, outreach_complete_work, outreach_release_work.
outreach_release_work
Give a claimed item back to the queue, optionally due again after delaySeconds (0-3600).
| Parameter | Type | Required | Description |
|---|---|---|---|
orgId | string | yes | Organization id (uuid); every result echoes it. |
itemId | string | yes | |
etag | string | yes | The etag the claim (or your last heartbeat) returned. A stale one is refused: claim again. |
delaySeconds | integer | no |
Example call:
{"name":"outreach_release_work","arguments":{"orgId":"<orgId>","itemId":"<itemId>","etag":"<etag>"}}
Related: outreach_claim_work, outreach_list_work, outreach_heartbeat_work, outreach_complete_work.