---
title: "schedule_post: Schedule post"
description: "With post_id and remove: true, remove a finished or canceled post from Kuro's calendar and Needs attention only."
canonical_url: "https://meetkuro.com/agents/tools/schedule_post/"
updated: 2026-11-03
locale: "en"
tool: "schedule_post"
scopes: ["social.write"]
---

# 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

- `social.write` — Drafts, schedules, edits and withdraws posts.

## 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

| Name | Type | Required | Details |
| --- | --- | --- | --- |
| `post_id` | string | no | The post to edit or withdraw. Omit to create one. — uuid |
| `cancel` | true | no | With post_id: withdraw the draft or scheduled post. |
| `remove` | true | no | With post_id only: remove a finished or canceled calendar entry, keeping published social-media posts. |
| `generation_id` | string | no | Create only: the ready image, clip or image set to post, from list_media. — uuid |
| `upload_id` | string | no | Create only, instead of generation_id: the verified uploaded image or clip to post, from list_media. — uuid |
| `caption` | string | no | at most 5000 characters |
| `title` | string | no | at most 100 characters |
| `targets` | array of object | no | at least 1 item; at most 10 items |
| `scheduled_for` | string | no | date-time |
| `post_now` | true | no | — |
| `draft` | true | no | — |
| `timezone` | string | no | The reader's IANA time zone, such as Europe/Paris — the calendar shows the post in it. Required on create. — at least 1 character; at most 100 characters |

## Example call

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

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

## Input schema

As the server sends it in `tools/list`:

```json
{
  "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

- [`list_social_accounts`](https://meetkuro.com/agents/tools/list_social_accounts.md): The TikTok, Instagram, YouTube and X accounts this reader connected, each with its status (`needs_reconnect` means posts to it will fail until the reader reconnects it in the app) and `last_options` — the answers the reader gave that platform on their last post, which is the starting point for a new post's options.
- [`get_social_insights`](https://meetkuro.com/agents/tools/get_social_insights.md): How the reader's published posts are doing: each post's latest views, likes, comments and shares per account (results), and, with timezone (an IANA zone, e.g.
- [`write_caption`](https://meetkuro.com/agents/tools/write_caption.md): Write a caption and hashtags for an image, clip or set already in the account (generation_id or upload_id), sized for the smallest of the platforms named, in the locale given (en, fr, …).

---

## About Kuro

Kuro is an AI picture studio: prompt-driven images, clips, voice-overs and music, and storyboard-backed films with consistent characters across every scene.

Agents connect over MCP and can generate directly:

```
claude mcp add kuro https://api.meetkuro.com/mcp --transport http
```

The app is at https://app.meetkuro.com and requires an account.

Each guide, model page, comparison and free tool page on this site (not a tool's variants, and not the index pages) has a Markdown twin at its own URL plus `.md`, and so do /benchmarks/, the English /agents/ page (as /agents.md) and the MCP tool reference. Every tool: https://meetkuro.com/agents/tools/
