Skip to main content
Glama
SetLuca

SetLuca

Official

Retry or resume a broadcast

luca_broadcasts_retry
Destructive

Retry failed broadcast recipients after review or resume a paused broadcast, including recipients not yet reached. Sends messages to leads and requires confirmation.

Instructions

Retry failed broadcast recipients after operator review, or resume a broadcast paused by hand, which also sends to recipients not yet reached. Sends messages to leads.

Luca operation: POST /api/broadcasts/{id}/retry Required scopes: broadcasts:write Required OAuth scope: luca:queue_ops; data sensitivity: full_content Requires Idempotency-Key. Provide idempotencyKey for safe retries, or the server will generate one. Destructive: has a real-world side effect. You must pass confirm: true; the call is rejected without it. Use workspaceId or workspaceSlug to override the default workspace configured by environment.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "id": "<id>"
    },
    "name": "luca_broadcasts_retry"
  }
}

Input Schema

NameRequiredDescriptionDefault
idYes
bodyNo
confirmNoThis tool has a real-world side effect: it messages real leads, books, moves, or cancels a call, changes a lead's consent, imports leads, writes to a connected calendar or CRM, sends workspace events to an outside URL, or re-triggers downstream automations. Pass confirm: true to proceed; the call is rejected without it.
workspaceIdNoOptional Luca workspace id override.
workspaceSlugNoOptional Luca workspace slug override.
idempotencyKeyNoStable key for safe retries. If omitted, the MCP server generates a unique key for this call.

Output Schema

NameRequiredDescriptionDefault
resultYes
provenanceNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv0.4.2
    • addedOutput schema / properties / result / properties / billingPaused
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / result / properties / outcomes
      Added value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "callsBooked": {
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    },
      +    "replied": {
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    },
      +    "windowDays": {
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    }
      +  },
      +  "type": "object"
      +}
  2. Changed3 schema fields changedv0.4.1
    • changedInput schema / required
      Previous value: -[
      -  "id",
      -  "body"
      -]New value: +[
      +  "id"
      +]
    • addedOutput schema / properties / result / properties / retryBlockedReason
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • changedOutput schema / properties / result / x-luca-redacted-fields
      Previous value: -[
      -  "recipients[].messageBody",
      -  "safetyReport.findings[].evidence",
      -  "sampleMessages[].body",
      -  "segmentSnapshot.excludedRecipients[].displayName",
      -  "segmentSnapshot.leads[].customFields",
      -  "segmentSnapshot.leads[].displayName",
      -  "segmentSnapshot.leads[].messageBody"
      -]New value: +[
      +  "recipients[].messageBody",
      +  "safetyReport.findings[].evidence",
      +  "sampleMessages[].body",
      +  "segmentSnapshot.excludedRecipients[].displayName",
      +  "segmentSnapshot.leads[].customFields",
      +  "segmentSnapshot.leads[].displayName",
      +  "segmentSnapshot.leads[].messageBody",
      +  "segmentSnapshot.leads[].templateMapping",
      +  "segmentSnapshot.leads[].templatePart"
      +]
  3. First observedv0.4.0

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true, openWorldHint=true and idempotentHint=false, but the description adds real value: it states messages go to real leads, that confirm: true is mandatory and rejection occurs without it, that an Idempotency-Key is required with server-side generation if omitted, and it discloses required OAuth scopes and data sensitivity. Minor tension exists between 'for safe retries' on the idempotency key and idempotentHint=false, though these are compatible rather than contradictory.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose in the first sentence, then structured into operation/scope/idempotency/destructive/workspace lines that are individually scannable. Dense but every line carries operational information; no filler prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, six-parameter mutation tool this is thorough: it covers auth scopes, data sensitivity, confirmation gating, idempotency, and workspace scoping, and an output schema exists so return values need not be described. The remaining gap (body field semantics of reason/failedOnly) is modest relative to everything supplied.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67%, and the description does explain the idempotencyKey fallback behavior and the workspace override ('override the default workspace configured by environment'), which slightly exceeds the schema text. It never mentions the body parameters reason or failedOnly, leaving the failedOnly=true default and the resume mode's send-to-unreached-recipients behavior to be inferred.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (retry/resume a broadcast) and enumerates the two operating modes: retrying failed recipients after operator review, and resuming a manually paused broadcast which also sends to not-yet-reached recipients. It does not differentiate itself from the sibling luca_broadcasts_resume, and in fact claims overlapping 'resume' behavior, so an agent cannot fully resolve which of the two to pick from this text alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Use context is implied by 'after operator review' and 'paused by hand', which tells the agent this is a recovery action rather than a normal launch. However, no explicit when-not guidance or alternative routing is given, and the obvious alternative (luca_broadcasts_resume) is never named, leaving the overlap unresolved.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools