Skip to main content
Glama

Approve or hold a scheduled post

decide_review
Destructive

[PUBLISHES to social accounts · publish scope] decision "approve" sends a held post to the platform for its slot (GOES LIVE) — needs the explicit review scope (admin does not include it) and never works on a post the same connection created. decision "hold" takes a scheduled post off the platform schedule — needs review or publish. Agency plan. id is a reviewId or a convexPostId. (Wraps POST /api/v2/reviews/{id}.)

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>",
      "decision": "<decision>"
    },
    "name": "decide_review"
  }
}

Input Schema

NameRequiredDescriptionDefault
idYesA convexPostId or a review id.
noteNo
decisionYes
pastSlotNoOnly for a held post whose slot passed: "now", or { at: ISO-8601 future time }.
collabSideNoFFE-501 collab posts only: which brand this decision is for ("owner" = the shared character's brand, "grantee" = the brand that made the post). Needed only when the key's owner approves for both brands; a brand-bound key always decides for its own brand. A collab post publishes only after BOTH sides approved; "hold" rejects it for good.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / collabSide
      Added value: +{
      +  "description": "FFE-501 collab posts only: which brand this decision is for (\"owner\" = the shared character's brand, \"grantee\" = the brand that made the post). Needed only when the key's owner approves for both brands; a brand-bound key always decides for its own brand. A collab post publishes only after BOTH sides approved; \"hold\" rejects it for good.",
      +  "enum": [
      +    "owner",
      +    "grantee"
      +  ],
      +  "type": "string"
      +}
  2. Changed1 schema field changed
    • addedInput schema / properties / pastSlot
      Added value: +{
      +  "description": "Only for a held post whose slot passed: \"now\", or { at: ISO-8601 future time }.",
      +  "oneOf": [
      +    {
      +      "enum": [
      +        "now"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "properties": {
      +        "at": {
      +          "format": "date-time",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "at"
      +      ],
      +      "type": "object"
      +    }
      +  ]
      +}
  3. First observed

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true and readOnlyHint=false, and the description substantially earns that: approve GOES LIVE, hold removes the post from the platform schedule, per-connection self-approval is blocked, and scope/plan prerequisites are stated. These are exactly the operational consequences an agent needs when invoking a destructive mutation.

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 bracketed scope/publish header, then the two decision branches, then prerequisites. Every clause carries signal, though the dense inline reference to the wrapped endpoint and the mixed scope/collab details make it heavier than it needs to be for a five-parameter tool.

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

Completeness4/5

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

For a destructive mutation with no output schema, the description covers effects, permissions, plan gating, cross-brand collab rules, and ID formats — enough to call it correctly. The remaining omission is guidance on the `note` parameter and pastSlot behavior on approve, which is documented in schema but not contextualized here.

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?

Schema coverage is 60% (id, pastSlot, and collabSide documented; note undocumented). The description's main contribution is the semantic split of the `decision` enum — what approve versus hold actually do — plus evidence that `id` accepts either a reviewId or convexPostId and that `collabSide` is a FFE-501-only concern. The unmentioned `note` parameter is the only real gap.

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?

The description states a specific verb pair (approve/hold) acting on a specific resource (held/scheduled post) and spells out the divergent effect of each decision: approve pushes the post live to its slot, hold pulls it off the platform schedule. This is far more than the title restated, and it makes the tool unmistakable next to siblings like publish or cancel_scheduled_post.

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

Usage Guidelines4/5

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

It gives clear preconditions for each branch — `review` scope required for approve (with the explicit note that admin does not include it), `review` or `publish` for hold — plus the exclusion that it never works on a post the same connection created, and an Agency-plan gate. What it lacks is explicit routing to alternatives such as decide_approval or publish when those are the intended action, so it stops short of full when/when-not guidance.

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