---
title: "write_caption: Write a caption"
description: "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, …)."
canonical_url: "https://meetkuro.com/agents/tools/write_caption/"
updated: 2026-11-03
locale: "en"
tool: "write_caption"
scopes: ["social.write"]
---

# write_caption

**Write a caption**

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, …). Writes nothing and costs no credits; pass the result to schedule_post.

## Scope

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

## Behaviour

- **Read-only**: Reads the caller's own account and changes nothing.
- **Reaches outside**: Shows the post's pictures to a vision model to write the caption.

## Credits

What the tool's description says about credits, verbatim:

- Writes nothing and costs no credits; pass the result to schedule_post.

## Inputs

| Name | Type | Required | Details |
| --- | --- | --- | --- |
| `platforms` | array of string | yes | at least 1 item |
| `locale` | string | yes | at least 2 characters; at most 10 characters |
| `generation_id` | string | no | uuid |
| `upload_id` | string | no | uuid |

## 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": "write_caption",
    "arguments": {
      "platforms": [
        "tiktok"
      ],
      "locale": "<locale>"
    }
  }
}
```

## Input schema

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

```json
{
  "type": "object",
  "properties": {
    "generation_id": {
      "type": "string",
      "format": "uuid"
    },
    "upload_id": {
      "type": "string",
      "format": "uuid"
    },
    "platforms": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "tiktok",
          "instagram",
          "youtube",
          "x"
        ]
      },
      "minItems": 1
    },
    "locale": {
      "type": "string",
      "minLength": 2,
      "maxLength": 10
    }
  },
  "required": [
    "platforms",
    "locale"
  ],
  "additionalProperties": false
}
```

## Related tools

- [`schedule_post`](https://meetkuro.com/agents/tools/schedule_post.md): With post_id and remove: true, remove a finished or canceled post from Kuro's calendar and Needs attention only.

---

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