Skip to main content
Glama

Schedule pin

create_schedule

Schedule a pin to publish at a future time.

    Use when the pin should go out later or when spreading many pins out
    after rate_limited; for an immediate publish use create_pin. Provide
    either image_url or asset_id, not both. The board is preflighted now,
    not at run time. A repeat call creates a second schedule, so check
    list_schedules before resending after a timeout.

    Returns the schedule with id and status "scheduled" (track it with
    get_schedule), or with dry_run the validation result. Fails with
    validation_error for a past or timezone-less run_at, board_* codes
    for an unpublishable board, and quota_exceeded when quota is spent.
    

Input Schema

NameRequiredDescriptionDefault
titleYesPin title, at most 100 characters.
run_atYesPublish time as ISO 8601 with timezone, in the future, e.g. "2026-04-01T10:00:00Z".
dry_runNotrue runs every API check (account, board, media, quota, rate headroom) and returns the resolved payload without publishing anything.
alt_textNoAccessibility text for the image, <= 500 characters.
asset_idNoUUID of an uploaded PinBridge asset, from upload_asset.
board_idYesPinterest board ID (numeric string), from list_boards.
link_urlNoDestination URL opened when the pin is clicked.
image_urlNoPublic URL of the image or video; Pinterest must be able to fetch it.
account_idYesUUID of a connected Pinterest account, from list_pinterest_accounts.
descriptionNoPin description, at most 800 characters.
cover_image_urlNoPublic cover image URL; video pins only.
cover_image_asset_idNoUploaded image asset UUID used as the video cover.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / alt_text
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Accessibility text for the image, <= 500 characters.",
      +  "title": "Alt Text"
      +}
  2. Changed13 schema fields changed
    • addedInput schema / properties / account_id / description
      Added value: +"UUID of a connected Pinterest account, from list_pinterest_accounts."
    • addedInput schema / properties / asset_id / description
      Added value: +"UUID of an uploaded PinBridge asset, from upload_asset."
    • addedInput schema / properties / board_id / description
      Added value: +"Pinterest board ID (numeric string), from list_boards."
    • addedInput schema / properties / cover_image_asset_id / description
      Added value: +"Uploaded image asset UUID used as the video cover."
    • addedInput schema / properties / cover_image_url / description
      Added value: +"Public cover image URL; video pins only."
    • changedInput schema / properties / description / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 800,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / description / description
      Added value: +"Pin description, at most 800 characters."
    • addedInput schema / properties / dry_run / description
      Added value: +"true runs every API check (account, board, media, quota, rate headroom) and returns the resolved payload without publishing anything."
    • addedInput schema / properties / image_url / description
      Added value: +"Public URL of the image or video; Pinterest must be able to fetch it."
    • addedInput schema / properties / link_url / description
      Added value: +"Destination URL opened when the pin is clicked."
    • addedInput schema / properties / run_at / description
      Added value: +"Publish time as ISO 8601 with timezone, in the future, e.g. \"2026-04-01T10:00:00Z\"."
    • addedInput schema / properties / title / description
      Added value: +"Pin title, at most 100 characters."
    • addedInput schema / properties / title / maxLength
      Added value: +100
  3. Changed2 schema fields changed
    • addedInput schema / properties / dry_run
      Added value: +{
      +  "default": false,
      +  "title": "Dry Run",
      +  "type": "boolean"
      +}
    • removedInput schema / properties / idempotency_key
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "title": "Idempotency Key"
      -}
  4. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the annotations it discloses non-obvious traits: the board is preflighted at creation time rather than at run time, duplicate calls create duplicate schedules, dry_run returns a validated payload, and specific failure codes (validation_error, board_*, quota_exceeded) with their triggers. This is unusually rich behavioral context for a mutation tool.

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?

Four short paragraphs, each with a single job: purpose, routing/usage, side effects, return and error contract. No filler, and the most decision-relevant line (the create_pin contrast) is front-loaded.

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 12-parameter mutation tool with no output schema, the description covers prerequisites, exclusivity constraints, return shape including the id and 'scheduled' status, dry_run output, and the error taxonomy. An agent has everything needed to call it correctly and interpret the result.

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 real constraint the schema cannot express: image_url and asset_id are mutually exclusive, provide one or the other. It also reinforces run_at semantics that the schema already covers, so it earns slightly above baseline rather than a top score.

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 first line states a specific verb and resource plus the temporal scope: schedule a pin to publish at a future time. It explicitly contrasts with create_pin, 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?

It gives explicit when-to-use (pin goes out later, spreading pins after rate_limited), when-not (immediate publish -> create_pin), and a concrete recovery path (check list_schedules before resending after a timeout). That is the full when/when-not/alternative triad.

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