Skip to main content
Glama

Publish pin

create_pin

Publish a pin to Pinterest now, or preflight it with dry_run=true.

    Use for a pin that should go out immediately; for a future time use
    create_schedule, for many pins use create_pins_batch. Provide either
    image_url or asset_id (from upload_asset), not both. Run dry_run first
    and reuse resolved.idempotency_key on the real call.

    Returns the pin with id and status "queued" (poll get_pin), or with
    dry_run the validation result (valid, checks, resolved, headroom).
    Fails fast with board_not_found / board_not_owned / board_access_denied
    for an unpublishable board, quota_exceeded when the monthly quota is
    spent, and validation_error for bad fields.
    

Input Schema

NameRequiredDescriptionDefault
titleYesPin title, at most 100 characters.
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.
dominant_colorNoHex color of the image, e.g. "#FF5733".
cover_image_urlNoPublic cover image URL; video pins only.
idempotency_keyNoUnique key so a retry never duplicates the pin. Generated when omitted, in which case a repeat call publishes again; reuse the key on retries.
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
    • removedInput schema / properties / related_terms
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "items": {
      -        "type": "string"
      -      },
      -      "type": "array"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "description": "Keywords that improve discoverability.",
      -  "title": "Related Terms"
      -}
  2. Changed16 schema fields changed
    • addedInput schema / properties / account_id / description
      Added value: +"UUID of a connected Pinterest account, from list_pinterest_accounts."
    • addedInput schema / properties / alt_text / description
      Added value: +"Accessibility text for the image, <= 500 characters."
    • 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 / dominant_color / description
      Added value: +"Hex color of the image, e.g. \"#FF5733\"."
    • 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 / idempotency_key / description
      Added value: +"Unique key so a retry never duplicates the pin. Generated when omitted, in which case a repeat call publishes again; reuse the key on retries."
    • 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 / related_terms / description
      Added value: +"Keywords that improve discoverability."
    • addedInput schema / properties / title / description
      Added value: +"Pin title, at most 100 characters."
    • addedInput schema / properties / title / maxLength
      Added value: +100
  3. Changed1 schema field changed
    • addedInput schema / properties / dry_run
      Added value: +{
      +  "default": false,
      +  "title": "Dry Run",
      +  "type": "boolean"
      +}
  4. First observed

TDQS

A4.6/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true), and the description adds substantial context on top: the returned status is "queued" and must be polled via get_pin, dry_run returns valid/checks/resolved/headroom, and the failure taxonomy (board_not_found, board_not_owned, board_access_denied, quota_exceeded, validation_error) is enumerated. It does not contradict idempotentHint=false — the schema makes clear that omitting the key means a repeat call publishes again — but the retry/duplication semantics could be stated once, cleanly, rather than split across description and schema.

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 publish/dry_run distinction and the sibling routing are front-loaded in the first two sentences, and each block (routing, inputs, returns, errors) is a single focused paragraph. Minor redundancy: the dry_run mechanics are restated from the schema's own parameter description, and the retry guidance is split across two places.

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 no output schema, the description appropriately supplies the return contract (pin with id and status queued, poll get_pin) and the dry-run return shape. Combined with a 13-parameter, fully-documented schema and explicit error names, an agent has everything needed to invoke and handle 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 baseline is 3; the description earns above baseline by adding non-schema semantics — the image_url/asset_id exclusivity, the asset_id provenance from upload_asset, and the requirement to reuse resolved.idempotency_key from the preflight on the real call. It does not cover the remaining media fields (cover_image_url, dominant_color, alt_text), which is acceptable given the schema documents them fully.

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?

States a specific verb and resource (publish a pin to Pinterest) plus the dry-run variant, and explicitly distinguishes itself from create_schedule (future time) and create_pins_batch (many pins). An agent can classify this tool without opening any 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?

Names both alternatives and the condition selecting each, gives a mutual-exclusion rule (image_url XOR asset_id, with asset_id sourced from upload_asset), and prescribes the dry_run-then-reuse-idempotency_key workflow. Explicit when-to-use, when-not-to-use, and prerequisite 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