Manage social media marketing with Metricool's MCP server. Analyze social media metrics, generate reports, create and publish posts, manage brand accounts, monitor comments and reviews, and manage advertising campaigns through AI agents.
OpenCode is an open-source agent for the terminal. Remote MCP servers go in its config file and sign in through OAuth.
This guide connects Metricool MCP to OpenCode through MewCP, so OpenCode can use Metricool MCP's 9 tools, like sendScheduledPostForReview, getBrandSettings and getScheduledPosts, without your Metricool MCP credentials ever reaching the app.
Metricool MCP signs in through managed OAuth. MewCP stores the token encrypted, refreshes it before it expires and injects it only at call time. Your agent never holds it, so it can never leak it.
More apps
Manage your Google Business Profile, business information and customer engagement. Update listings, publish content, monitor reviews and maintain your local presence across Google services.
Manage YouTube content including videos, channels, playlists and creator operations. Search content, organize media, publish updates and interact with YouTube resources programmatically.
Full Google Search Console control for search analytics, sitemaps, sites, and URL inspection, directly from your AI workflows. This MCP server exposes the Google Search Console API for querying search traffic data, managing sitemaps and site properties, and inspecting the indexing status of any URL. It is built for SEO teams monitoring search performance, developers automating sitemap and property management, and analysts pulling search traffic data into reporting pipelines.
Brevo's marketing and CRM platform — manage contacts, lists and segments, send transactional and campaign email, run SMS and WhatsApp campaigns, and track deals and companies
Other clients
Metricool MCP works the same way in every client below. Pick yours for its own guide.
Free to start.
Scope access to the exact Metricool MCP tools and accounts you allow, work and personal side by side. Anything outside that scope is refused at call time, even when the model asks for it.
Each call is logged: what ran, on which account, and whether it worked. Failures come back structured, so the agent knows whether to retry instead of guessing.
Every app sits behind one secure MCP URL, and there is no server for you to deploy or keep running. Add an integration in the dashboard and it is live on the next call, with no config to change and no new credentials to wire up. Tools load only when a task needs them, so your agent stays fast and focused however many apps you connect.
Edit ~/.config/opencode/opencode.json, or opencode.json in your project root.
Start a new chat and ask: "List the tools you can use from MewCP." You should see your connected apps.
Send 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.
Get the list of brands from your Metricool account. Only Instagram, Facebook, Twitch, YouTube, Twitter, and Bluesky support competitors.
Get the list of scheduled posts for a specific Metricool brand (brandId). Only retrieves posts that are scheduled (not yet published). brandId is required.
Retrieves 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.
Retrieves 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.
Get 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.
Update 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.
Schedule 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.
Schedule 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.