Tailwind
Create & plan Pinterest Pins
- Category
- Marketing
- Primary Subcategory
- Social Media Management & Scheduling
Integration details
Description
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.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- Social Media Management & Scheduling
- Secondary Subcategories
- None listed
- Brand
- Tailwind
- Access
- Account required
- First tracked
- 2026-08-04
- Tool count
- 51
- Geography
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Get alerts for Tailwind
Get updates when Tailwind’s Discoverability Score or category rank changes.
ChatGPT Plugin Discovery Score
ChatGPT Plugin discovery is coming soon
ChatGPT can surface a Plugin when it matches a user's request.Your Plugin Discovery Score measures how often yours appears.
No spam. Unsubscribe any time.
What discovery looks like

Competing in ChatGPT Social Media Management & Scheduling
View Category51 tools agents can invoke
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_account_usage
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_subscriptions
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.
connect_feed
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
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. 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_post
Use this when the user wants to Pin their own file — a Canva export, a photo or a video on disk, anything that has no publicly accessible URL. There are two ways to use it. (A) If the user attached the file to the conversation, pass it as `file` along with its `extension`: the server fetches the bytes and uploads them for you, and the result hands back an uploadId that is ready to use — call create_post with that uploadId INSTEAD OF mediaUrl and you are done. Do not try to read, re-encode or PUT the bytes yourself. (B) If no file is attached, call this with just the extension to get a write-only uploadUrl, then PUT the raw bytes to it with a Content-Type header exactly matching the returned contentType (the URL's signature covers that header, so any other value is rejected), then call create_post with the uploadId. If your environment cannot make outbound HTTP requests, give the user the uploadUrl and contentType, ask them to PUT the file themselves, and continue with the uploadId once they confirm — the uploadId stays valid for days, so there is no need to abandon the flow. Either way the uploadId is single-use and can be attached to exactly one Pin, so a second Pin needs a second upload. Staging bytes is free — it costs no credits; only scheduling a Pin is billed, and what that costs depends on the account's billing system. If the media already has a public URL, skip this tool and pass that URL to create_post as mediaUrl instead.
create_media_upload
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_board_section
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.
create_timeslot
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. 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
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_keyword
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_board_section
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. 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_post
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_saved_keywords
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.
delete_timeslot
Use this when the user wants Pin titles and descriptions written the way THEIR Tailwind account already writes them. This is not generic copywriting: it runs Tailwind's Ghostwriter against 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. Prefer it over writing Pin copy yourself whenever the user has a Tailwind account, because you cannot see that brand context. 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_pin_copy
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.
generate_pins_from_url
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. 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_analytics
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_copy_generation_status
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_generation_status
Use this when you already have an accountId and need that one account's details — its username, display name, connection status, 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
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_design
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_feed
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. 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_analytics
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.
get_schedule
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_design_regeneration_status
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
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, and connection status. 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_accounts
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_boards
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_lists
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_board_sections
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_feeds
Use this when the user wants to see their Pinterest Pins — drafts, scheduled (queued), or published (sent): 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 or uploading Pins requires startDate and endDate. 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
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_group_boards
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. Results are paginated newest-first; pass the returned nextCursor to read further.
list_saved_keywords
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_timeslots
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. 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. 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.
list_top_pins
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_feed
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.
rebuild_schedule
Use this when the user asks what Pins they should add to a board, how to fill a gap on a board, or wants content ideas for a board and keyword. Searches Pinterest's public content for Pins matching the keyword, drops any the board already has and any promoted/ad content, and returns what is left ranked strongest first, each with its own relevance as the reason it fits. Free — this spends no plan credits, unlike get_board_keyword_relevance. Pairs with that tool: score the board first to find a weak keyword, then call this to fix it. These are candidates from across Pinterest, not the user's own Pins, so present them as suggestions to review rather than as content they already own — creating a Pin from one still needs create_post. An empty list means nothing on-topic was found for that keyword, not that the board is bad. 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_recommended_pins
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.
regenerate_pin_design
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_feed
Use this when a Tailwind tool gave you a wrong answer rather than an error: a result that contradicts another result you got, a result you had to work around to keep going, or an output the user tells you is wrong. Send it to the people who maintain these tools, who read every report. Call it the moment you notice, rather than quietly adapting — an agent that works around a wrong answer leaves no trace of it, and a wrong answer nobody reports stays wrong for every user. Describe what you 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 what you found 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 Tailwind simply has no tool for what you need, use request_capability instead.
report_issue
Use this the moment 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. Send it to Tailwind's product team, who read these. Call it when you hit the gap, rather than silently working around it: a workaround leaves no trace, and unreported gaps are the main reason missing tools stay missing. Also call it when the user asks for something Tailwind cannot do, or asks for a feature directly. Describe what you were 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 report the gap to the user in the same turn 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.
request_capability
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.
revert_pin_design
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_keywords
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. 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
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_board_keyword_relevance
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.
select_pin_design_variation
Use this when the user wants to change an existing Pinterest Pin's copy — its title, description, destination link, board, Board section, alt text, or product tags — 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 or productTagPinIds — 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. 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 or reschedule: use schedule_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. 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
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
How do I improve a ChatGPT Plugin's discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
What are Tailwind alternatives on ChatGPT?
As of 2026-09-29, Tailwind competes with 1Social, 8digit Planner, Abency, Breakreach, BulkPublish, Cambiante: Content Manager, Dash Social, Dathent, DunSocial, FeedBoss, FeedClaw, Genviral, Loomly, Maeve Social, Mallary, Metricool, Minter.io, Ocoya, Planable, post bridge, Post Metadata Extractor, Postbeam, PostFast, Posthive, Postify, Postiz, Postly, PostNitro, PostPlanify, PostSyncer, Posty, Publora, Repostit, Rolino, Scribe, seenpaid, ShareThis AI, SimplePost, Social Bee by HYVE, Social Post Previewer, SocialHub, Sociality.io for social media, Sydium, Sync Socials, Upload-Post, ViewPrinter, viral.app, Windsor.ai Instagram, xpost, Youanai Social, エルグラム in ChatGPT Social Media Management & Scheduling, ranked by public Discoverability Score.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.