MCP App Store
by KeenEthics
Business & Operations
Tailwind icon

Tailwind

by Tailwind App

Overview

Tailwind helps users generate Pinterest Pin drafts from webpages, browse connected accounts, boards, board lists and board sections, create and manage boards, research public Pinterest group boards by topic, review drafts and recommended posting times, check an account's subscription status, manage a saved keywords list, schedule Pins, edit the copy on drafts and scheduled Pins, and delete unpublished Pins through ChatGPT.

Tools

cancel_generation

ChatGPT
Use this when the user wants to stop a Pin generation started by generate_pins_from_url before it runs. It only works while the generation is still queued: a cancelled generation is never charged and reads back as failed with failureCode generation-cancelled. Most generations start within seconds; after that the credits are committed and the cancel is refused, so poll get_generation_status until it finishes and use delete_post on any resulting drafts the user does not want. A 404 within ~10 seconds of starting the generation is a transient indexing artifact: retry the cancel, don't stop.

connect_feed

ChatGPT
Use this when the user wants Tailwind to automatically create Pins from their blog or RSS feed. Subscribes to a feed and assigns its Pins to one Pinterest account. This is an ongoing automation, not a one-time import: once a day, Tailwind checks the feed and drafts a SmartPin for each new post, and every generated Pin consumes SmartPin credits by its design tier — the same as a manual generation — so a busy feed drives ongoing credit use. Pins are created as drafts for review; nothing is scheduled or published automatically. Make sure the user understands that before connecting. The feed's current posts are snapshotted as the baseline, so nothing already published generates a Pin — only posts that appear after connecting do. feedUrl must be an actual feed URL: when you only have a site URL, or are not sure, call preview_feed first. accountId must be a currently connected account — a feed assigned to a disconnected one would be skipped every day without any error, so it is refused instead. A feed URL that is already connected returns a conflict error rather than a duplicate. Connecting itself spends no credits. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

create_board

ChatGPT
Use this when the user wants a new Pinterest board: creates a board on their account (accountId from list_accounts) and returns its numeric boardId, ready to pass to create_post or schedule_post. Creating a board is free — it does not consume Pin credits. Use the boardId this returns rather than re-listing to find the board: list_boards is served from a cache, so a just-created board may not appear in it yet. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

create_board_list

ChatGPT
Use this when the user wants a saved board list: a named, ordered grouping of their boards, used to publish one Pin across those boards with create_post's intervalBoards. A board list is Tailwind's own grouping, so saving one changes nothing on Pinterest, and it is free — it does not consume Pin credits. Give the boards in publishing order, by boardId from list_boards (or one create_board just returned). The response gives the new list's boardListId. Calling twice saves two lists, so if a call's outcome is unclear, check list_board_lists before retrying. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

create_board_section

ChatGPT
Use this when the user wants to add a section to a Pinterest board: creates a named section on a board by boardId (from list_boards, excluding collaborator entries, whose structure this account cannot change) and returns its section ID. Creating a section is free — it does not consume Pin credits. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

create_media_upload

ChatGPT
Use this when the user wants to Pin their own image or video file: a Canva export, a photo or video on disk, anything without a publicly accessible URL. Creates a single-use upload in Tailwind's media staging and returns its uploadId, a write-only uploadUrl, the contentType that uploadUrl accepts, and two expiry times: one for uploadUrl and a later one for uploadId. The tool has two modes. With file, an attachment object that the host application supplies for a file the user attached, the server downloads the attachment and stages its bytes during the call, so the returned uploadId already refers to the staged media. Hosts that do not supply attachment objects leave file out and use the extension mode. With only extension, nothing is staged yet: the bytes are staged when they are sent to uploadUrl in an HTTP PUT whose Content-Type equals contentType. create_post accepts the uploadId as its uploadId input, in place of mediaUrl. Each uploadId attaches to exactly one Pin. Creating an upload costs no credits. Not for media that already has a public URL, which create_post takes directly as mediaUrl.

create_post

ChatGPT
Use this when the user wants to create a Pinterest Pin from an image or video — as a draft (omit both sendAt and useNextOpenSlot), or published on a schedule. To schedule, pass title, description, url, EITHER boardId (numeric ID from list_boards) or intervalBoards, and ONE of: useNextOpenSlot: true, which places the Pin in the account's next open smart schedule slot, or sendAt, an explicit ISO 8601 time. To publish the SAME Pin to several Boards spaced over time — Tailwind's interval Pinning, and what a saved Board list describes — pass intervalBoards instead of boardId, with intervalType for the spacing; do that rather than calling create_post once per Board, which would publish them all at once. Prefer useNextOpenSlot whenever the user has not named a specific time ("schedule this", "post it at a good time", "add it to my queue") — Tailwind's smart schedule is the product, and it applies the account's Pin Spacing rules for the destination URL, which an invented timestamp cannot. Reserve sendAt for a time the user actually asked for. Scheduling is the charged step — drafts are free, and what a scheduled Pin costs depends on the account's billing: modular-billing accounts with Publishing access, whether subscribed or granted, spend one Pin credit per Pin, except on winback plans, which schedule without charge; modular accounts without Publishing draw on a limited free-trial allowance; and legacy and Shopify accounts spend no credits at all, bounded by their plan's post limit for the billing period instead. To put the Pin in a Board section, pass boardSectionId alongside boardId (from list_board_sections). The media comes from exactly one of two sources: mediaUrl for anything with a public URL, or uploadId for the user's own file bytes, staged first with create_media_upload. To create a multi-image carousel Pin instead of a single image, pass carouselItems: two to five images total, the cover in mediaUrl/uploadId and the rest as carouselItems, each with its own mediaUrl or uploadId — images only, no product tags, and every image must share the same width-to-height ratio. Returns the new Pin's postId. To change an existing Pin's title, description, link, Board, Board section, alt text or product tags, use update_post rather than deleting and recreating it — only a change of image needs delete_post plus a fresh create_post. To schedule an existing draft, use schedule_post. Neither this tool nor a Pinterest Pin has a keyword field: a keyword reaches Pinterest only as words in the Pin's title or description. Tailwind keeps keywords in the organization's Saved Keywords list, where each term can be tied to destination URLs; that list is what the Pin Scheduler's Add keywords control shows for a Pin's link. list_saved_keywords with url returns the keywords saved for a Pin's link, and save_keywords with urls adds terms to that list. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

create_timeslot

ChatGPT
Use this when the user wants to add a posting time to their recurring weekly schedule: creates one smart schedule timeslot on the given day at the given time. Free — managing the schedule costs no credits, in the dashboard or here. This changes WHEN future Pins publish; it does not schedule a Pin. To put a specific Pin on the schedule, use create_post or schedule_post with useNextOpenSlot instead. There is no duplicate check, matching the dashboard: calling twice with the same day and time leaves two slots at that time. Read list_timeslots first when adding to a schedule that already exists, so you can see what is there and avoid stacking Pins on one moment. Each call adds exactly ONE slot, so spreading a clustered schedule over mornings means one call per slot you want. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

delete_board

ChatGPT
Use this ONLY when the user has explicitly asked to delete a Pinterest board: permanently deletes the board by boardId (from list_boards, and never a collaborator entry — those belong to someone else and cannot be deleted by this account) AND every Pin saved to it. This cannot be undone — the Pins are destroyed on Pinterest, not moved or archived, and Tailwind cannot restore them. Confirm with the user before calling, and set confirm to true only after they agree; the call is refused without it. Tell them the board and every Pin on it will be destroyed, and quote list_boards' Pin count as an approximate figure — it comes from a cached snapshot and the board may hold MORE Pins than it reports, so never present it as the exact number at risk. The response reports the deleted board's name and pin count. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

delete_board_list

ChatGPT
Use this ONLY when the user has explicitly asked to delete one of their board lists: deletes the saved grouping by boardListId (from list_board_lists). The boards in it, and every Pin on them, stay exactly as they are on Pinterest; only Tailwind's grouping is removed, and it cannot be restored. Confirm with the user before calling, and set confirm to true only after they agree; the call is refused without it. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

delete_board_section

ChatGPT
Use this when the user wants to remove a section from a Pinterest board: deletes a section by sectionId (from list_board_sections). The Pins in the section are NOT deleted — they move back to the board itself. This is not the same as delete_board, which destroys the board and every Pin on it. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

delete_feed

ChatGPT
Use this when the user wants Tailwind to stop watching a feed for good. Removes the subscription: the daily check stops and no further Pins are generated from it. SmartPins the feed already generated are left alone — only future ones stop. Takes a feedId from list_feeds. Fails with a not-found error if the feed is not this organization's, so a successful result means it really was removed. To stop generation temporarily instead, pause it with update_feed. Confirm with the user before deleting a feed they did not explicitly name.

delete_post

ChatGPT
Use this when the user wants to delete a Pinterest Pin draft or scheduled Pin: permanently deletes an unpublished Pin by postId (from create_post or list_posts). Only works on Pins not yet published to Pinterest — published Pins cannot be deleted through Tailwind, and deletion cannot be undone. To change a Pin's title, description, link, Board, Board section, alt text or product tags, use update_post instead of deleting it; only a change of image needs a delete and a fresh create_post. To take a scheduled Pin off the schedule but keep it, use unschedule_post instead. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

delete_saved_keyword

ChatGPT
Use this when the user asks to remove or delete one keyword from their saved list. Takes the keyword's id from list_saved_keywords, not the keyword text. Fails with a not-found error if the id is not on this user's list, so a successful result means the keyword really was removed. Confirm with the user before deleting keywords they did not explicitly name.

delete_saved_keywords

ChatGPT
Use this when the user asks to remove several keywords from their saved list at once, e.g. clearing out a group of terms. Takes keyword ids from list_saved_keywords, up to 100 per call. All-or-nothing: if any id is not on this user's list, nothing is deleted and the error names the unknown ids — so a partial failure never leaves you guessing which keywords survived. Always confirm the specific keywords with the user before calling this.

delete_timeslot

ChatGPT
Use this when the user wants to stop posting at one recurring time: removes a single smart schedule timeslot by timeslotId (from list_timeslots). Free. Confirm with the user before calling, and say which day and time is going away. Pins already scheduled onto this slot are NOT unscheduled and are NOT deleted — they keep their existing times and simply no longer sit on a recurring slot. Removing a slot only stops future Pins from being placed there. If the user wants fewer posting times overall, deleting the specific slots they dislike is safer than rebuild_schedule, which discards every slot and regenerates the lot. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

generate_pin_copy

ChatGPT
Writes Pin titles and descriptions with Tailwind's Ghostwriter, using the organization's saved brand context — tone, style, and audience captured from their own content — and files the result in their Ghostwriter history so it is available in the dashboard alongside everything else they have generated. Use it when the user asks for Tailwind or Ghostwriter to write their Pin copy, or for copy in their saved brand voice. Asynchronous and metered: each call spends the user's plan credits, takes under a minute, and returns a generation id to poll with get_copy_generation_status. Org-scoped — no accountId needed. Pinterest Pin copy only; it does not write blog posts, emails, or product listings. Every call generates and charges again, so poll the id you have rather than re-calling.

generate_pins_from_url

ChatGPT
Use this when the user wants Tailwind's AI to create Pinterest Pin drafts from a web page (a blog post, product page, or article URL). Asynchronous and metered: each generation spends the user's plan credits by design tier (approximately 3 for basic, 7 for premium, 1 for no-template/photo-only — resolved server-side), takes 1-3 minutes, and returns a generation id to poll with get_generation_status. Takes an accountId from list_accounts. Once the status is success, the drafts appear in list_posts (status draft) carrying a matching generationId. Calling this again for the same URL while a generation is in flight returns the SAME generation with deduplicated: true and charges nothing — but repeating the call after it completes starts and charges a NEW generation, so poll before retrying. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

get_account

ChatGPT
Use this when you already have an accountId and need that one account's details — its username, display name, connection status, time zone, or claimed domain — without listing every account. Takes an accountId from list_accounts. Prefer list_accounts when you do not have an accountId yet, or when the user's request could mean any of their accounts. A 404 means the account is not yours or is no longer connected to Tailwind; the message says which. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

get_account_analytics

ChatGPT
Use this when the user asks how their Pinterest account is performing overall — impressions, engagement, saves, clicks — or wants a trend over time: returns account-wide totals plus a per-day series. Covers claimed and unclaimed content alike, the same numbers Pinterest Insights shows in Tailwind. Totals combine paid (promoted) and organic activity unless contentType says otherwise: pass ORGANIC for how unpromoted Pins are doing, or PAID for promoted only. get_pin_analytics figures are always organic-only, so compare them against ORGANIC totals, not the default blend. This is the account rollup. For the best-performing Pins use list_top_pins; for one Pin use get_pin_analytics. Reading analytics is free and consumes no credits. Omit startDate and endDate for the last 30 days; supply BOTH to choose a window (supplying one is an error). Dates are UTC YYYY-MM-DD. Pinterest reports at most 90 days back and at most a 90-day span. The range actually used comes back as startDate/endDate — report those, do not assume the period. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

get_account_usage

ChatGPT
Use this before a credit- or post-consuming action, especially a bulk one (many generations, connecting an RSS feed with connect_feed, scheduling many Pins), or when the user asks how many credits or posts they have left or when they refill. Returns remaining credits, the monthly allowance and when it resets, plus the post allowance where the plan has one. Free: this read spends nothing. Read billingSystem, scope and unlimitedScheduling first. When unlimitedScheduling is true (the modular winback plan), scheduling Pins spends no credits, whatever the credit balance says. On modular billing, credits belong to this account and pay for scheduling (one credit per Pin, unless unlimitedScheduling is true) as well as AI generation; postLimit is null. On legacy and Shopify billing, scope is "organization": one credit pool and one post allowance are shared by every account in the organization, so every account reports the same numbers and you must never add them up across accounts. That pool pays for credit-priced features such as AI generation (generate_pins_from_url, generate_pin_copy, and every SmartPin a connected feed drafts) and Turbo, while ordinary scheduling spends postLimit instead of credits. This is a planning snapshot, not permission. Trial allowances are tracked separately, so zero credits does not mean nothing can be done and a positive balance does not guarantee an action will succeed. When an action is refused anyway, report the refusal it returns. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

get_board_keyword_relevance

ChatGPT
Use this when the user asks how well one of their boards covers a keyword or topic, or when auditing whether a board is on-topic. Scores a board's own live Pinterest content against a keyword and returns the Pins that earned the score, each with its own relevance. This reads the board's real Pins from Pinterest, not just what Tailwind scheduled to it, so it covers Pins added outside Tailwind too. Metered: each scored call spends one plan credit, so score the board once and reuse the result rather than re-calling per question. A board that returns state "absent" yielded no readable Pins — it is empty, or the Pinterest connection needs reconnecting — and is not charged; report that as unknown coverage, never as poor coverage. Large boards are scored from a capped sample; when truncated is true say the score covers part of the board. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

get_copy_generation_status

ChatGPT
Use this to poll a Pin copy generation started by generate_pin_copy. It usually completes in under a minute: poll every ~5 seconds. When status is success, result.pins holds the title and description pairs — offer them to the user, or pass one to create_post. This polls Ghostwriter copy only; generate_pins_from_url generations are polled with get_generation_status instead.

get_design_regeneration_status

ChatGPT
Use this to poll a design regeneration started by regenerate_pin_design. It usually completes in a few minutes: poll every ~15 seconds. On success it returns a variationUrl — the new design, which is NOT yet applied to the Pin. Pass that URL to select_pin_design_variation to make it the active design. The billing field reports what was charged and, for a failed regeneration, whether the refund has landed.

get_feed

ChatGPT
Use this when you already have a feedId and need one feed's current state — whether it is active or paused, when it was last checked, why its last check failed, or how many SmartPins it has generated — without listing every feed. Takes a feedId from list_feeds or connect_feed. A not-found error means the feed is not this organization's or has been removed. Org-scoped: needs no accountId.

get_generation_status

ChatGPT
Use this to poll a Pin generation started by generate_pins_from_url. Generation typically completes in 1-3 minutes: poll every ~15 seconds, and don't give up before ~30 minutes — retryable failures can hold processing for several minutes, and a hung generation can stay processing for ~25 minutes before the terminal generation-request-timed-out status appears. A 404 within ~10 seconds of starting the generation is a transient indexing artifact — retry it, don't stop. When status is success, call list_posts with status draft and filter by the matching generationId to find the generated Pins.

get_pin_analytics

ChatGPT
Use this when the user asks how a specific Pin performed: returns that Pin's totals over a window, a per-day series, and lifetime totals that ignore the window. Figures are organic-only: Pinterest's per-Pin analytics exclude paid (promoted) distribution, so a promoted Pin reads far lower here than in list_top_pins or get_account_analytics — that gap is expected, not an error. Only a Pin this account OWNS can be read; anything else returns 404, including a Pin on a group board this account merely collaborates on. Pinterest itself would report on those, but this endpoint does not — do not retry a shared-board Pin, and do not tell the user the id was wrong. A 403 means Pinterest permanently forbids analytics for that Pin — it will never report, so do not retry it. Reading analytics is free and consumes no credits. pinId is the PINTEREST Pin id, NOT the Tailwind postId that list_posts and get_post return as id. Get one from list_top_pins, or from a published post's Pinterest pin id. Passing a Tailwind postId returns a 404. Omit startDate and endDate for the last 30 days; supply BOTH to choose a window (supplying one is an error). Dates are UTC YYYY-MM-DD. Pinterest reports at most 90 days back and at most a 90-day span. The range actually used comes back as startDate/endDate — report those, do not assume the period. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

get_pin_design

ChatGPT
Use this to read the design of a Pin that Tailwind's AI generated, before changing it. Returns the tier, every variation already rendered, and supportedOperations — the list of design tools that actually work on this Pin. Call this first and follow that list: the operations differ by tier, and calling one the Pin does not support is rejected. Takes an accountId from list_accounts and a postId from list_posts. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

get_pin_spacing_rule

ChatGPT
Use this when the user asks how far apart Pins to a destination URL will be spaced, why Pins to one URL land days apart, or whether Pin Spacing will get in the way of a planned cadence: returns the Pin Spacing rule Tailwind applies to Pins linking to that url, either the account-wide DEFAULT rule or a URL-specific CUSTOM rule, with its spacing in days. It is resolved the same way useNextOpenSlot resolves it, so a linked URL reports its base URL's rule and linkedToUrl names that base. A null rule means Pin Spacing does not constrain the URL. useNextOpenSlot on create_post and schedule_post honors this rule. An explicit sendAt sets only a Pin's initial time and is not an exemption: a later Pin Spacing respace or schedule shuffle can still move that Pin, and no tool can lock it in place. Read-only: rules can only be changed in the Tailwind dashboard. For every rule on the account at once, use list_pin_spacing_rules. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

get_post

ChatGPT
Use this when the user asks about one specific Pinterest Pin and a postId is already known (from create_post, schedule_post, or list_posts): returns that single Pin's current status, media, title, description, destination url, board, and scheduled or published time. Reading one Pin by ID is the precise way to confirm what a Pin looks like now — paging list_posts to hunt for it is not. A deleted Pin stays readable with status "deleted" for at least 28 days, after which it becomes eligible for automatic purge; once purged, and for a postId that never existed on this account, the call returns a not-found error. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

get_post_image

ChatGPT
Use this when you need to see what one Pinterest Pin's picture looks like, for example to read the words in a graphic or to match drafts to the copy prepared for them, and a postId is already known (from list_posts, get_post, or create_post): returns the Pin's image as an MCP image content block after a one-line summary of its type and size. Whether the model sees the picture depends on the client: ChatGPT currently passes on only the summary, so there the image's text and contents cannot be read. It is the cover image of an image or carousel Pin, or a video Pin's cover, never the video itself. Images hosted by Tailwind come back 1000px wide. When the image is over 4MB, a video has no cover, or the image's host refuses the fetch, the call fails with a message naming the image's URL instead. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

get_schedule

ChatGPT
Use this when the user asks what is on their Pinterest schedule, when their next opening is, or how full their queue looks: returns the account's schedule over a date window as concrete dated entries, each marked open, scheduled, publishing or published. Unlike list_timeslots — which returns the recurring weekly rules and no occupancy — this shows which specific times are actually free. Read it to answer questions and to reason about the queue. Do NOT read an open entry and then pass its time back as sendAt to schedule a Pin: what is open at read time can be taken by the time the write lands. Pass useNextOpenSlot: true to create_post or schedule_post instead, which resolves and claims a slot in one step. Defaults to the next 14 days from now; from/to accept ISO 8601 datetimes and the window cannot exceed 60 days. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

list_accounts

ChatGPT
Use this when the user wants to see their connected Pinterest accounts, or as the first step of any Pinterest Pin workflow: lists the Pinterest accounts connected to the user's Tailwind organization with each account's accountId, username, display name, connection status, and time zone. Call this first — every account-scoped tool requires an accountId from this list. (The org-scoped feed tools — preview_feed, list_feeds, get_feed, update_feed, delete_feed — do not; connect_feed does, since it assigns a feed's Pins to one account.) When more than one account comes back and the user did not say which one to use, ask the user which account to use before acting on any of them — do not choose for them.

list_board_lists

ChatGPT
Use this when the user asks about their board lists, when auditing how their boards are organized, or when they name one of their board lists as where a Pin should go: lists the account's board lists (Tailwind's named groupings of boards, used to publish one Pin to several boards in order). Each list gives its boards in publishing order. To actually publish to a list, read its boards here and pass them as create_post's intervalBoards, keeping this order — the list itself is not a target you can pass anywhere, and a list is a saved grouping that can change, so what you publish to is the boards it holds right now. A board on the account that appears in no list is not covered by any grouping; a list entry whose board id is absent from list_boards points at a board that no longer exists on the account. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

list_board_sections

ChatGPT
Use this when the user asks about the sections on a Pinterest board, or when you need a section ID: lists the sections on a board by boardId (from list_boards). Sections are subdivisions within a single board. Returns an empty list when the board has no sections, which is normal. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

list_boards

ChatGPT
Use this when the user wants to see their Pinterest boards, or whenever you need a boardId — this is how to get the boardId values that create_post and schedule_post take. Lists the Pinterest boards on an account (accountId from list_accounts) with each board's numeric ID, name, description, follower count and Pin count. This is also how to audit board descriptions: a board with no description comes back with no description field at all, so the boards missing one are the boards where it is absent. The Pin count comes from a cached snapshot and can lag behind Pinterest, so treat it as a lower bound rather than an exact figure. Board IDs are numeric — never pass a board name or URL where a boardId is expected. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

list_feeds

ChatGPT
Use this when the user asks which RSS feeds or blogs they have connected to Tailwind, or when you need a feedId for get_feed, update_feed or delete_feed. Lists the organization's feed subscriptions newest first, each with the Pinterest account its Pins go to, its status, and how many SmartPins it has generated. Feeds belong to the organization, not to an account: omit accountId to see all of them, or pass one to see only the feeds assigning Pins to that account. Unlike list_accounts, list_boards and the other account-scoped tools, accountId here narrows an org-wide list rather than gating it — do not carry over an accountId from an earlier, unrelated call: if the user asked about their feeds in general, omit it, even when an accountId is already in context for a different account. Results are paginated; pass the returned nextCursor to read further.

list_group_boards

ChatGPT
Use this when the user wants to see what public Pinterest group boards exist for a topic, or wants benchmark context for how boards in their niche are named and sized. Returns public collaborative boards matching a keyword from Tailwind's Group Board Finder. These are OTHER people's public boards — they are not the user's own boards (use list_boards for those), and their board ids cannot be passed to create_post or schedule_post. Results are cached and refreshed in the background, so check status before reporting: ready means the boards returned are what we have (an empty list means a completed search genuinely found none), warming means a search is still running and you should tell the user to check back rather than reporting no results, and unavailable means the search failed and no benchmark data can be given for this keyword.

list_pin_spacing_rules

ChatGPT
Use this when the user asks what Pin Spacing rules their account has, or when planning a high-volume schedule across many destination URLs: lists the account-wide default rule, every URL-specific custom rule, and the linked URLs that follow another URL's rule. Pin Spacing is the minimum number of days Tailwind keeps between scheduled Pins that share a destination URL, so a daily cadence needs enough distinct URLs to fill it. To find the rule one particular URL gets, call get_pin_spacing_rule rather than matching URLs against this list: matching ignores http/https and trailing slashes, and a linked URL inherits its base URL's rule. Read-only: rules can only be changed in the Tailwind dashboard. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

list_pins

ChatGPT
Use this when the user wants every Pin on their Pinterest account, or Pins from a date range: an inventory, an export, weekly counts, or finding a Pin by its link or title. Returns Pins newest first however they were published, including Pins created directly on Pinterest or by another tool, and Pins on secret boards. list_posts only covers Pins Tailwind scheduled, and list_top_pins only returns ranked winners, so neither is a complete inventory. Each Pin carries isRepin (saved from another Pin, including the account's own Pins saved to another board), creativeType (Pinterest's format, e.g. REGULAR, VIDEO, SHOPPING), boardId, destinationUrl with any UTM parameters, and createdAt. Pass pinType ORIGINAL for Pins the account created or SAVED for saves of other people's Pins. A save of the account's own Pin to another board is in neither, so the two can sum to less than ALL: to count every save, use ALL and isRepin. To find a Pin by URL or title, page through and match destinationUrl or title yourself: there is no search filter. startDate and endDate filter on createdAt and either may be given alone. A page can hold fewer Pins than limit, or none, while cursor is still returned: keep calling with that cursor until it is absent, and only then report totals as complete. pinId is the PINTEREST Pin id, which get_pin_analytics takes; it is not a Tailwind postId. Reading Pins is free and consumes no credits. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

list_posts

ChatGPT
Use this when the user wants to see their Pinterest Pins — drafts, scheduled (queued), published (sent), failed, or missed: lists an account's Pins filtered by status (default queued) and returns each Pin's postId for use with get_post, schedule_post and delete_post. Takes an accountId from list_accounts. Results are cursor-paginated; listing sent, uploading or missed Pins requires startDate and endDate. A missed Pin is a queued Pin whose scheduled time passed without it publishing; it is listed with status missed, while get_post reports it as queued. Failed and missed Pins match the date window by their scheduled time, except a failed Pin that had already published, which matches by when it published. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

list_saved_keywords

ChatGPT
Use this when the user asks what keywords they have saved, or when you need their own keyword list to write Pin titles and descriptions, pick a board topic, or plan content. Returns the organization's Saved Keywords list from Tailwind — terms the user has already chosen to track. This is NOT keyword research: it will not discover new keywords or report how a term is trending, it only reads back what is already on their list. Pass url to read only the keywords saved for one destination URL, e.g. to check what a Pin's link already has before calling save_keywords. Results are paginated newest-first; pass the returned nextCursor to read further.

list_subscriptions

ChatGPT
Use this to check whether a Pinterest account has active, paying access — for example before starting a setup or launch flow that depends on a paid feature, or when the user asks what plan or subscription they are on. Read the entitled boolean for the answer; the subscriptions list explains what is backing it. Works identically whichever billing system the account's organization is on, so you never need to branch on that. An account with no paying access returns entitled: false and an empty list — that is a normal answer, not an error. This is a read and costs no credits. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

list_timeslots

ChatGPT
Use this when the user asks what their posting schedule looks like, or which times Tailwind recommends: lists the account's smart schedule timeslots. Each slot is a RECURRING WEEKLY time (day of week + HH:MM + timezone), not a concrete date, and this read says nothing about which upcoming occurrences are already taken — use get_schedule for that, which returns dated entries marked open or occupied. This is a read for showing or explaining the recurring schedule, and the place to get the timeslotId that update_timeslot and delete_timeslot need. It is NOT the way to schedule a Pin into it. To place a Pin on the schedule, pass useNextOpenSlot: true to create_post or schedule_post: that resolves the next genuinely open slot and applies the account's Pin Spacing rules for the Pin's destination url. Do not compute an occurrence from these slots and pass it as sendAt — that ignores which slots are occupied and ignores Pin Spacing, so Pins stack up and land off-schedule. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

list_top_pins

ChatGPT
Use this when the user asks which of their Pins are doing best, what is working, or wants their top performers: returns the account's best Pins over a window, in Pinterest's own ranked order. Metrics and ranking combine paid (promoted) and organic activity unless contentType says otherwise, so by default ad spend can crowd organic Pins out of the list and a promoted Pin can rank far higher than its organic-only get_pin_analytics numbers suggest. Pass contentType ORGANIC to rank on unpromoted performance alone, or PAID for promoted only. Ranks by ENGAGEMENT unless sortBy says otherwise, and tells you which metric it used — say so when reporting, since "top" means nothing without it. Only these five metrics rank: ENGAGEMENT, SAVE, IMPRESSION, OUTBOUND_CLICK, PIN_CLICK. Each Pin carries creativeType, Pinterest's creative format (REGULAR, VIDEO, CAROUSEL, IDEA, COLLAGE and others), so this is how to compare performance across formats — group or filter by it rather than guessing a format from the title. It is null when Pinterest did not report one. Each Pin also carries boardId, the Pinterest board it is saved to (the same id list_boards returns), so this is how to compare performance across boards — group by it rather than guessing a board from the title. This is also how you get a Pinterest pinId to pass to get_pin_analytics. Do not re-sort the results — the order returned IS the ranking. Reading analytics is free and consumes no credits. Omit startDate and endDate for the last 30 days; supply BOTH to choose a window (supplying one is an error). Dates are UTC YYYY-MM-DD. Pinterest reports at most 90 days back and at most a 90-day span. The range actually used comes back as startDate/endDate — report those, do not assume the period. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

open_schedule_calendar

ChatGPT
Use this when the user wants to see their Pinterest schedule as a calendar: opens an interactive calendar of an account's scheduled, publishing, published, failed and missed Pins, in the account's time zone, with weekly, 3-day and monthly views and a switcher between the user's Pinterest accounts. Takes no arguments. Returns the Pinterest accounts connected to the user's Tailwind organization, the same list list_accounts returns; the calendar reads each account's Pins through list_posts.

pause_publishing

ChatGPT
Use this when the user wants to stop every scheduled Pin on an account from publishing for a while, for example to correct copy across many queued Pins before any of them goes out: pauses publishing for the whole account. Nothing about the Pins changes: queued Pins keep their scheduled times and drafts stay drafts. While paused, any Pin whose scheduled time arrives fails instead of publishing, and it stays failed after resume_publishing: it has lost its slot, and schedule_post can reschedule it. The rest of the schedule does not shift forward. This is an account-wide switch, not an edit: update_post changes one Pin, and unschedule_post takes one Pin off the schedule. The pause applies to the Pinterest account itself, so it also covers any other Tailwind account connected to the same Pinterest account. Pausing an already paused account changes nothing. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

