Skip to main content
Glama

Schedule a batch of posts

schedule_plan
DestructiveIdempotent

Schedule many finished videos at once. approve: false checks every slot (video ready, output, time 2 min to 60 days ahead, connected accounts) and changes nothing; approve: true, after the user’s explicit yes to that schedule, schedules the ready ones and says which are still editing. Needs publishing permission. Cost: Free to schedule.

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": {
      "items": "<items>",
      "timezone": "<timezone>",
      "approve": "<approve>"
    },
    "name": "schedule_plan"
  }
}

Input Schema

NameRequiredDescriptionDefault
itemsYesThe posts to check or schedule: each a video, its platforms, a time and a caption.
approveYesfalse: check the schedule and change nothing. true: schedule the ready posts (publishing permission needed).
timezoneYesThe IANA time zone of post_at, e.g. America/Chicago.
operation_idNoSame id retries run once.

Output Schema

NameRequiredDescriptionDefault
codeNo
costNo
errorNo
itemsNo
stateNo
statusNo
dry_runNo
messageNo
plan_idNo
style_idNo
video_idNo
availableNo
import_idNo
output_idNo
studio_urlNo
version_idNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • removedInput schema / properties / items / items / properties / output_id / pattern
      Removed value: -"^[a-z0-9-]{1,80}$"
    • removedInput schema / properties / operation_id / pattern
      Removed value: -"^[a-zA-Z0-9_.:-]{1,100}$"
  2. Added
  3. Removed
  4. Changed1 schema field changed
    • changedInput schema / $schema
      Previous value: -"https://json-schema.org/draft/2020-12/schema"New value: +"http://json-schema.org/draft-07/schema#"
  5. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "description": "Clypmint schedule_plan result. Error results carry error; successful requests expose the identifiers and state available for the next step. Signed media stays in private metadata.",
      +  "properties": {
      +    "available": {
      +      "type": "boolean"
      +    },
      +    "code": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "cost": {
      +      "additionalProperties": true,
      +      "type": "object"
      +    },
      +    "dry_run": {
      +      "type": "boolean"
      +    },
      +    "error": {
      +      "type": "string"
      +    },
      +    "import_id": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "items": {
      +      "items": {
      +        "additionalProperties": true,
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "message": {
      +      "type": "string"
      +    },
      +    "output_id": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "plan_id": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "state": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "status": {
      +      "type": [
      +        "string",
      +        "integer",
      +        "null"
      +      ]
      +    },
      +    "studio_url": {
      +      "format": "uri",
      +      "type": "string"
      +    },
      +    "style_id": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "version_id": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "video_id": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    }
      +  },
      +  "type": "object"
      +}
  6. Added

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already flag destructive=true, readOnlyHint=false, and idempotentHint=true, so the bar is lower — yet the description still adds real substance: what the dry run validates (video ready, output, a 2-minute-to-60-day window, connected accounts), that it mutates nothing, that it reports items still editing, that publishing permission is required, and that scheduling is free. This goes well beyond the structured fields.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose, then the approve modes in the order the agent will reason about them. Parenthetical validation list and the cost note are compact and each carries information; nothing is filler.

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?

With an output schema present and full parameter documentation, the remaining burden is behavioral: safety, permissions, validation windows, and confirmation flow — all covered. An agent has everything needed to call this correctly without guessing.

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 100%, so the baseline is 3, but the description adds a constraint the schema does not encode: post_at must fall between 2 minutes and 60 days ahead. That timing rule plus the explicit dry-run/commit semantics for approve give the agent meaning beyond the schema's own text.

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 opens with a specific verb and resource — "Schedule many finished videos at once" — which immediately distinguishes this batch tool from the singular schedule_post sibling. The 'many ... at once' phrasing sets scope without the agent needing to open a schema.

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 clearly explains the two modes: approve:false is a no-op check, and approve:true requires the user's explicit yes to that specific schedule first. The only gap is that it never names schedule_post as the alternative for single posts, relying on 'many at once' to imply the split.

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