Skip to main content
Glama

Decide review

campaignstack_decide_review
Destructive

Approve, reject, or edit-and-approve one pending review. To save a revised draft for a person to sign off instead of deciding it, use campaignstack_edit_draft. For kind workflow, an approved message goes out later, on the account's pacing (business hours, daily budget, spacing between sends), which can take hours; with priority:true it is sent within seconds instead. Use priority only when the user asked for this message to go out now, and tell them it is sending immediately. For kind job_application, approval sends or schedules the application within limits; edit_and_approve accepts updatedContent { letter?, answers?: [{ question, answer }] }, and reject may include reason. confirmed:true is required.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
kindNoThe item kind from campaignstack_get_reviews. "workflow" (default) is a drafted workflow touch; "job_application" is a job watcher application, where entryId is the application id.
reasonNoJob applications only: why the user rejected the application. Stored on the application.
entryIdYes
decisionYes
priorityNoSend in priority: approve AND send this one message within seconds, instead of waiting its turn in the queue. It skips the queue's own limits for this message (business hours, the daily budget, pacing, the weekly connection cap) but never what the account itself says (a paused, expired or risk-paused account refuses it with an error). Set it only when the user asked for this specific message to go out now. Workflow drafts on LinkedIn only; not with reject or job applications.
confirmedYesConfirms the review decision; approve/edit_and_approve can send a real message on the workflow's pacing or submit a job application.
workspaceIdNoWorkspace ID. Omit it when this connection reaches one workspace: a workspace key (cs_) is bound to its own, and a user key (csu_) or connected app whose person belongs to exactly one workspace defaults to that one. Required only when the person belongs to several; the error then lists them, and campaignstack_whoami reports them too.
updatedContentNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
okNo
resultsNo
warningsNo
workflowIdNo
workspaceIdNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / priority
      Added value: +{
      +  "description": "Send in priority: approve AND send this one message within seconds, instead of waiting its turn in the queue. It skips the queue's own limits for this message (business hours, the daily budget, pacing, the weekly connection cap) but never what the account itself says (a paused, expired or risk-paused account refuses it with an error). Set it only when the user asked for this specific message to go out now. Workflow drafts on LinkedIn only; not with reject or job applications.",
      +  "type": "boolean"
      +}
  2. Changed1 schema field changed
    • changedInput schema / properties / workspaceId / description
      Previous value: -"Workspace ID. REQUIRED for a user key (csu_), which spans every workspace you belong to; omitted for a workspace key (cs_), which is bound to one and ignores this argument. campaignstack_whoami reports which kind of key you are holding and, for a user key, the workspaces it can reach."New value: +"Workspace ID. Omit it when this connection reaches one workspace: a workspace key (cs_) is bound to its own, and a user key (csu_) or connected app whose person belongs to exactly one workspace defaults to that one. Required only when the person belongs to several; the error then lists them, and campaignstack_whoami reports them too."
  3. Added

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only give destructiveHint/openWorldHint; the description goes far beyond by disclosing pacing behavior ('can take hours' vs 'within seconds' with priority:true), that priority skips queue limits but never account-level refusals (paused/expired/risk-paused account errors out), and that confirmed:true results in a real send or submission. This is exactly the context an agent needs before an irreversible action.

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?

The core action and the sibling alternative are front-loaded in the first sentence, and every following sentence carries distinct operational information rather than filler. It is dense and runs long, but no sentence is purely redundant with the schema or annotations.

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, open-world tool with an output schema (so return values need no explanation), the description covers both kinds, the priority escape hatch and its limits, the confirmation requirement, and the edit payload. Nothing an agent needs to call this correctly is missing.

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

Parameters4/5

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

At 63% schema coverage, the description compensates meaningfully: it spells out the edit_and_approve payload shape (updatedContent { letter?, answers?: [{ question, answer }] }) and that reject may carry a reason, neither of which is documented in the schema. It adds less for entryId/workspaceId, but the nested-object gap is covered.

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

Purpose5/5

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

Opens with a specific verb trio and the exact resource scope: 'Approve, reject, or edit-and-approve one pending review.' It also names the sibling it is not (campaignstack_edit_draft) and the condition that selects it, so an agent can route between the two without opening either schema.

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

Usage Guidelines5/5

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

Explicit alternatives and conditions: 'To save a revised draft for a person to sign off instead of deciding it, use campaignstack_edit_draft,' plus narrow routing for priority ('Use priority only when the user asked for this message to go out now') and kind-specific behavior for workflow vs job_application. When-to-use and when-not-to-use are both stated.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources