createScheduledPost
ChatGPTSchedule a post to Metricool at a specific date and time. To be able to schedule the post, you need to maintain the structure. You can use the tool getBestTimeToPostByNetwork to get the best time to post for a specific provider if the user doesn't specify the time to post. If the post include Instagram, is a must to have at least one image or video. Posts must include an image or a carousel, Reels and Trial Reels must include a video, and Stories can include either an image or a video. If you don't have more information, you can ask the user about it and wait until you have the information. If the post include Pinterest, is a must to have a image and the board where to publish the pin. If you don't have more information, you can ask the user about it and wait until you have the information. If the post include Youtube, is a must to have a video, select the audience (if it's video made for kids or not) and the title of the video. If you don't have more information, you can ask the user about it and wait until you have the information. If the post include Tiktok, is a must to have at least one image or video. If you don't have more information, you can ask the user about it and wait until you have the information. If the post is Facebook Reel, is a must to have a video. If is Facebook Story, image or video is needed. If you don't have more information, you can ask the user about it and wait until you have the information. If the post include Google Business Profile ("gmb"), ask which of the two publication types the user wants and send it in "gmbData". A "publication" is a text update on the profile and needs text, up to 1500 characters. A "photo" adds media to the profile gallery, needs at least one image or video, and carries no text of its own — it is the only way to send a video to Google Business Profile. If the post is Bluesky, make sure the text does not exceed 300 characters. If the content exceeds that limit, do not retry and return an error informing the user: "Error: The text exceeds the 300-character limit allowed on Bluesky. Please edit it." If the post is for X (formerly Twitter), you must NOT split the message into multiple tweets or threads: it has to be scheduled as a single post. Do NOT enforce a character limit yourself, because the maximum length depends on the brand's X subscription: standard accounts are limited to 280 characters, while X Premium accounts can publish long-form posts. Schedule the post and, if the text is too long for that particular brand, this tool returns an error that you must relay to the user without modifying the text. The date can't be in the past. The response includes a plannerUrl for each scheduled post, pointing to it in Metricool. On error, the tool returns it without altering the submitted text.
createScheduledPostForReview
ChatGPTSchedule a NEW post and send it to review (approval flow) in Metricool, replicating the web "Send for review". Use this instead of createScheduledPost ONLY when the user wants a brand-new post reviewed/approved before publishing. To send an ALREADY scheduled post to review, use sendScheduledPostForReview instead. The post content ('info') follows the SAME structure as createScheduledPost. Reviewers are a comma-separated list of emails. Emails of a Metricool collaborator of the brand become internal reviewers; unknown emails become external (always emailed). approvalSystem: "any" (one approval is enough), "all" (everyone must approve) or "optional" (auto-approve if no one rejects). A single rejection always stops publication. notify (default true) controls whether internal Metricool reviewers get an email; external reviewers always get one. Requires a plan with team management; if the plan does not allow it, this tool returns an error you must relay without retrying. The date can't be in the past. The response includes a plannerUrl pointing at the post in Metricool. On error, the tool returns it without altering the submitted text.
create_scheduled_post
ChatGPTSchedule a post to one or more social networks via Metricool. Call get_brand_settings first to obtain blog_id and timezone. Use get_best_time_to_post_by_network if the user doesn't specify a time. Simple example — Twitter/X text post: blog_id="31927", networks=["twitter"], text="Hello world!", date="2026-04-13T17:00:00", timezone="Europe/Madrid" Character limits (do NOT split into threads or truncate — report the error): - X/Twitter: 280 chars max. - Bluesky: 300 chars max. Media requirements: - Instagram POST/REEL/STORY: requires media. REEL needs video. STORY has no text. - Pinterest: requires media + pinterest_board_id, pinterest_pin_title, pinterest_pin_link. - YouTube: requires media (video) + youtube_title. - TikTok: requires media + tiktok_title. - Facebook REEL: requires video. Facebook STORY: requires media. content_type applies to Instagram and Facebook only: POST (default), REEL, or STORY. The date must be in the future. DO NOT modify the user's text — just report any error.
getAnalyticsAvailableMetrics
ChatGPTRetrieves the list of available metrics for a specific social network and connector. If any metric is deprecated, the tool notifies the user and provides suggested alternatives.
getAnalyticsDataByMetrics
ChatGPTRetrieves analytical data for a specified Metricool account over a given date range, based on a selected list of metrics. The tool processes the requested metrics and returns the corresponding analytical insights for those fields.
getBestTimeToPostByNetwork
ChatGPTGet the best time to post for a specific provider. The return is a list of hours and days with a value. The higher the value, the best time to post. Try to get the best for as maximum of 1 week. If you have day to publish but not hours, choose the start and end of this day.
getBrandSettings
ChatGPTGet the list of brands from your Metricool account. Only Instagram, Facebook, Twitch, YouTube, Twitter, and Bluesky support competitors.
getScheduledPosts
ChatGPTGet the list of scheduled posts for a specific Metricool brand (brandId). Only retrieves posts that are scheduled (not yet published). brandId is required.
get_analytics_available_metrics
ChatGPTRetrieves the list of available metrics for a specific social network and connector. Only active (non-deprecated) metrics are returned. Always call this BEFORE get_analytics_data_by_metrics to discover valid field IDs. IMPORTANT: Always provide BOTH network AND connector to keep the response small. If you need multiple connectors (e.g. evolution + posts), make separate calls. Never call without a connector — the full list is too large and wastes tokens. How to choose the right connector: - 'evolution': Account-level daily aggregates over time (followers, reach, impressions, engagement). Best for timelines, trends, and account performance summaries. - 'posts', 'reels', 'stories', 'videos': Individual content performance (per-post metrics like likes, comments, reach). Best for analyzing specific publications. Each content type is a separate connector — e.g. for Instagram use 'posts' for feed posts, 'reels' for Reels, 'stories' for Stories. - 'competitors': Competitor account-level data. - 'competitor posts', 'competitor reels', 'competitor videos': Competitor content-level data. - 'campaigns', 'ads': Ad platform campaign/ad-level data (Meta Ads, Google Ads, TikTok Ads). - 'country', 'age and gender', 'demographic': Audience demographics. - 'hashtags': Hashtag performance (Instagram). - 'keywords': Search keyword data (Google Business Profile, Google Ads). - 'traffic source', 'sources', 'pages': Website traffic breakdowns. Examples: - 'How did my Instagram grow this month?' → network=instagram, connector=evolution - 'Which of my Instagram posts performed best?' → network=instagram, connector=posts - 'Show me my Instagram Reels performance' → network=instagram, connector=reels - 'Compare followers across all my networks' → connector=evolution (no network filter) Each returned field has a fieldType ('dimension' or 'metric'): - Dimensions: descriptive attributes (date, post text, image URL, post URL, type). Include only the dimensions the user actually needs. - Metrics: numeric values that can be aggregated (likes, reach, engagement, comments). When the user asks for aggregated stats or rankings, request only the relevant metrics plus minimal dimensions (e.g. date). Do NOT request text content, images, or URLs unless the user wants to see individual post details. If the user's request is ambiguous, confirm which metrics matter before fetching data.
get_analytics_data_by_metrics
ChatGPTRetrieves analytical data for a specified Metricool account over a given date range, based on a selected list of metrics. Returns data grouped by compatible metric sets. IMPORTANT — field ID compatibility rules: Each field ID has 6 characters: 2-char network + 2-char connector + 2-digit index (e.g. FBPO01 = Facebook Posts metric 01, IGRE03 = Instagram Reels metric 03). - Evolution fields (connector = EV, e.g. FBEV01, IGEV17, TWEV03) CAN be combined across different networks in one call. They are ideal for timelines. - All other fields MUST share the same 4-char prefix (network+connector) in one call. For example: FBPO01 + FBPO03 is valid, but FBPO01 + IGPO01 is NOT. - If you need metrics from different non-evolution groups (e.g. Facebook Posts AND Instagram Reels), make separate calls for each group. The server auto-splits incompatible fields into separate API calls and returns results grouped, but for clarity always prefer sending compatible fields together. EFFICIENCY — select only the fields you need: - For summaries or rankings, request only metric fields (likes, reach, engagement) plus a date dimension. Do NOT include text content, image URLs, or post URLs. - Include content dimensions (text, image, URL) only when the user wants to see or identify specific posts. - For evolution data, request only the specific metrics relevant to the user's question — not all available evolution metrics.
get_best_time_to_post_by_network
ChatGPTGet the best time to post for a specific provider. Returns a list of hours and days with a score — the higher the value, the better the time. Try to cover at most 1 week. If you have a day but no hours, use the start and end of that day.
get_brand_settings
ChatGPTGet the list of brands from your Metricool account. Only Instagram, Facebook, Twitch, YouTube, Twitter, and Bluesky support competitors.
get_scheduled_posts
ChatGPTGet posts from the Metricool planner for a specific brand. Returns all posts in the date range: already published, pending, and drafts. Use this to check what is scheduled for a given week, review upcoming content, or see what was published from Metricool in a past period. Keep date ranges short (max 1 month). For content performance analytics use get_analytics_data_by_metrics instead.
sendScheduledPostForReview
ChatGPTSend an ALREADY scheduled post to review (approval flow) in Metricool. Use this when the post already exists (you have its id and uuid from getScheduledPosts) and the user just wants it reviewed/approved. Like updateScheduledPost, this changes the post's id; its uuid stays the same. The response includes the post's new id, if you need to act on this same post again later in the conversation, use that id instead of the one you started with or call getScheduledPosts to obtain the unique id. To create a new post AND send it to review in one step, use createScheduledPostForReview instead. You MUST include the full original content of the post in 'info' (same JSON structure as updateScheduledPost), keeping every field as returned by getScheduledPosts and changing only what the user asks for. Reviewers are a comma-separated list of emails. Emails of a Metricool collaborator of the brand become internal reviewers; unknown emails become external (always emailed). approvalSystem: "any" (one approval is enough), "all" (everyone must approve) or "optional" (auto-approve if no one rejects). A single rejection always stops publication. notify (default true) controls whether internal Metricool reviewers get an email; external reviewers always get one. Requires a plan with team management; if the plan does not allow it, this tool returns an error you must relay without retrying. The response includes a plannerUrl pointing at the post in Metricool.
updateScheduledPost
ChatGPTUpdate a scheduled post in Metricool. You need the id of the post to update. Get it from the getScheduledPosts tool previous on the conversation. Updating a post changes its id; its uuid stays the same. The response includes the post's new id, if you need to update this same post again later in the conversation, use that id instead of the one you started with or call getScheduledPosts to obtain the unique id. Updating a scheduled post overwrites its content immediately; there is no confirmation step or undo in the API. Errors from this endpoint are final; retrying with the same input will not change the result. To update the post, ensure the full original content is included in the request, modifying only the new information while keeping the rest unchanged and maintaining the original structure. If the post include Instagram, is a must to have at least one image or video. Posts must include an image or a carousel, Reels and Trial Reels must include a video, and Stories can include either an image or a video. If you don't have more information, you can ask the user about it and wait until you have the information. If the post include Pinterest, is a must to have a image and the board where to publish the pin. If you don't have more information, you can ask the user about it and wait until you have the information. If the post include Youtube, is a must to have a video, select the audience (if it's video made for kids or not) and the title of the video. If you don't have more information, you can ask the user about it and wait until you have the information. If the post include Tiktok, is a must to have at least one image or video. If you don't have more information, you can ask the user about it and wait until you have the information. If the post is Facebook Reel, is a must to have a video. If is Facebook Story, image or video is needed. If you don't have more information, you can ask the user about it and wait until you have the information. If the post include Google Business Profile ("gmb"), keep the "gmbData" type of the original post unless the user asks to change it. A "publication" is a text update on the profile and needs text, up to 1500 characters. A "photo" adds media to the profile gallery, needs at least one image or video, and carries no text of its own. If the post is Bluesky, make sure the text does not exceed 300 characters. If the content exceeds that limit, do not retry and return an error informing the user: "Error: The text exceeds the 300-character limit allowed on Bluesky. Please edit it." If the post is for X (formerly Twitter), you must NOT split the message into multiple tweets or threads: it has to be scheduled as a single post. Do NOT enforce a character limit yourself, because the maximum length depends on the brand's X subscription: standard accounts are limited to 280 characters, while X Premium accounts can publish long-form posts. Schedule the post and, if the text is too long for that particular brand, this tool returns an error that you must relay to the user without modifying the text. The date can't be in the past. The response includes a plannerUrl for each post, pointing to it in Metricool.
update_scheduled_post
ChatGPTUpdate a scheduled post in Metricool. Get the post id and uuid from get_scheduled_posts first. Ask the user to confirm what will be changed before proceeding. Include the full original content in the request, modifying only the fields that change. The same media requirements as create_scheduled_post apply. The date cannot be in the past. Do not retry on error.