Planable
Planable is the social media management platform built for agency teams and multi-brand organizations. Connect ChatGPT to your Planable workspaces to draft posts directly into client accounts, pull pending approvals across all your clients at once, audit what's scheduled for the week, and generate client-ready performance reports from live analytics data. Everything stays in Planable — your drafts, your approvals, your content calendar. ChatGPT just makes the work faster.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- Social Media Management & Scheduling
- Secondary Subcategories
- None listed
- Brand
- Planable
- Access
- Account required
- First tracked
- 2026-06-04
- Tool count
- 48
- Geography
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is visible.
ChatGPT Plugin Discoverability Score
ChatGPT organic discovery is not live yet
Planable is tracked in the ChatGPT Plugin registry. Public organic-discovery measurement is not live for ChatGPT yet, so there is no score to publish today.
Get notified when your score goes live
Enter your work email and we’ll notify you when ChatGPT Plugin organic discovery scoring launches.
No spam. Unsubscribe any time.
Competing in ChatGPT Social Media Management & Scheduling
View CategoryHow the Discoverability Score works
Organic discovery scoring for Planable on ChatGPT is not live yet. The score will use measured agent conversations when it launches.
Organic discovery scoring is pending. Your Plugin score will appear on this scale when measurement goes live.
FoundDiagnostic
Whether Claude found your Plugin in connector search. It must be Found before it can reach the picker, but the score counts picker appearances—not search results.
PickedMain score
How often your Plugin appeared in the picker, or Claude invoked it directly, across contested conversations. This percentage is the Discoverability Score; the headline number is rounded.
PositionedDiagnostic
What position your Plugin appeared in when it was shown in the picker. This shows prominence, but it does not affect the score.
48 tools agents can invoke
Start tracking a competitor for one of the user's own pages, by @handle or profile URL. Returns the tracked competitor (trackedCompetitorId, scrapedPageId, handle, displayName, platform, syncStatus) and `created` — false when the page already tracked it (re-adding is a no-op, never a duplicate). Requires workspaceId and pageId; available on Instagram, Facebook, YouTube, TikTok, LinkedIn pages only, capped at 5 competitors per page. Needs the analytics add-on, the analyze scope, and OWNER, ADMINISTRATOR, or ANALYZE permission. WHEN TO CALL: when the user wants to start tracking or monitoring a competitor on their page. Pair with list_competitors to see what's already tracked.
add_competitor
Approve a Planable post. Runs the full approval pipeline including multi-level approval support, auto-scheduling (if configured in workspace settings), activity logging, and notifications. Returns the updated post. Idempotent — approving an already-approved post is a no-op. PREREQUISITE: The workspace must have an approval workflow configured (approvalWorkflow is not "none"). If approval is not configured, this tool will reject. WHEN TO CALL: Use after reviewing a post via get_post. The user must have APPROVE permission in the workspace. Use list_posts with approvalStatus=PENDING_MY_APPROVAL to find posts awaiting approval.
approve_post
Add one or more posts to a campaign in a Planable workspace, setting the campaign on each post. Grouped posts are kept in sync automatically. Returns modifiedCount, the number of posts updated. Requires workspaceId, campaignId, and postIds; campaignId comes from list_campaigns and postIds from list_posts.
assign_posts_to_campaign
Create a new campaign in a Planable workspace to group related posts. Only name is required. Optional: description (plain text), status (planned, active, completed; defaults to planned), color and icon (default to a standard blue calendar), and a startedAt+endedAt date range (both ISO 8601, provided together, start before end). Returns the created campaign. Workspaces have a plan-based campaign limit; when it is reached the tool returns an error and no campaign is created until an existing one is deleted or the plan is upgraded. The workspaceId comes from list_workspaces.
create_campaign
Add a comment or internal note to a Planable post. Set teamOnly to true for an internal note visible only to team members, or false (default) for a public comment. Returns the created comment with id, text, authorId, teamOnly, and createdAt. WHEN TO CALL: Use to leave feedback, ask questions, or add notes to a post. The postId comes from list_posts or get_post.
create_comment
Create a saved custom view in a Planable workspace. Requires name (max 30 chars) and layout (calendar, feed, grid, list). Optional: type (personal, team-only, workspace, public; defaults to personal), color, selectedPageIds (feed and grid views target exactly one page; calendar and list views accept multiple and default to all workspace pages — call list_pages to target specific ones), commentable (public views only — whether external viewers can comment/suggest), and the filter facets postStatus, approvalStatus, labels (UUIDs from list_labels), and postClassifications (POST, STORY, REELS). Set type to "public" to generate a shareable link, returned as shareUrl. Creating workspace, team-only, or public views requires EDIT-tier permission; team-only is unavailable to client-membership users. grid views require the Pro plan and list views require the Enterprise plan; feed and calendar are available on every plan. Returns the created view.
create_custom_view
Create synced unpublished posts across multiple Planable pages at once. All posts in the group share the same content and are kept in sync; if publishAtScheduledDate is true with scheduledAt, they are confirmed for future auto-publishing. Supports text content, multiple media URLs, labels, and an optional schedule time. Classification: post, story, reels. REQUIRED SETUP: Call list_workspaces then list_pages to get valid workspaceId and pageId values. Requires at least 2 pageIds. GROUPING BEHAVIOR — read carefully, the result is not always a single synced group: the pageIds are split into two sub-groups by page type (universal pages vs. non-universal pages). Each sub-group is processed independently. A sub-group with 2 or more pages becomes a synced grouped post (groupId, groupPageIds, groupSync=true on every member). A sub-group with exactly 1 page becomes a standalone post (no groupId). So you may get: one grouped post, two grouped posts, one grouped post and one standalone, or even two standalone posts if the request was 1 universal + 1 non-universal. Always inspect the groupId / groupPageIds fields on each returned post to see what actually happened, and explain the outcome to the user in those terms — don't claim 'one synced group' when the API returned two. MEDIA: mediaUrls is an optional array of public image/video URLs, max 20 items and ~100MB each. Media is uploaded once and reused across every post created by this call. If some uploads fail, posts are still created with successful ones and mediaError explains what went wrong. LABELS: Call list_labels first to discover available labels, then pass label UUIDs. labels must be UUIDs from the workspace label catalog; unknown UUIDs return a validation error. WHEN TO USE: Use this instead of multiple create_post calls when the user wants the same content on multiple platforms. For per-page content customization, use create_post once per page instead.
create_grouped_post
Create a new label in a Planable workspace. Labels are colored tags used to categorize posts. Available colors: pattens-blue, feta, pink-lace, pippin, peach-cream, fog, half-and-half, lime-flurish, snowy-mint, blue-chalk, mabel, silver-sand. Returns the created label with uuid, color, and text. WHEN TO CALL: Use when the user wants to create a new tag/category for organizing posts. Call list_labels first to check existing labels and avoid duplicates.
create_label
Create an unpublished post on a single Planable page. By default the post remains a draft; if publishAtScheduledDate is true with scheduledAt, it is confirmed for future auto-publishing. Supports text content, multiple media URLs, labels, and an optional schedule time. Classification: post, story, reels. REQUIRED SETUP: Call list_workspaces then list_pages to get valid workspaceId and pageId values. MEDIA: mediaUrls is an optional array of public image/video URLs, max 20 items and ~100MB each. Multiple images create a carousel/multi-image post; a single video creates a video post. Stories only support one media item. If some uploads fail, the post is still created with successful ones and mediaError explains what went wrong. mediaCount in the response shows how many items were attached. LABELS: Call list_labels first to discover available labels, then pass label UUIDs. labels must be UUIDs from the workspace label catalog; unknown UUIDs return a validation error. MULTI-PLATFORM: This tool creates a post on one page at a time. For synced multi-platform posting, use create_grouped_post instead. VALIDATION: The response includes validationErrors listing platform rules not yet satisfied (e.g., Instagram requires media). These do not prevent draft creation but must be resolved before publishing.
create_post
Delete a Planable campaign. The strategy parameter determines what happens to the campaign's content: 'soft' (the default) removes the campaign only and keeps its posts and media, unlinking them from the campaign; 'hard' additionally deletes every post in the campaign and the media used only by it permanently, which cannot be undone. Returns the campaignId, the strategy that was applied, and deleted: true. Requires workspaceId and campaignId (from list_campaigns).
delete_campaign
Delete a saved custom view. Permanently removes the view and any favorites pointing at it; if the view was public, its shareable link stops working. Returns the viewId and deleted: true. Requires EDIT-tier permission, workspaceId, and viewId (from list_custom_views).
delete_custom_view
Disapprove (reject) a Planable post. Walks back approval status, clears auto-scheduled publishing if configured, logs activity, and notifies relevant users. Returns the updated post. PREREQUISITE: The workspace must have an approval workflow configured (approvalWorkflow is not "none"). If approval is not configured, this tool will reject. WHEN TO CALL: Use when a post needs changes before it can be published. The user must have APPROVE permission. Consider adding a comment via create_comment to explain the rejection reason.
disapprove_post
Get a single Planable campaign by id, including its post counts. Returns the campaign fields (name, status, description as plain text, color, icon, dates, links) plus postCounts: scheduled, published, and partialApproved (the last only when the workspace uses an approval workflow). The campaignId comes from list_campaigns and the workspaceId from list_workspaces.
get_campaign
Compare the user's own page against every competitor tracked for it over a time window. Returns one row per account — the user's own page first (isOwn=true), then each competitor — with followers, posts published in the window, totalEngagement, avgEngagement (per post), engagementRate, and views (null on platforms with no views metric), plus `previous` (the same metrics over the preceding equal-length window) for period-over-period change. Requires workspaceId and pageId; defaults to the last 30 days, or pass an explicit startDate+endDate window. Available on Instagram, Facebook, YouTube, TikTok, LinkedIn pages only. WHEN TO CALL: Use for "how do I compare to my competitors" questions. Returns an empty list when the page tracks no competitors.
get_competitor_comparison
Followers/engagement time series for the user's page (isOwn=true) and all its tracked competitors — one series per account, with daily points over the window. Requires workspaceId and pageId; optionally a scrapedPageIds filter to narrow to specific competitors, and a startDate+endDate window (defaults to the last 30 days). WHEN TO CALL: Use to show how the user and their competitors have grown, or how engagement moved over time.
get_competitor_metrics_trend
The best-performing posts across all of a page's tracked competitors, merged and ranked by sortBy (engagementRate, likes, or views), each tagged with its competitor (scrapedPageId, handle). Returns url, content, mediaType, postedAt, likes, comments, shares, views, engagementRate, and hashtags per post. Requires workspaceId and pageId; optionally a scrapedPageIds filter, a date window, and limit. WHEN TO CALL: Use for "what content performs best for my competitors" questions.
get_competitor_top_posts
Get a single custom view by id, including its decoded filters. Returns the same fields as list_custom_views plus filters (the supported facets: postStatus, approvalStatus, labels, postClassifications) and hasUnsupportedFilters — true when the view also uses filters this API doesn't model (e.g. content type, author, text search, or a locked date range), so the decoded filters are partial. The viewId comes from list_custom_views and workspaceId from list_workspaces.
get_custom_view
Get the daily metrics time series for a tracked social listening keyword over a date window. Requires workspaceId and a keywordId (from list_keywords), plus a startDate+endDate window. Returns one entry per day (ascending by date), each with date, mentions (volume), engagement, sentiment (positive / negative / neutral counts), and platformBreakdown (per-platform mentions and engagement across twitter, youtube, reddit, tiktok, facebook, instagram, linkedin, web). WHEN TO CALL: Use for "how is mention volume / engagement / sentiment trending over time" questions, or to chart a keyword. For individual posts use list_keyword_mentions instead. Returns an empty list when there is no data in the window.
get_keyword_metrics
Get aggregated totals for a tracked social listening keyword over a date window — the daily metrics folded into one summary. Requires workspaceId and a keywordId (from list_keywords), plus a startDate+endDate window. Returns total mentions, total engagement, sentiment (summed positive / negative / neutral counts), platformBreakdown (per-platform total mentions and engagement across twitter, youtube, reddit, tiktok, facebook, instagram, linkedin, web), and daysWithData (how many days in the window had metrics). WHEN TO CALL: Use for "how many mentions / how much engagement did this keyword get" overview questions. For the day-by-day breakdown use get_keyword_metrics; for individual posts use list_keyword_mentions. All totals are zero when there is no data in the window.
get_keyword_metrics_summary
Get detail for a single media item from the workspace media library. Returns the same fields as list_media for one item. Use to check the processing status of a recently uploaded media item. The mediaId comes from list_media, upload_media, or a create_post response.
get_media
Get per-page/profile performance metrics for the requested pages over a date range. Returns one row per page with: (1) normalized cross-platform metrics (audience, posts, impressions, engagement, engagementRate) for comparison across platforms, (2) platform-specific metrics matching what the app shows for each platform (e.g. Instagram reach, TikTok profile views, YouTube watch time), and (3) `metricsFetchedAt` (earliest/latest snapshot timestamps). Audience is the latest follower/subscriber count; activity metrics are summed over the range. Reads existing stored metrics. Unsupported platforms (Google My Business, Threads) and pageIds outside the workspace are reported in unsupportedPages.
get_page_metrics
Get aggregated page/profile metrics totals across all requested pages. Returns summed normalized metrics (audience, posts, impressions, engagement, engagementRate), the number of pages that contributed, and `metricsFetchedAt` (earliest/latest snapshot timestamps). Audience is the sum of latest follower/subscriber counts across pages. Reads existing stored metrics. Unsupported platforms (Google My Business, Threads) and pageIds outside the workspace are reported in unsupportedPages.
get_page_metrics_summary
Get full detail for a single Planable post by id within a workspace. Returns the complete post including full text content (plainText, not truncated), media URLs, approval status (approved, approvedBy), labels with colors, schedule info, group info (groupId, groupPageIds, groupSync), and comment/note counts. Requires workspaceId and postId — get both from list_posts results. WHEN TO CALL: Use after list_posts when you need the full content of a specific post — list_posts only returns textPreview (up to 500 chars). Also use to check media attachments or detailed approval info.
get_post
Get per-post performance metrics for published posts in a workspace. Returns each post with normalized cross-platform metrics (impressions, views, engagement, likes, comments, shares) plus lightweight post context (pageType, scheduledAt, textPreview). Reads existing stored metrics and supports pagination via limit/offset; newest posts first. pageIds that do not belong to the workspace are reported in unsupportedPages — surface them to the user instead of silently returning zero items.
get_post_metrics
Get aggregated post metrics totals for the requested pages. Returns summed normalized metrics (impressions, views, engagement, likes, comments, shares), the number of posts that contributed, and `metricsFetchedAt` (earliest/latest snapshot timestamps). Reads existing stored metrics. This tool aggregates every post in the window at once, so it is not all-time: if you omit startDate or endDate it falls back to the last 30 days and reports the window it used in `appliedDateRange`, with `defaulted: true`. When `defaulted` is true, tell the user which window the totals cover rather than presenting them as all-time, and pass explicit dates if they wanted a different period. pageIds that do not belong to the workspace are reported in unsupportedPages — surface them to the user instead of silently returning zero totals.
get_post_metrics_summary
Get total posts count across all workspaces in a company, with a per-workspace breakdown. Requires a companyId — call list_companies first to get it. Returns total count and an array of { workspaceId, count } entries. WHEN TO CALL: Use for quick overview or reporting without fetching all posts. Faster than paginating through list_posts when only counts are needed.
get_posts_count
Get detailed information about a specific Planable workspace. Returns id, name, companyId, companyName, hasAnalytics (whether the analytics add-on is active on the company), hasEngagement (whether the engagement add-on is active on the company), approvalWorkflow (the workspace approval configuration: "none", "optional", "required", or "multi-level"), and modifiedAt. WHEN TO CALL: Use this once you have a workspace id and want to check whether it has the analytics or engagement add-ons active, or whether it has an approval workflow configured before approving or rejecting posts. hasAnalytics / hasEngagement reflect add-on status only — they do NOT confirm that the current user has access. Analytics tools also require the "analyze" scope and the ANALYZE permission on the workspace; engagement tools require the "engage" scope and the SOCIAL-COMMENTS-MODERATOR permission. If hasAnalytics is false the analytics tools will reject; if it is true but the user lacks the scope or permission they will still reject. Treat these as a hint, not a guarantee — when in doubt, just call the analytics or engagement tool and surface the error to the user. approvalWorkflow: "none" means no approval is configured — approving or rejecting posts will fail. "optional", "required", or "multi-level" means approval is available.
get_workspace_details
List the campaigns in a Planable workspace. A campaign groups related posts together for a coordinated marketing effort. Returns id, name, status, description (plain text), color, icon, startedAt/endedAt (if set), links, createdAt and modifiedAt for each campaign. Newest first. Optionally filter by status (planned, active, completed); omit to return all. Supports pagination via limit and offset. Post counts are not included here; get_campaign returns them for a single campaign. The workspaceId comes from list_workspaces.
list_campaigns
List comments and internal notes on a Planable post, newest first. Returns id, postId, text, authorId, teamOnly flag, and createdAt for each comment. Use the teamOnly filter to show only internal notes (true) or only public comments (false). Omit to see all. Supports pagination via limit and offset. WHEN TO CALL: Use after list_posts or get_post to review the conversation and feedback on a post.
list_comments
List all Planable companies the authenticated user is a member of. A company is the top-level container in Planable's hierarchy (company → workspace → page → post). Returns id, name, type ('brand' for single-brand accounts, 'agency' for multi-client accounts managing multiple brands), workspacesNumber, usersNumber, isOnFreePlan, and createdAt. Sorted alphabetically by name. Demo companies excluded. WHEN TO CALL: Call this when the user references a specific client or brand by name, or when the query spans multiple companies (e.g. "all clients", "every brand"). If context already implies a single company, skip to list_workspaces. MULTI-COMPANY QUERIES: If the user asks for data across all clients or all brands, iterate over every company returned here, call list_workspaces for each, then aggregate results. TERMINOLOGY GUARD: SMM users sometimes say 'client', 'brand', 'room', 'project', or 'space' loosely to mean a workspace inside one company — NOT a separate company. Only call list_companies when the user is clearly asking about top-level billing entities, multiple companies, or cross-company aggregates. When in doubt and the user's wording is workspace-shaped (rooms / client spaces / brand spaces / projects), prefer list_workspaces.
list_companies
List the competitors tracked for one of the user's own pages, joined with each competitor's latest profile snapshot. Returns trackedCompetitorId, scrapedPageId (the id other competitor tools take), handle, displayName, platform, profileImageUrl, syncStatus (whether the competitor's data is still being fetched), and lastSyncedAt. Requires workspaceId and pageId; available on Instagram, Facebook, YouTube, TikTok, LinkedIn pages only. WHEN TO CALL: to discover which competitors a page tracks and to obtain each competitor's scrapedPageId. Returns an empty list when the page tracks no competitors.
list_competitors
List the saved custom views in a Planable workspace. A custom view is a saved layout (calendar, feed, grid, list) + filter combination scoped to selected pages; a view of type "public" has a shareable link. Returns id, name, color, layout, type (personal, team-only, workspace, public), selectedPageIds, commentable, hasFilters, shareUrl (public views only), createdAt, modifiedAt, and creatorId. Only returns views the user can see (workspace and public views, their own personal views, and team-only views for team members). Newest first, paginated via limit and offset. The workspaceId comes from list_workspaces.
list_custom_views
List individual public mentions for a tracked social listening keyword. Requires workspaceId and a keywordId (from list_keywords), plus a startDate+endDate window. Optionally filter by platform (twitter, youtube, reddit, tiktok, facebook, instagram, linkedin, web) or sentiment (positive, negative, neutral), and sort by engagement or recency. Each mention has top-level platform, publishedAt, engagement, sentiment, and isBrandMention, plus the raw platform-specific post under a key named after the platform (e.g. `twitter`, `reddit`) holding author, text, url, and per-platform metrics. Brand keywords return only full-phrase brand mentions; topic keywords return all matches. Paginated: total is the full match count; pass the returned nextOffset back as cursor for the next page. WHEN TO CALL: Use to read what people are actually posting about a keyword. Returns an empty list when nothing matches the window.
list_keyword_mentions
List all labels available in a Planable workspace. Labels are colored tags used to categorize posts. Returns uuid, color, and text for each label. Call this before create_post or create_grouped_post if you want to tag the new post with labels — pass the label UUIDs in the labels parameter.
list_labels
List media uploads in a Planable workspace media library. Returns id, type (image/video/gif), name, url, thumbnailUrl, dimensions, size, mimeType, status (uploading/processing/error/success), and createdAt. Newest items first. Supports pagination via limit and offset. WHEN TO CALL: Use to browse available media assets before creating posts, or to find media for attachment.
list_media
List pages/profiles in a Planable workspace. A page is a connected social media profile (facebook, twitter, instagram, linkedin, googleMyBusiness, youtube, tiktok, pinterest, threads, universal), a mockup page (for drafting content without a live platform connection), or a universal content page. Returns id, name, platform type, connection status, display metadata, and isMockup (true for mockup/custom pages that are not connected to a live platform). isConnected indicates whether the page is linked to a social platform; isValidTokens indicates whether the page connection is still active (if false, the page cannot publish until reconnected). Call this after list_workspaces when you need page ids for post-related actions. Supports pagination via limit and offset. PLATFORM FILTERING: The search param matches page name and username only — it does NOT filter by platform type. To find all Instagram pages, fetch all pages and filter by the type field in the response. BRIDGE TO POSTS: After getting page IDs here, pass them as pageIds to list_posts to scope posts to those pages. If pageIds is omitted from list_posts, all pages in the workspace are returned.
list_pages
List Planable posts in a workspace. Supports filtering by page/profile, post status, approval status, and scheduled date range. Returns post metadata including a computed status field (draft, scheduled, approved, issues, published) which differs from the postStatus filter values. Each post includes textPreview (up to 500 characters of content) and url (direct link to the post in Planable). Supports pagination via limit and offset. Call list_pages first if you need to filter by specific pages. SCOPE: This tool queries one workspace at a time. For cross-workspace queries, call this once per workspace and merge results (see server instructions). When pageIds is provided, any id that does not belong to the workspace is reported in unsupportedPages — surface it back to the user instead of silently returning an empty list.
list_posts
List the social listening keywords tracked in a Planable workspace — the brand and topic keywords whose public mentions and daily metrics Planable monitors across Twitter/X, YouTube, Reddit, TikTok, Facebook, Instagram, LinkedIn, and Web. Returns keywordId (the id the other social listening tools take), text (the tracked phrase as the user typed it), type ("brand" for exact-phrase brand monitoring or "topic" for broader keyword monitoring), and createdAt. Optionally filter by type (brand, topic); omit to return both. Requires only workspaceId — no analytics add-on or special permission. WHEN TO CALL: Call this first when the user asks about brand mentions, social listening, or keyword monitoring — it yields each keyword's keywordId for the other social listening tools. Returns an empty list when the workspace tracks no keywords.
list_keywords
List all members of a Planable workspace. Returns each member with id, name, email, permissions, and membership type (team or client). WHEN TO CALL: Use to see who belongs to a workspace, find approvers (users with APPROVE permission), identify workspace owners or admins, or resolve user names from authorId/userId fields in posts and comments.
list_workspace_members
List all Planable workspaces the authenticated user is a member of, across all companies. A workspace is a shared space where teams collaborate on social media content for connected pages. Returns id, name, companyId, companyName, and modifiedAt (timestamp of last post or comment activity) for each workspace. Supports pagination via limit and offset. PRESENTING RESULTS: When showing workspaces to the user, group them by company name. NAMED WORKSPACE: If the user names a workspace, pass it as the search param to avoid fetching all workspaces. Verify the match before proceeding. SORT BEHAVIOUR: "last-activity" (default) = most recently active first, based on last post or comment — do NOT use this as a proxy for "most recently created". Use sortType="created" when the user asks for the newest workspace. Use sortType="name" for alphabetical listing. FOR DETAILED INFO: Use get_workspace_details with the workspace id to check add-on status (analytics, engagement) before calling analytics or engagement tools. SYNONYMS: users refer to workspaces under many names depending on their tool background — 'rooms' (Planable's own metaphor — workspaces are rooms inside the company house), 'client spaces', 'brand spaces', 'projects', 'boards', 'hubs', 'plans', or 'content calendars'. When the user uses any of these and the context is a single company, prefer list_workspaces over list_companies.
list_workspaces
Queue a refresh of stored page/profile analytics metrics for the requested pageIds and date range. This tool is asynchronous: it enqueues Planable analytics synchronization for eligible connected pages and returns once the jobs are queued, before any platform data has been fetched. It does not wait for the sync to finish, and `refreshed: true` only means the jobs were queued. Calling get_page_metrics or get_page_metrics_summary immediately afterwards still returns the previous snapshot — re-read after a delay of a few minutes and compare `metricsFetchedAt` to confirm newer data landed. Unsupported, disconnected, or out-of-workspace pages are reported in unsupportedPages. It does not create, edit, publish, or delete posts.
refresh_page_metrics
Queue a refresh of stored post-level analytics metrics for the requested pageIds and date range. This tool is asynchronous: it enqueues Planable analytics synchronization for published posts and returns once the jobs are queued, before any platform data has been fetched. It does not wait for the sync to finish, and `refreshed: true` only means the jobs were queued. Calling get_post_metrics or get_post_metrics_summary immediately afterwards still returns the previous snapshot — re-read after a delay of a few minutes and compare `metricsFetchedAt` to confirm newer data landed. It does not create, edit, publish, or delete posts.
refresh_post_metrics
Stop tracking a competitor on one of the user's own pages, identified by its scrapedPageId (from list_competitors). Returns { removed: true, scrapedPageId }. Tracking stops immediately; re-adding within the cooling window restores its history. Requires workspaceId, pageId, and scrapedPageId; available on Instagram, Facebook, YouTube, TikTok, LinkedIn pages only. Needs the analytics add-on, the analyze scope, and OWNER, ADMINISTRATOR, or ANALYZE permission. WHEN TO CALL: when the user wants to stop tracking a competitor. Call list_competitors first to get the scrapedPageId.
remove_competitor
Remove one or more posts from their campaign in a Planable workspace. The posts themselves are kept; only their campaign association is cleared. Grouped posts are kept in sync automatically. Returns modifiedCount, the number of posts updated. Requires workspaceId and postIds; postIds come from list_posts.
unassign_posts_from_campaign
Update an existing Planable campaign. Only the fields you pass are changed; omitted fields are left as they were. Supports name, description (plain text, replaces the existing one), status, color, icon, and the startedAt+endedAt date range. Returns the updated campaign. The campaignId comes from list_campaigns.
update_campaign
Update a saved custom view. Only the fields you pass change; filter facets you pass merge into the view’s existing filters (facets this API doesn’t model are preserved). Supports name, color, layout, type, selectedPageIds, commentable, and the filter facets postStatus, approvalStatus, labels, postClassifications (pass an empty array to clear a facet). feed and grid views target exactly one page; calendar and list views accept multiple — switching a multi-page view to feed/grid requires also passing a single selectedPageIds. grid requires the Pro plan and list requires the Enterprise plan; switching to a layout the workspace’s plan doesn’t include is rejected. Set type to "public" to generate a shareable link (returned as shareUrl); moving a view off "public" removes the link and clears commentable. commentable applies only to public views. Requires EDIT-tier permission. The viewId comes from list_custom_views.
update_custom_view
Update an unpublished post in Planable. Published posts cannot be modified. Supports updating: text, scheduledAt (pass null to clear), labels (pass label UUIDs, empty array to clear), mediaUrls (replaces all media, empty array to clear), teamOnly, and linkedinTitle (LinkedIn posts only). Returns the updated post detail. WHEN TO CALL: Use after get_post or list_posts to modify existing unpublished content — avoids recreating a post from scratch. Call list_labels first if you need label UUIDs. Cannot modify published posts.
update_post
Upload media from public URLs to a workspace media library. Accepts 1 to 20 URLs. Media is downloaded and processed asynchronously — each item starts in "processing" status. Use get_media to check when processing completes. Returns the uploaded item ids. WHEN TO CALL: Use to pre-upload media to the library before attaching to posts, or when the user wants to add assets to their media library without creating a post.
upload_media
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 Planable alternatives on ChatGPT?
As of 2026-08-14, Planable competes with Abency, Cambiante: Content Manager, FeedClaw, Metricool for Social Media, Minter.io, Ocoya, Post Metadata Extractor, Postbeam, Posthive, ShareThis AI, Social Post Previewer, SocialHub, Sociality.io for social media, Socializioz, Tailwind, Upload-Post, 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.