MCPOutils MCP/Idées de publication/save_month_plan

save_month_plan

Writeideas:write

Write a whole month of planned posts for one location in a single call, after get_month_plan_brief. Each post lands as a dated IDEA for the agency to review on the Social calendar, never as a scheduled post, so nothing publishes until a human adds it. Captions over the limit and post types the chosen profiles cannot carry are trimmed and coerced rather than rejected. Refuses if the window already holds a plan, unless replace is true.

Paramètres
locationIdstringobligatoire
The location these posts are for. Same id passed to get_month_plan_brief.
fromstringfacultatif
First day of the window, local YYYY-MM-DD. Use the brief's window.from verbatim, years included. A date in the past is ignored and the window starts today instead.
daysnumberfacultatif
Length of the window in days. Must match the brief.
connectionIdsstring[]facultatif
Connections every post should publish to. Pre-seeds them so the agency can add the whole plan to the calendar in one click.
replacebooleanfacultatif
Replace an existing plan for this window. Default false, which refuses rather than writing a second set on top of the first.
postsobject[]obligatoire
The planned posts, in any order. Dates are spread and de-collided on save.
datestringfacultatif
Local YYYY-MM-DD inside the window.
titlestringfacultatif
Short title for the card, max 80 characters.
messagestringfacultatif
The full caption, hashtags included, within captionMaxChars.
whystringfacultatif
One sentence telling the owner why this post, on this day.
image_promptstringfacultatif
A visual prompt for generating the picture later, max 200 chars.
typestringfacultatif
One of the allowedPostTypes vocabulary from the brief.
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "save_month_plan",
    "arguments": {
      "locationId": "string",
      "posts": [
        {}
      ]
    }
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.