preview_feed

ChatGPT
Use this before connect_feed when the user gives a website or blog URL rather than a feed URL, or to confirm what a feed contains before subscribing. Resolves the URL, discovering the site's feed when given a plain page URL, and reports what would be subscribed to. Returns kind "feed" with the resolved feedUrl and a sample of its newest entries when there is one answer, or kind "candidates" when the site exposes several feeds — in that case show the user the candidates and ask which to use, then pass that feedUrl to connect_feed. Nothing is saved and no credits are spent. Org-scoped: needs no accountId.

preview_update_posts

ChatGPT
Use this when the user wants many existing Pinterest Pins edited at once, each with its own new values: for example, correcting one wrong word or link across a queue of scheduled Pins whose descriptions otherwise differ. This is the first of the two calls a bulk edit takes, and it changes nothing. It takes up to 50 entries, each naming a postId (from list_posts or get_post) and the fields to change on that Pin, with the same fields and rules as update_post. It returns, for every entry in order, the Pin's current values and the values it would have after the edit (will_update), or the reason the edit would be refused (failed), plus a previewToken when every entry would update. update_posts saves the batch only with that previewToken and the identical posts, within 30 minutes; a batch with refused or unchecked entries gets no token until those entries are removed or fixed and the batch is previewed again. This tool does not search or match text: a find-and-replace is the caller reading the Pins, computing each Pin's new value, and sending those values here. Tailwind keeps no history of Pin copy, so the preview is where the user sees the before-and-after for each Pin before anything is overwritten. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

rebuild_schedule

ChatGPT
Use this ONLY when the user has explicitly asked to regenerate their entire posting schedule from scratch: DELETES every SmartSchedule timeslot the account has and generates slotsPerDay new ones on each of the 7 days, spread between 5am and 11pm in the account's timezone. This is the dashboard's "Generate new SmartSchedule" button. Free, but it cannot be undone — the times the user had are gone, including any they set by hand. Confirm with the user before calling, and tell them their current times will be replaced. Do NOT reach for this to fix a few bad times: to spread a clustered schedule, or to change specific times, use update_timeslot, delete_timeslot and create_timeslot, which leave the rest of the schedule alone. There is no way to ask for a particular part of the day — the generator spreads slots across the whole 5am-11pm window, so it cannot satisfy "mornings only". Evergreen (SmartLoop) slots are the one exception and survive untouched; everything list_timeslots shows is replaced. Pins already scheduled keep the times they were given and are not deleted. Two rebuilds cannot run at once: a second one while the first is still going is refused, so do not retry on a timeout without checking list_timeslots first. If a rebuild fails outright, call list_timeslots before deciding what to do: the delete and the insert are separate steps, so a failure part-way can leave the account with no posting times at all, and re-running the rebuild is what restores them. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

record_widget_event

ChatGPT
Records a product-usage event from Tailwind's Pin card and schedule calendar views: a view showing its first data, a calendar view or account change, or a Pin image that failed to load. Accepts only these fixed events with counts, view names and an image's host name, never Pin content or IDs. Returns an acknowledgement with no data.

regenerate_pin_design

ChatGPT
Use this to have Tailwind's AI generate a NEW design for an AI-designed (premium) Pin. Asynchronous and metered: it spends about 7 of the user's plan credits, takes a few minutes, and returns an id to poll with get_design_regeneration_status. Only works when get_pin_design lists "regenerate" in supportedOperations. Because it spends the user's credits, confirm with the user before calling it, and say what it will cost. Calling it again after one finishes starts and charges ANOTHER regeneration, so poll before retrying. The result does NOT replace the Pin's design on its own: a finished regeneration returns a variationUrl that you then pass to select_pin_design_variation. Tell the user the new design is ready and let them choose, rather than applying it silently. Afterwards get_pin_design reports workspaceStatus pending_apply with the new design as pendingMediaUrl; that is the expected resting state, not a failure, and it stays that way until the user picks the design. To REVISE the design the Pin already has, rather than replace it, pass selectedVariationUrl as well: the active variation's templateImageUrl from get_pin_design. Without it the generator has nothing to revise and produces an unrelated design for the same credits, which is rarely what someone asking to adjust their current design wants. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

report_issue

ChatGPT
Sends a report about a wrong result from a Tailwind tool to the people who maintain these tools, who read every report. Use this when the user asks to report a problem or send feedback to the Tailwind team about a result: an output they tell you is wrong, a result that contradicts another result, or one you had to work around. If you notice a wrong result yourself, tell the user what you found and offer to report it; send it only if they agree. Describe what was asked for, what came back, and why it is wrong: 'list_boards returned 4 boards but the same account shows 11 in get_account' is actionable, 'boards are broken' is not. Name the tool you think is at fault in tool, even if you are unsure of the exact name — a near miss is still useful. What you write is recorded in Tailwind's analytics and posted to an internal Tailwind channel for staff to read, so describe the problem rather than quoting the user's content, and never include credentials or personal data. Write the report itself in English, even when you are working with the user in another language: the Tailwind staff who read these do not all read the user's language, and a report they cannot read is acted on late or not at all. Translate what you need to say rather than leaving it out, and keep speaking to the user in their own language. This does not fix anything now and returns nothing you can use, so tell the user the report was sent and carry on with the corrected information. Do not use it for calls that plainly failed: a rejected argument, an expired connection, or an out-of-credits message are errors to handle, not wrong answers. If the feedback is about something Tailwind has no tool for, use request_capability instead.

request_capability

ChatGPT
Sends a feature request or a missing-capability report to Tailwind's product team, who read these. Use this when the user asks to send feedback or a feature request to the Tailwind team. If you find something Tailwind's tools cannot do — a tool you expected and could not find, a field or filter that does not exist, or a step you had to work around or abandon — tell the user and offer to pass it along; send it only if they agree. Describe what the user was trying to accomplish and what was missing, not just a tool name — 'no way to edit a scheduled Pin's board after creating it' is actionable, 'update_board_v2 missing' is not. What you write is recorded in Tailwind's analytics and posted to an internal Tailwind channel for staff to read, so describe the gap rather than quoting the user's content, and never include credentials or personal data. Write the report itself in English, even when you are working with the user in another language: the Tailwind staff who read these do not all read the user's language, and a report they cannot read is acted on late or not at all. Translate what you need to say rather than leaving it out, and keep speaking to the user in their own language. This does not fix anything now and returns no result you can use, so tell the user it was sent and continue with what Tailwind can do. Do not use it for things that failed for another reason: a rejected argument, an expired connection, or an out-of-credits message are not missing capabilities. Tailwind Communities (formerly Tribes) has no tool here: these tools cannot list the user's Communities, share Pins to one, or read how a Community performs. Tailwind is replacing Communities with Turbo Groups, niche groups of creators who see and engage with each other's Pins in Turbo, which the user joins from suggestions in their Turbo feed and finds again under My Groups in the Tailwind app. Turbo Groups has no tool either. A request for either one is a missing capability that request_capability records; Pinterest group boards (list_group_boards) are a different feature and do not answer it.

