schedule_post

Schedule post

With post_id and remove: true, remove a finished or canceled post from Kuro's calendar and Needs attention only. Published social-media posts and analytics remain intact. Cancel scheduled posts first; sending posts cannot be removed until they finish. Removal cannot be combined with other edits.

Create, edit or withdraw a post to the reader's connected social accounts. Without post_id it creates one from a ready image, clip or image set in the account (generation_id) or a verified upload (upload_id) — exactly one — with a caption, one target per account and the reader's IANA timezone; title is required when a target is YouTube. With post_id it edits that post — send only what changes — and with post_id and cancel: true it withdraws a draft or a scheduled post.

Timing is one of three. scheduled_for (an ISO time, two minutes to ninety days ahead) schedules it. Neither scheduled_for nor post_now makes a DRAFT on create — nothing goes out, and the reader finds it in the calendar's drafts; on an edit it leaves the timing alone, and draft: true takes a scheduled post's time away. post_now: true sends it immediately and needs the social.publish_now permission, which a connection holds only when the reader granted it; use it only when the reader asked for the post to go out now. Draft and propose; schedule on the reader's go-ahead.

A post to three accounts is ONE post with three targets. Each target carries that platform's options (start from the account's last_options in list_social_accounts, the reader's previous answers) and may carry its own caption when the platforms want different words. An edit's targets replaces the whole list. Accounts are connected only in the app, at /settings/social.

Scope

Behaviour

Writes
Creates or changes items in the caller's own account.
Can delete or overwrite
Can delete, overwrite, cancel or withdraw something the caller already has, so a host should confirm it.
Reaches outside
Publishes to the caller's own connected TikTok, Instagram, YouTube or X account, where the post is public.

Inputs

Example call

A tools/call request with the required arguments only, each a placeholder read off the schema. Replace them before sending.

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "schedule_post",
    "arguments": {}
  }
}

Input schema

As the server sends it in tools/list.

{
  "type": "object",
  "properties": {
    "post_id": {
      "type": "string",
      "format": "uuid",
      "description": "The post to edit or withdraw. Omit to create one."
    },
    "cancel": {
      "type": "boolean",
      "const": true,
      "description": "With post_id: withdraw the draft or scheduled post."
    },
    "remove": {
      "type": "boolean",
      "const": true,
      "description": "With post_id only: remove a finished or canceled calendar entry, keeping published social-media posts."
    },
    "generation_id": {
      "type": "string",
      "format": "uuid",
      "description": "Create only: the ready image, clip or image set to post, from list_media."
    },
    "upload_id": {
      "type": "string",
      "format": "uuid",
      "description": "Create only, instead of generation_id: the verified uploaded image or clip to post, from list_media."
    },
    "caption": {
      "type": "string",
      "maxLength": 5000
    },
    "title": {
      "type": "string",
      "maxLength": 100
    },
    "targets": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "social_account_id": {
            "type": "string",
            "format": "uuid",
            "description": "An account id from list_social_accounts."
          },
          "options": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "platform": {
                    "type": "string",
                    "const": "tiktok"
                  },
                  "privacy_status": {
                    "type": "string",
                    "enum": [
                      "public",
                      "private"
                    ]
                  },
                  "allow_comment": {
                    "type": "boolean",
                    "default": false
                  },
                  "allow_duet": {
                    "type": "boolean",
                    "default": false
                  },
                  "allow_stitch": {
                    "type": "boolean",
                    "default": false
                  },
                  "disclose_your_brand": {
                    "type": "boolean",
                    "default": false
                  },
                  "disclose_branded_content": {
                    "type": "boolean",
                    "default": false
                  },
                  "is_ai_generated": {
                    "type": "boolean",
                    "default": false
                  },
                  "is_draft": {
                    "type": "boolean",
                    "default": false
                  },
                  "auto_add_music": {
                    "type": "boolean",
                    "default": false
                  }
                },
                "required": [
                  "platform",
                  "privacy_status"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "platform": {
                    "type": "string",
                    "const": "instagram"
                  },
                  "placement": {
                    "type": "string",
                    "enum": [
                      "reels",
                      "timeline",
                      "stories"
                    ]
                  },
                  "share_to_feed": {
                    "type": "boolean",
                    "default": true
                  }
                },
                "required": [
                  "platform",
                  "placement"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "platform": {
                    "type": "string",
                    "const": "youtube"
                  },
                  "privacy_status": {
                    "type": "string",
                    "enum": [
                      "public",
                      "unlisted",
                      "private"
                    ],
                    "default": "public"
                  },
                  "made_for_kids": {
                    "type": "boolean"
                  },
                  "contains_synthetic_media": {
                    "type": "boolean",
                    "default": false
                  },
                  "tags": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 100
                    },
                    "maxItems": 15,
                    "default": []
                  }
                },
                "required": [
                  "platform",
                  "made_for_kids"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "platform": {
                    "type": "string",
                    "const": "x"
                  }
                },
                "required": [
                  "platform"
                ],
                "additionalProperties": false
              }
            ],
            "description": "This platform's own answers, keyed by `platform`. Start from the account's `last_options` in list_social_accounts — the reader's previous answers — and change only what the reader asked for."
          },
          "caption": {
            "type": "string",
            "maxLength": 5000,
            "description": "This account's own caption, in place of the post's. Use it when the platforms want different words."
          }
        },
        "required": [
          "social_account_id",
          "options"
        ],
        "additionalProperties": false
      },
      "minItems": 1,
      "maxItems": 10
    },
    "scheduled_for": {
      "type": "string",
      "format": "date-time"
    },
    "post_now": {
      "type": "boolean",
      "const": true
    },
    "draft": {
      "type": "boolean",
      "const": true
    },
    "timezone": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "The reader's IANA time zone, such as Europe/Paris — the calendar shows the post in it. Required on create."
    }
  },
  "additionalProperties": false
}

Related tools

Every tool· This page as Markdown