Lists the Social Planner content plans (made with MIA in the chat or imported from a spreadsheet or through the API), newest first, paginated by cursor. A plan groups the draft posts it created (post_ids) with its name, networks, objective and status. Content Studio series are not plans and are left out, reading on until the page is full (up to 400 read per call), so a page brings fewer than limit only with has_more true at that limit: keep following next_cursor. Requires view access to the Social Planner.
Scope
social_planner:read
Permission
View the module
MCP tool
social_planner_plans_listOn the full surface; on the compact one, mb_execute_operation with id: "social_planner.plans.list".
Declared cost: up to 401 reads and 0 writes per call (they count against the daily quota).
Parameters
limitintegerqueryoptional
How many items this page brings at most (see the maximum and the default in the schema).
Default: 50
cursorstringqueryoptional
The next_cursor of the previous page, exactly as it came (only for the same list and filters); without it, the first page.
Returns a content plan: name, created_via (chat_plan from MIA's chat; csv_import for an import, from the screen's spreadsheet or the API), networks, objective (awareness, engagement, conversion or community), status, the ids of its posts and, per post, the editorial details (headline, subcopy, copies per network, scheduled date, planner post id) with planner_status: the status its Social Planner post has today (the plan keeps the one each post was born with in status). A Content Studio series id returns 404 plan_not_found. Requires view access.
Scope
social_planner:read
Permission
View the module
MCP tool
social_planner_plans_getOn the full surface; on the compact one, mb_execute_operation with id: "social_planner.plans.get".
Declared cost: up to 61 reads and 0 writes per call (they count against the daily quota).
Parameters
plan_idstringpathrequired
The plan id (from social_planner.plans.list).
Response
idstring
The plan id.
namestring
Its name.
created_viastring | null
chat_plan (MIA's chat) or csv_import (an import: the screen's spreadsheet or the API).
art_modestring | null
How its art is made (manual: a person uploads it).
contextstring | null
social.
platformsarray<string> | null
The networks of its posts.
post_countnumber | null
How many posts it has.
approved_countnumber | null
Posts the plan counts as approved (all of them when it is created).
post_idsarray<string> | null
Its Social Planner posts.
postsarray<object> | null
Its posts with the editorial details they were born with.
statusstring | null
The plan's status.
objectivestring | null
awareness, engagement, conversion or community.
topicstring | null
The brief summarized (topic_summary of the import).
Imports a content plan: one draft post per item (1 to 30) with its date and time (in the organization's timezone), networks, format, headline, subcopy, call to action, subject and the copy per network (hashtags are appended with a #, whether or not they bring one), plus an editorial note as the first comment of each post. Posts are always created as drafts marked 'needs art' (art_source manual_design) and nothing is scheduled. An optional media_url per post is downloaded in the background into the post (if storage has room); if it fails the post stays without art. plan is the payload: { plan_name, objective? (awareness, engagement, conversion or community), topic_summary?, posts: [{ date YYYY-MM-DD, time HH:mm, format, platforms, headline, subcopy?, cta_text?, subject product|service|brand_content, content_type_label?, details?, copies: [{ platform, text, hashtags? }], media_url? }] }, up to 150 KB. With an API key source is always import. Returns the plan id and the post ids. Requires full access.
Scope
social_planner:write
Permission
Edit in the module
MCP tool
social_planner_plans_createOn the full surface; on the compact one, mb_execute_operation with id: "social_planner.plans.create".
Declared cost: up to 2 reads and 61 writes per call (they count against the daily quota).
Parameters
planobjectbodyrequired
The plan (up to 150 KB): {plan_name (up to 80), objective (awareness, engagement, conversion or community; optional), topic_summary (up to 600; optional), posts: [{date YYYY-MM-DD and time HH:mm in the organization's time zone, format (feed, reel, story, carousel, text or document; it must be available on every network of the post: document is LinkedIn only), platforms (instagram, facebook, linkedin, tiktok, twitter, google_business; 1 to 6), headline (up to 120), subcopy (up to 200), cta_text (up to 60), subject (product, service or brand_content), content_type_label (up to 40), details (up to 600), copies: [{platform, text (up to 2,200), hashtags (up to 30, with or without #)}] covering every network of the post when present, media_url (optional: an external image or video that is downloaded in the background; in a document post, a PDF, PowerPoint or Word file of up to 100 MB)}]}. Validated as a whole: 400 plan_invalid with the field.
sourceenumbodyoptional
import (the default, and the only one for an API key or app): 1 to 30 posts, copies optional; chat is MIA's plan card (4 to 30 posts).
Deletes a content plan (the undo of a plan): its posts still in draft are deleted, and the posts someone already moved forward (review, approved, scheduled, published) are kept, with the plan reduced to them. What is deleted goes to the 30-day trash: the plan with its drafts, or only the drafts when the plan survives. Only plans (chat_plan, csv_import); a Content Studio series is 404. Requires full access.
With an API key, this DELETE runs directly: the record stays 30 days in the trash and the response carries its trash_item_id. With an OAuth token, and through the MCP, it needs dry_run → confirm_token.
Scope
social_planner:writeand “Allow deletions” (social_planner:delete in OAuth)
Permission
Edit in the module
MCP tool
social_planner_plans_deleteOn the full surface; on the compact one, mb_execute_operation with id: "social_planner.plans.delete".
Declared cost: up to 61 reads and 62 writes per call (they count against the daily quota).
Parameters
plan_idstringpathrequired
The plan id (from social_planner.plans.list).
Response
deleted_countnumber
kept_countnumber
trash_item_idstring
The trash item this deletion left: the item_id of platform.trash.restore (POST /trash/{item_id}/restore). Missing if nothing went to the trash.
trash_item_idsarray<string>
Only when the deletion left more than one copy: all of them, the first being trash_item_id.
trash_expires_atnumber
When the copy leaves the trash for good (epoch ms): 30 days after the deletion.