resume_publishing

ChatGPT
Use this when the user wants an account's scheduled Pins to start publishing again after pause_publishing: resumes publishing for the whole account. Queued Pins whose scheduled time is still ahead publish at that time, unchanged. Pins whose time arrived during the pause have already failed and are not retried; list_posts with status failed lists them, and schedule_post reschedules one. A Pin failed by a pause reports failure reason publishing_paused. One failed by a pause before October 15, 2026 reports max_pin_limit instead; its failure time falls inside the pause, and it does not mean the account hit a limit. Resuming an account that is not paused changes nothing. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

revert_pin_design

ChatGPT
Use this to put a Pin back to the original photo the design was built from, discarding the generated design. Free and instant. Only works when get_pin_design lists "revert" in supportedOperations, which requires the Pin to still carry its original photo. The generated variations remain available, so this is reversible with select_pin_design_variation. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

save_keywords

ChatGPT
Use this when the user asks to save, add, or track keywords, or agrees to add terms you suggested. Adds keywords to the organization's Saved Keywords list in Tailwind — the same list the dashboard shows. Matching is case-insensitive, so re-sending a term already on the list returns the stored one rather than creating a duplicate; the response is the saved state of every term you sent, whether new or pre-existing. Saving keywords is free and does not consume credits. Do not call this to look keywords up — use list_saved_keywords for that.

save_pins_to_board

ChatGPT
Use this when the user wants existing Pinterest Pins added to one of their boards — "add these to my board", "fill this board with X", "build me a board about X". Saves Pins that already exist on Pinterest onto the board (a repin); it does not create new Pins from the user's own images, which is create_post. Free — this spends no plan credits. This is the last step of build-a-board-about-X: create_board → get_recommended_pins for that new boardId → save_pins_to_board with the ids the user picked. Show the user the recommended Pins and let them choose before calling this, unless they have already said to add everything. Returns savedCount and failedCount. A Pin that could not be saved — usually deleted, or a boardId that does not exist — is counted in failedCount rather than failing the call, so a result of savedCount 0 is a complete failure even though the call succeeded. Which Pins failed is not reported, so re-read the board if the user needs to know. Do NOT retry this call after a timeout or an unclear result. Pinterest treats a repeat save as a second Pin, so a retry duplicates whatever already landed; re-read the board instead. For the same reason, do not pass the same Pin id twice in one call. Re-running get_recommended_pins is safe — it excludes Pins already saved to the board — so use it, not a blind retry, to find what is still missing. Keep batches to a few dozen ids — a large batch of slow saves can still time out with a 504, and saves already in flight are not cancelled, so re-read the board rather than retrying blind. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

schedule_post

ChatGPT
Use this when the user wants to schedule or reschedule an existing Pinterest Pin draft or queued Pin: takes the postId of an existing Pin (from create_post or list_posts) plus exactly ONE of useNextOpenSlot: true or an ISO 8601 sendAt. Prefer useNextOpenSlot whenever the user has not named a specific time — it places the Pin in the account's next open smart schedule slot and applies the account's Pin Spacing rules for the Pin's destination url, which a timestamp you compute yourself cannot. Reserve sendAt for a time the user actually asked for. The Pin must already have title, description, and url set; a draft without a board also needs boardId (numeric ID from list_boards). Pass boardSectionId to schedule it into a Board section — and note that passing boardId on its own clears any section the Pin already had, since a section is only valid on its own Board. Does not work on published Pins. Moving a draft onto the schedule is the charged step: one Pin credit on modular billing with Publishing access, whether subscribed or granted, though winback plans schedule without charge and modular accounts without Publishing draw on a free-trial allowance; legacy and Shopify accounts spend no credits and count it against the plan's post limit instead. Rescheduling a Pin that is already queued costs nothing on any of them. To create and schedule a new Pin in one step, use create_post instead. To take a queued Pin off the schedule and back to draft, use unschedule_post. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

select_pin_design_variation

ChatGPT
Use this to make one of a Pin's existing design variations the active one. Free and instant — no rendering, no credits. Pass a templateImageUrl from get_pin_design's variations list, or the variationUrl a finished regeneration produced. Also how to apply the design behind workspaceStatus "pending_apply": pass its pendingMediaUrl. When that design came from a regeneration the user has not chosen yet, confirm with them first rather than applying it to tidy the state. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

tag_saved_keywords

ChatGPT
Use this when the user asks to tag, label, or group saved keywords, e.g. marking the ones that match their own site content. Applies tags by name to keywords on the organization's Saved Keywords list, using the keyword ids from list_saved_keywords. A tag name the user has not used before is created; an existing one is reused, never duplicated. Every keyword gets every tag you send, and re-applying a tag a keyword already has changes nothing. If any keyword id is not on this user's list, nothing is changed and the error names the unknown ids. Tags show on the dashboard's Saved Keywords page, where the user can filter and export by them. Free; does not consume credits.

unschedule_post

ChatGPT
Use this when the user wants to take a scheduled (queued) Pinterest Pin off the schedule without losing it, for example to hold back a time-sensitive Pin or revise it before it publishes: moves the Pin back to draft by postId (from list_posts, create_post or schedule_post). The Pin keeps its postId, image, title, description, link, Board, Board section, alt text, product tags and carousel images; only its scheduled time is removed. Works on any queued Pin on the account, whether it was created in Tailwind, through the API or here, including a missed Pin whose time has passed. Any Pin credit charged for scheduling it is returned, as when unscheduling in the Tailwind dashboard; a Pin scheduled on a free-trial allowance or in an earlier billing period, or on a legacy or Shopify plan, has nothing to return. Scheduling the draft again with schedule_post charges again. Only queued Pins can be unscheduled: a published Pin has to be changed in the Pinterest app, and a draft is already off the schedule. Use this rather than delete_post plus a fresh create_post whenever the Pin should be kept. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

untag_saved_keywords

ChatGPT
Use this when the user asks to remove a tag or label from saved keywords. Removes tags by name from keywords on the organization's Saved Keywords list, using the keyword ids from list_saved_keywords; the tag names a keyword carries are in its tags field there. The tag itself is kept for reuse even if no keyword carries it any more. Removing a tag a keyword does not have changes nothing. If any keyword id or tag name does not exist for this user, nothing is changed and the error names what was not found.

update_board

ChatGPT
Use this when the user wants to rename a Pinterest board or change its description: updates an existing board by boardId (from list_boards). Boards marked as collaborator entries in list_boards belong to someone else — the account can pin to them but cannot rename them, so do not pass those IDs here. Supply at least one of name or description; anything you omit is left as it is. A board's privacy cannot be changed here — flipping a public board to secret would hide every Pin on it from everyone but the owner. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

update_board_list

ChatGPT
Use this when the user wants to rename one of their board lists, add or remove boards in it, or change the order its boards publish in: replaces the list's name and boards with exactly what you send. Send the whole list every time, in publishing order. A board you leave out is removed from the list, so to rename only, resend its current boards from list_board_lists unchanged; to reorder, send the same boards in the new order. Removing a board from a list never changes the board or its Pins on Pinterest. Free, and safe to retry with the same arguments. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

update_board_section

ChatGPT
Use this when the user wants to rename a section on a Pinterest board: renames a section by sectionId (from list_board_sections) on a board by boardId (from list_boards). If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

update_feed

ChatGPT
Use this when the user wants to pause or resume a feed, or change the defaults applied to the Pins it generates (keywords, design tier and style, regeneration). Takes a feedId from list_feeds; send only the fields to change, and at least one. Pause with status "paused" and resume with status "active". Pausing keeps the subscription but stops the daily check, so the feed's record of already-seen posts stops advancing: everything the site publishes during the pause counts as new on resume and will generate Pins — and spend credits — until the backlog clears (up to 25 per feed per day). If the user wants generation to stop for good without that catch-up, use delete_feed instead. Resuming re-checks the feed's Pinterest account and is refused if it is no longer connected. The account a feed is assigned to cannot be changed. Editing spends no credits.

update_pin_design

ChatGPT
Use this to re-render a template-designed Pin with a new overlay title, new colors, or a new image. Free and synchronous, but it re-renders the design server-side and can take several seconds. Only works when get_pin_design lists "update" in supportedOperations — AI-generated (premium) Pins change through regenerate_pin_design instead. Send everything you want changed in ONE call: each call is a separate render, and omitted fields keep their current values. For a new image, pass a publicly reachable mediaUrl, or an uploadId from create_media_upload. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

update_post

ChatGPT
Use this when the user wants to change an existing Pinterest Pin's copy — its title, description, destination link, board, Board section, alt text, product tags, or whether it is a simplified or standard Pin — on a draft or a scheduled (queued) Pin, by postId (from create_post, list_posts or get_post). Supply at least one of title, description, url, boardId, boardSectionId, altText, productTagPinIds or isSimplifiedPin — a call with only accountId and postId is rejected. Use productTagPinIds to tag catalog products on a Pin that was created without them, to change which products it tags, or — with an empty array — to remove its tags; there is no need to delete and recreate the Pin for any of that. Use isSimplifiedPin to switch a Pin between simplified (true) and standard (false) in place, again without recreating it. Moving the Pin with boardId alone clears any Board section it was in, because a section is only valid on its own Board: pass boardSectionId as well to land it in a section of the new Board, or "" to put it at the Board root. Only the fields you send are changed; everything else is left as it is. Editing is free and does not consume a credit. This does NOT schedule, reschedule or unschedule: use schedule_post or unschedule_post for that, and note the Pin's image cannot be changed at all — that needs a delete_post plus a fresh create_post. A Pin already published to Pinterest cannot be edited through Tailwind; the user has to edit it in the Pinterest app. Neither this tool nor a Pinterest Pin has a keyword field: a keyword reaches Pinterest only as words in the Pin's title or description. Tailwind keeps keywords in the organization's Saved Keywords list, where each term can be tied to destination URLs; that list is what the Pin Scheduler's Add keywords control shows for a Pin's link. list_saved_keywords with url returns the keywords saved for a Pin's link, and save_keywords with urls adds terms to that list. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

update_posts

ChatGPT
Use this when the user has seen and agreed to a bulk Pin edit that preview_update_posts returned, to save it. This is the second of the two calls a bulk edit takes. It takes the same accountId and posts that were previewed and the previewToken the preview returned; a batch that differs from the preview in any way, or a token older than 30 minutes, is rejected with nothing changed, and so is a call with no previewToken. Each Pin is then saved on its own, and results lists every entry in request order as updated, failed (with the reason) or not_attempted (not reached before the time limit; unchanged, and safe to send again). Each updated result's previous holds the edited fields' values from before the edit in this tool's input form; those entries, previewed and saved the same way, undo the edit. An empty title, description or url is absent from previous, since it cannot be emptied again; an empty alt text is reported as an empty string, which clears it. Editing is free and never changes when a Pin publishes. It cannot change a Pin's image or a Pin already published to Pinterest. For a single Pin, update_post is the equivalent call. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

update_timeslot

ChatGPT
Use this when the user wants an existing posting time moved: changes a smart schedule timeslot's day, time or timezone. Pass the timeslotId from list_timeslots, plus only the fields that change — anything omitted keeps its current value. At least one of dayPreference, time or timezone is required. Free. This is the right tool for fixing a badly spread schedule: move the slots that are clustered rather than rebuilding everything, which would discard the whole schedule and generate a new one. Pins already scheduled onto this slot keep the time they were given; moving the slot changes where FUTURE Pins land, so the user may still see Pins at the old time until those publish. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

Capabilities

WritesInteractive

Example Prompts

Click any prompt to copy it.

App Stats

72

Tools

3

Prompts

ChatGPT

Platforms

Works with

ChatGPT

Data refreshed daily