Use ReelsFarm tools to perform the same content workflows as the web app. When the user chooses ReelsFarm, do not substitute client-native image or video generation. A PREPARED or NOT_STARTED response created no asset. Only when the current response requires confirmation, call its named confirmationTool after user approval. Each confirmation tool can execute only its stated operation. Otherwise poll the returned job directly. Use waitMs: 25000 on job status tools to reduce repeated calls. Stop when jobProgress.terminal is true and inspect errors and batch item results. Before publishing, read preflight_publishing target settingsSchema and rules for the selected accounts and media. Claim a media asset exists only when that status response reports executionState COMPLETED and assetCreated true. For avatar-to-video requests, pass the avatar.imageUrl from a completed reelsfarm_get_avatar_job_status result to reelsfarm_prepare_generate_hook; never use product upload sessions for avatars. For text-to-video, start or end frames, or reference media, use reelsfarm_prepare_generate_video and poll reelsfarm_get_video_generation_status. For product photos and infographics, reelsfarm_list_image_templates returns the dashboard template briefs. Continue avatar and product-scene conversations with conversationId and parentGenerationId. For an authorized bulk task, repeat the corresponding tool once per item, use a distinct stable idempotencyKey for each item, reuse that key only for retries, and track each returned job to completion. Do not request repeated approvals in Autopilot when policyDecision is ALLOW. Read the current connection mode from reelsfarm_get_account or a dryRun response; never infer it from an earlier Review-mode result. Review mode prepares mutations and returns the corresponding operation-specific confirmationTool. Creator and Autopilot may execute allowed mutations immediately and require stable idempotencyKey values.
Discoverability
0/6 passed0 of 6 passed0/100
Client listings and public setup information.
mcp.json or server-card.json
Either mcp.json or an MCP Server Card declaring this endpoint passes.
No matching mcp.json manifest or MCP Server Card was found at the checked URLs.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description90/100
List account-uploaded assets in characters, products, hooks, demos, or sounds. The first page (without cursor) includes totalCount, the number of uploaded assets in the category across all pages. For all account hooks, also call reelsfarm_list_generated_hooks and combine by bucket/key or URL. Follow nextCursor until hasMore is false. Public template hooks are not account hooks.
Describe the returned information so the agent knows whether it will answer the request.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
category
ReelsFarm asset library category.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
limit
Page size, from 1 to 100.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
cursor
nextCursor of the previous page. Omit it for the first page.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
Reserve shared product-asset quota and create up to 20 ordered, 15-minute presigned PUT sessions for product images only. Never use this tool for avatars, characters, chat-generated images, or avatar-to-video handoff. Upload each product file with the returned headers, then complete the sessions.
The description explains the capability, when to use it, and what to expect.
Inputs86/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
files › items › clientId
Caller-defined identifier used to match this item with its result.
Clear enough to supply this argument.
files › items › filename
Stored filename of the ReelsFarm asset, including its extension.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
files › items › contentType
Internet media type of the uploaded file. Supported image types are listed in the schema.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
files › items › size
File size in bytes.
Clear enough to supply this argument.
files › items › displayName
Optional human-readable name shown for the uploaded ReelsFarm asset.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
idempotencyKey
Stable key for this action, reused only on retries. Required in Creator and Autopilot.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
dryRun
Validate only: nothing is saved, charged or queued.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description75/100
Validate and promote presigned product uploads approved by this same MCP connection. This is an idempotent continuation and does not require a second Review confirmation.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
sessionIds
One to 20 product upload session UUIDs returned by reelsfarm_create_product_upload_sessions.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description58/100
List the Product and Infographics templates from the dashboard Images workbench. Each template has a reference image, a prompt brief with [PLACEHOLDER] fields, and the tool to call. Replace each placeholder with the user's details, remove lines you cannot fill, and start the prompt with the template categoryLine. Templates that require a product use reelsfarm_prepare_generate_product_scene with sourceImageUrl set to referenceUrl and productImageUrl set to the product photo. Other templates use reelsfarm_prepare_generate_avatar in reference mode with sourceImageUrl set to referenceUrl and the listed model, aspectRatio, and quality. People templates are the reference images from reelsfarm_list_avatar_templates; peopleTemplate gives their brief and settings.
Describe the returned information so the agent knows whether it will answer the request.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
category
Return only Product or only Infographics templates. Omit it to return both.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
{
"name": "reelsfarm_list_image_templates",
"title": "List Image Templates",
"description": "List the Product and Infographics templates from the dashboard Images workbench. Each template has a reference image, a prompt brief with [PLACEHOLDER] fields, and the tool to call. Replace each placeholder with the user's details, remove lines you cannot fill, and start the prompt with the template categoryLine. Templates that require a product use reelsfarm_prepare_generate_product_scene with sourceImageUrl set to referenceUrl and productImageUrl set to the product photo. Other templates use reelsfarm_prepare_generate_avatar in reference mode with sourceImageUrl set to referenceUrl and the listed model, aspectRatio, and quality. People templates are the reference images from reelsfarm_list_avatar_templates; peopleTemplate gives their brief and settings.",
"inputSchema": {
"type": "object",
"properties": {
"category": {
"enum": [
"product",
"infographics"
],
"type": "string",
"description": "Return only Product or only Infographics templates. Omit it to return both."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"properties": {
"templates": {},
"peopleTemplate": {}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description72/100
Prepare identity extraction and character saving from an owned ReelsFarm image URL or a public HTTPS image URL. ReelsFarm community library images are not accepted.
The description explains the capability, when to use it, and what to expect.
Inputs90/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
name
Display name for the saved character.
Clear enough to supply this argument.
referenceUrl
Owned ReelsFarm asset URL or public HTTPS image URL with a clear face.
Clear enough to supply this argument.
idempotencyKey
Stable key for this action, reused only on retries. Required in Creator and Autopilot.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
dryRun
Validate only: nothing is saved, charged or queued.
{
"type": "object",
"properties": {
"dryRun": {
"type": "boolean",
"description": "Validate only: nothing is saved, charged or queued."
},
"summary": {
"type": "string",
"description": "Short explanation of the changes made by a slideshow revision."
},
"executed": {
"type": "boolean",
"description": "True when ReelsFarm executed the action instead of preparing a confirmation."
},
"nextStep": {
"type": "string",
"description": "Short instruction for continuing the prepared workflow."
},
"provider": {
"type": "string",
"const": "reelsfarm",
"description": "Service that executed or prepared this action. A value of reelsfarm is required before attributing a result to ReelsFarm."
},
"toolName": {
"type": "string",
"description": "Exact public MCP tool associated with this prepared action or result."
},
"character": {
"type": "object",
"required": [
"id",
"name",
"thumbnailUrl",
"identityJsonUrl"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"thumbnailUrl": {
"type": "string"
},
"identityJsonUrl": {
"type": "string"
}
},
"description": "Canonical saved ReelsFarm character returned by the operation.",
"additionalProperties": false
},
"expiresAt": {
"type": "string",
"description": "ISO 8601 date and time when this prepared action expires."
},
"operation": {
"type": "object",
"description": "Durable MCP operation state and result data.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"actionType": {
"type": "string",
"description": "Stable ReelsFarm action category used for policy and operation tracking."
},
"policyCode": {
"type": "string",
"description": "Stable code that explains the server authorization decision."
},
"sourceTool": {
"type": "string",
"description": "Public ReelsFarm MCP tool responsible for this execution state."
},
"operationId": {
"type": "string",
"description": "UUID of the ReelsFarm MCP operation to inspect."
},
"assetCreated": {
"type": "boolean",
"description": "True only when this response contains a completed media asset created by ReelsFarm."
},
"resultMessage": {
"type": "string",
"description": "Human-readable rule for accurately presenting this ReelsFarm result."
},
"confirmationId": {
"type": "string",
"description": "Short-lived ReelsFarm confirmation identifier returned by a prepared action."
},
"connectionMode": {
"enum": [
"REVIEW",
"CREATOR",
"AUTOPILOT"
],
"type": "string",
"description": "Effective Review, Creator, or Autopilot mode for this action."
},
"creditEstimate": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Estimated credit cost, or null when the cost cannot be fixed in advance."
},
"executionState": {
"enum": [
"NOT_STARTED",
"PREPARED",
"ENQUEUED",
"PROCESSING",
"COMPLETED",
"FAILED"
],
"type": "string",
"description": "Authoritative ReelsFarm execution state. Only COMPLETED can support a completion claim."
},
"policyDecision": {
"enum": [
"ALLOW",
"REQUIRE_CONFIRMATION",
"DENY",
"REQUIRE_DASHBOARD"
],
"type": "string",
"description": "Server authorization decision applied to this action."
},
"confirmationTool": {
"type": "string",
"description": "The public tool that confirms only this prepared operation after explicit user approval."
}
},
"additionalProperties": false
}
Original tool metadata
{
"name": "reelsfarm_prepare_save_character",
"title": "Prepare Save Character",
"description": "Prepare identity extraction and character saving from an owned ReelsFarm image URL or a public HTTPS image URL. ReelsFarm community library images are not accepted.",
"inputSchema": {
"type": "object",
"required": [
"name",
"referenceUrl"
],
"properties": {
"name": {
"type": "string",
"maxLength": 120,
"minLength": 1,
"description": "Display name for the saved character."
},
"dryRun": {
"type": "boolean",
"description": "Validate only: nothing is saved, charged or queued."
},
"referenceUrl": {
"type": "string",
"minLength": 1,
"description": "Owned ReelsFarm asset URL or public HTTPS image URL with a clear face."
},
"idempotencyKey": {
"type": "string",
"pattern": "^[A-Za-z0-9._:-]+$",
"maxLength": 200,
"minLength": 8,
"description": "Stable key for this action, reused only on retries. Required in Creator and Autopilot."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"properties": {
"dryRun": {
"type": "boolean",
"description": "Validate only: nothing is saved, charged or queued."
},
"summary": {
"type": "string",
"description": "Short explanation of the changes made by a slideshow revision."
},
"executed": {
"type": "boolean",
"description": "True when ReelsFarm executed the action instead of preparing a confirmation."
},
"nextStep": {
"type": "string",
"description": "Short instruction for continuing the prepared workflow."
},
"provider": {
"type": "string",
"const": "reelsfarm",
"description": "Service that executed or prepared this action. A value of reelsfarm is required before attributing a result to ReelsFarm."
},
"toolName": {
"type": "string",
"description": "Exact public MCP tool associated with this prepared action or result."
},
"character": {
"type": "object",
"required": [
"id",
"name",
"thumbnailUrl",
"identityJsonUrl"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"thumbnailUrl": {
"type": "string"
},
"identityJsonUrl": {
"type": "string"
}
},
"description": "Canonical saved ReelsFarm character returned by the operation.",
"additionalProperties": false
},
"expiresAt": {
"type": "string",
"description": "ISO 8601 date and time when this prepared action expires."
},
"operation": {
"type": "object",
"description": "Durable MCP operation state and result data.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"actionType": {
"type": "string",
"description": "Stable ReelsFarm action category used for policy and operation tracking."
},
"policyCode": {
"type": "string",
"description": "Stable code that explains the server authorization decision."
},
"sourceTool": {
"type": "string",
"description": "Public ReelsFarm MCP tool responsible for this execution state."
},
"operationId": {
"type": "string",
"description": "UUID of the ReelsFarm MCP operation to inspect."
},
"assetCreated": {
"type": "boolean",
"description": "True only when this response contains a completed media asset created by ReelsFarm."
},
"resultMessage": {
"type": "string",
"description": "Human-readable rule for accurately presenting this ReelsFarm result."
},
"confirmationId": {
"type": "string",
"description": "Short-lived ReelsFarm confirmation identifier returned by a prepared action."
},
"connectionMode": {
"enum": [
"REVIEW",
"CREATOR",
"AUTOPILOT"
],
"type": "string",
"description": "Effective Review, Creator, or Autopilot mode for this action."
},
"creditEstimate": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Estimated credit cost, or null when the cost cannot be fixed in advance."
},
"executionState": {
"enum": [
"NOT_STARTED",
"PREPARED",
"ENQUEUED",
"PROCESSING",
"COMPLETED",
"FAILED"
],
"type": "string",
"description": "Authoritative ReelsFarm execution state. Only COMPLETED can support a completion claim."
},
"policyDecision": {
"enum": [
"ALLOW",
"REQUIRE_CONFIRMATION",
"DENY",
"REQUIRE_DASHBOARD"
],
"type": "string",
"description": "Server authorization decision applied to this action."
},
"confirmationTool": {
"type": "string",
"description": "The public tool that confirms only this prepared operation after explicit user approval."
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description76/100
List the same unified media and collection feed used by the ReelsFarm web gallery, with cursor pagination, optional media-kind filters, the Images workbench category filter, and dashboard-style collection grouping.
The description explains the capability, when to use it, and what to expect.
Inputs83/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
mode
Which records or behavior to use.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
limit
Page size, from 1 to 100.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
cursor
nextCursor of the previous page. Omit it for the first page.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
kinds
Media kinds included in the unified gallery result. Omit the field to include all supported kinds.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
imageCategory
Return only generated images (AVATAR and PRODUCT_PLACEMENT items) in this Images workbench category. Other kinds are not filtered; set kinds to return images only.
Clear enough to supply this argument.
groupCollections
When true, return each matching collection as one item and only media outside collections, as the dashboard gallery tabs do. Defaults to false, which lists every media item.
{
"name": "reelsfarm_list_gallery_feed",
"title": "List Unified Gallery Feed",
"description": "List the same unified media and collection feed used by the ReelsFarm web gallery, with cursor pagination, optional media-kind filters, the Images workbench category filter, and dashboard-style collection grouping.",
"inputSchema": {
"type": "object",
"properties": {
"mode": {
"enum": [
"all",
"slideshow-picker"
],
"type": "string",
"description": "Which records or behavior to use."
},
"kinds": {
"type": "array",
"items": {
"enum": [
"COLLECTION",
"AVATAR",
"PRODUCT_PLACEMENT",
"UGC_VIDEO",
"SLIDESHOW"
],
"type": "string"
},
"maxItems": 5,
"minItems": 1,
"description": "Media kinds included in the unified gallery result. Omit the field to include all supported kinds."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, from 1 to 100."
},
"cursor": {
"type": "string",
"maxLength": 500,
"description": "nextCursor of the previous page. Omit it for the first page."
},
"imageCategory": {
"enum": [
"people",
"product",
"infographics"
],
"type": "string",
"description": "Return only generated images (AVATAR and PRODUCT_PLACEMENT items) in this Images workbench category. Other kinds are not filtered; set kinds to return images only."
},
"groupCollections": {
"type": "boolean",
"description": "When true, return each matching collection as one item and only media outside collections, as the dashboard gallery tabs do. Defaults to false, which lists every media item."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"properties": {
"items": {},
"hasMore": {},
"nextCursor": {}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description88/100
List the user-owned media items in one personal collection. Set limit to page through a large collection and follow nextCursor until hasMore is false. Without limit or cursor, every item returns in one response.
Describe the returned information so the agent knows whether it will answer the request.
Inputs81/100
Explain the meaning of this value, not just its name.
collectionId
UUID of the user-owned ReelsFarm media collection.
Clear enough to supply this argument.
mode
Which records or behavior to use.
Explain the meaning of this value, not just its name.
limit
Page size from 1 through 100. Setting limit or cursor returns one page with nextCursor and hasMore.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
cursor
nextCursor of the previous page. Omit it for the first page.
{
"name": "reelsfarm_get_media_collection_items",
"title": "Get Media Collection Items",
"description": "List the user-owned media items in one personal collection. Set limit to page through a large collection and follow nextCursor until hasMore is false. Without limit or cursor, every item returns in one response.",
"inputSchema": {
"type": "object",
"required": [
"collectionId"
],
"properties": {
"mode": {
"enum": [
"all",
"slideshow-picker"
],
"type": "string",
"description": "Which records or behavior to use."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size from 1 through 100. Setting limit or cursor returns one page with nextCursor and hasMore."
},
"cursor": {
"type": "string",
"maxLength": 512,
"description": "nextCursor of the previous page. Omit it for the first page."
},
"collectionId": {
"type": "string",
"format": "uuid",
"description": "UUID of the user-owned ReelsFarm media collection."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"properties": {
"items": {},
"hasMore": {},
"nextCursor": {}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description83/100
Delete a personal collection, move its active media to Trash, and cancel scheduled posts that depend on it. The described operation can have destructive or irreversible effects, including overwriting saved data.
Explain mutations, irreversible effects, or prerequisites that matter before calling this tool.
Inputs67/100
Resolve the mismatch between this description and its schema constraints.
collectionId
UUID of the user-owned ReelsFarm media collection.
Clear enough to supply this argument.
idempotencyKey
Stable key for this action, reused only on retries. Required in Creator and Autopilot.
Resolve the mismatch between this description and its schema constraints.
dryRun
Validate only: nothing is saved, charged or queued.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description70/100
Soft-delete an avatar or gallery image to trash. The described operation can have destructive or irreversible effects, including overwriting saved data.
Explain mutations, irreversible effects, or prerequisites that matter before calling this tool.
Inputs75/100
Explain the meaning of this value, not just its name.
id
ID of the ReelsFarm item.
Explain the meaning of this value, not just its name.
idempotencyKey
Stable key for this action, reused only on retries. Required in Creator and Autopilot.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
dryRun
Validate only: nothing is saved, charged or queued.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description67/100
Soft-delete a generated avatar or Product Studio image to the unified web trash. The described operation can have destructive or irreversible effects, including overwriting saved data.
Explain mutations, irreversible effects, or prerequisites that matter before calling this tool.
Inputs74/100
Explain the meaning of this value, not just its name.
id
ID of the ReelsFarm item.
Explain the meaning of this value, not just its name.
idempotencyKey
Stable key for this action, reused only on retries. Required in Creator and Autopilot.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
dryRun
Validate only: nothing is saved, charged or queued.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description88/100
Update slideshow metadata, settings, and slides. slides replaces the whole slide list: send every slide with all its fields, because a slide left out is deleted and a field left out gets its default. Only design keeps its saved value when left out; null makes the slide classic. settings also replaces the saved settings, such as music, so send all of them; only revisionHistory and activeRevisionId keep their saved values when left out. Slide image URLs must be authorized ReelsFarm assets. The described operation can have destructive or irreversible effects, including overwriting saved data.
The description explains the capability, when to use it, and what to expect.
Inputs80/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
id
ID of the ReelsFarm item.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
title
Human-readable title for the ReelsFarm content item.
Clear enough to supply this argument.
prompt
Natural-language instructions for the requested content generation.
Clear enough to supply this argument.
slideshowType
Content strategy used to generate or revise slideshow text.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
status
Set DRAFT to reopen an exported slideshow for editing. Use reelsfarm_prepare_finalize_slideshow to export.
Clear enough to supply this argument.
settings › duration
Slideshow display duration in milliseconds.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
settings › backgroundColor
Slideshow background color as a CSS color value.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
settings › transitionStyle
Visual transition style used between slideshow images.
Clear enough to supply this argument.
settings › videoTransition
Transition used when the slideshow is exported as a video.
Clear enough to supply this argument.
settings › aspectRatio
Width-to-height ratio.
Clear enough to supply this argument.
settings › music › anyOf › 0 › source
Where this item comes from.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
settings › music › anyOf › 0 › audioUrl
Public HTTPS URL or authorized ReelsFarm URL of the source audio track.
Clear enough to supply this argument.
settings › music › anyOf › 0 › name
Display name.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
settings › music › anyOf › 0 › coverUrl
Authorized ReelsFarm asset URL of the selected music cover image.
Clear enough to supply this argument.
settings › revisionHistory
Up to 20 saved text revisions with their slide states. update_slideshow keeps them when this is left out.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
settings › activeRevisionId
Identifier of the slideshow revision currently shown in the editor.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
slides › items › id
ID of the ReelsFarm item.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
slides › items › avatarId
UUID of the ReelsFarm avatar. Omit it when the image URL identifies the source.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
slides › items › imageUrl
The slide photo, an authorized ReelsFarm asset URL. Required, except on an iMessage slide: it draws no photo, so leave imageUrl out there.
Clear enough to supply this argument.
slides › items › compositedImageUrl
Authorized ReelsFarm URL of the rendered slide image. Omit it when the server must render the slide.
Clear enough to supply this argument.
slides › items › order
Zero-based position.
Clear enough to supply this argument.
slides › items › aspectRatio
Width-to-height ratio.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
slides › items › timeLengthMs
Slide display duration in milliseconds, from 1000 through 5000.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
slides › items › textItems › items › id
ID of the ReelsFarm item.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
slides › items › textItems › items › text
Text rendered on the slideshow or used by the content workflow.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
slides › items › textItems › items › fontSize
CSS pixel font size used to render the slideshow text.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
slides › items › textItems › items › textFont
TikTok text font, such as classic, elegance, retro, typewriter, neon or handwriting. Omit it for Classic.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
slides › items › textItems › items › textEffect
TikTok text mode: none, outline, background or translucent. When set, it and textColor replace textStyle.
Clear enough to supply this argument.
slides › items › textItems › items › textColor
Hex colour such as #ea403f: the text colour for none, the outline colour for outline, the box colour otherwise.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
slides › items › textItems › items › lineWidthEm
Longest line in em (multiples of the font size), from 4 to 40. Omit it: the width then follows the text. Set it only to copy a reference slideshow.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
slides › items › textItems › items › textX
Optional exact position: the horizontal centre of the text column, from 0 (left edge) to 1 (right edge). Only used with textY; 0.5 when omitted.
Clear enough to supply this argument.
slides › items › textItems › items › textY
Optional exact position: the vertical centre of the text column, from 0 (top) to 1 (bottom). When set it replaces textPosition. Items with the same textX and textY stack in one column.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Align the output schema with the tool’s documented result.
View output schema
{
"type": "object",
"properties": {
"dryRun": {
"type": "boolean",
"description": "Validate only: nothing is saved, charged or queued."
},
"summary": {
"type": "string",
"description": "Short explanation of the changes made by a slideshow revision."
},
"executed": {
"type": "boolean",
"description": "True when ReelsFarm executed the action instead of preparing a confirmation."
},
"nextStep": {
"type": "string",
"description": "Short instruction for continuing the prepared workflow."
},
"provider": {
"type": "string",
"const": "reelsfarm",
"description": "Service that executed or prepared this action. A value of reelsfarm is required before attributing a result to ReelsFarm."
},
"toolName": {
"type": "string",
"description": "Exact public MCP tool associated with this prepared action or result."
},
"expiresAt": {
"type": "string",
"description": "ISO 8601 date and time when this prepared action expires."
},
"operation": {
"type": "object",
"description": "Durable MCP operation state and result data.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"slideshow": {
"type": "object",
"required": [
"id",
"title",
"prompt",
"slideshowType",
"status",
"settings",
"slides",
"latestVideo",
"videoExportReady",
"exportHash",
"createdAt",
"updatedAt"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "ID of the ReelsFarm item."
},
"title": {
"type": "string",
"description": "Human-readable title for the ReelsFarm content item."
},
"prompt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Natural-language instructions for the requested content generation."
},
"slides": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"avatarId",
"imageUrl",
"compositedImageUrl",
"order",
"aspectRatio",
"timeLengthMs",
"imageOpacity",
"textItems",
"design"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "ID of the ReelsFarm item."
},
"order": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-based position."
},
"design": {
"anyOf": [
{
"oneOf": [
{
"type": "object",
"required": [
"design",
"name",
"handle",
"text",
"time",
"views",
"replies",
"reposts",
"likes",
"saves"
],
"properties": {
"name": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Display name of the person posting. Invented and believable; never a real public figure."
},
"seed": {
"type": "integer",
"maximum": 4294967295,
"minimum": 0,
"description": "Fixes the hand-drawn parts (torn paper edges, tilts) so every export draws the same slide. Keep the value a slide already has; omit it on a new slide."
},
"text": {
"type": "string",
"maxLength": 280,
"minLength": 1,
"description": "The post, up to 280 characters; usually 80 to 200. Lowercase and short lines read as real."
},
"time": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Time and date line, such as 9:41 PM · Oct 21, 2026."
},
"likes": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Likes count as shown on the post, such as 482, 3.1K or 1.2M."
},
"reply": {
"type": "object",
"required": [
"name",
"handle",
"text"
],
"properties": {
"name": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Display name of the person replying."
},
"text": {
"type": "string",
"maxLength": 140,
"minLength": 1,
"description": "The reply, usually the question the next slide answers."
},
"handle": {
"type": "string",
"maxLength": 30,
"minLength": 1,
"description": "Handle of the person replying, starting with @."
}
},
"description": "A reply card under the post. Use on one or two slides only.",
"additionalProperties": false
},
"saves": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Bookmarks count as shown on the post, such as 482, 3.1K or 1.2M."
},
"views": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Views count as shown on the post, such as 482, 3.1K or 1.2M."
},
"design": {
"type": "string",
"const": "tweet",
"description": "A post on X: a white card over the slide photo, blurred."
},
"handle": {
"type": "string",
"maxLength": 30,
"minLength": 1,
"description": "Handle starting with @, used on every slide of the slideshow."
},
"replies": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Replies count as shown on the post, such as 482, 3.1K or 1.2M."
},
"reposts": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Reposts count as shown on the post, such as 482, 3.1K or 1.2M."
},
"verified": {
"type": "boolean",
"description": "Shows a blue tick after the name. Defaults to true."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"design",
"contact",
"messages"
],
"properties": {
"seed": {
"type": "integer",
"maximum": 4294967295,
"minimum": 0,
"description": "Fixes the hand-drawn parts (torn paper edges, tilts) so every export draws the same slide. Keep the value a slide already has; omit it on a new slide."
},
"clock": {
"type": "string",
"maxLength": 8,
"description": "The status bar clock, such as 9:43. Omit it to use 9:41."
},
"draft": {
"type": "string",
"maxLength": 200,
"description": "A reply being typed in the input bar. It opens the keyboard. Usually on the last slide only."
},
"theme": {
"enum": [
"dark",
"light"
],
"type": "string",
"description": "Dark or light mode. Defaults to dark. Same on every slide."
},
"design": {
"type": "string",
"const": "imessage",
"description": "A screenshot of a Messages chat. The slide photo is not shown."
},
"status": {
"type": "string",
"maxLength": 30,
"description": "Shown under your last blue bubble, such as Delivered or Read 9:42 PM. Usually on the last slide only."
},
"unread": {
"type": "string",
"maxLength": 6,
"description": "The unread count next to the back arrow, such as 12."
},
"contact": {
"type": "string",
"maxLength": 30,
"minLength": 1,
"description": "The contact as saved in the phone, such as mom, Sophie or bestie. Same on every slide."
},
"messages": {
"type": "array",
"items": {
"type": "object",
"required": [
"from",
"text"
],
"properties": {
"from": {
"enum": [
"them",
"me"
],
"type": "string",
"description": "them: a grey bubble on the left. me: a blue bubble on the right."
},
"text": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "The message text, short like real texting."
},
"time": {
"type": "string",
"maxLength": 30,
"description": "A time line shown above this message, such as Today 9:41 PM. Usually only on the first message."
},
"reaction": {
"enum": [
"heart",
"like",
"dislike",
"haha",
"emphasis",
"question"
],
"type": "string",
"description": "A tapback on the bubble from the other person: heart, like, dislike, haha, emphasis (!!) or question. Never another emoji."
}
},
"additionalProperties": false
},
"maxItems": 14,
"minItems": 1,
"description": "The conversation so far, oldest first. One chat runs through an iMessage slideshow: each slide repeats the earlier messages and adds the next one to four."
},
"suggestions": {
"type": "array",
"items": {
"type": "string",
"maxLength": 20,
"minLength": 1
},
"maxItems": 3,
"description": "Up to three words above the keyboard."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"design",
"title",
"accent",
"points"
],
"properties": {
"seed": {
"type": "integer",
"maximum": 4294967295,
"minimum": 0,
"description": "Fixes the hand-drawn parts (torn paper edges, tilts) so every export draws the same slide. Keep the value a slide already has; omit it on a new slide."
},
"title": {
"type": "string",
"maxLength": 60,
"minLength": 1,
"description": "Bold title, 2 to 4 words, such as 3 rules for."
},
"accent": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Italic accent line under the title, 2 to 3 words naming the subject, such as slow mornings."
},
"design": {
"type": "string",
"const": "notebook",
"description": "A torn page of grid paper over the slide photo, with the photo taped on when there is room."
},
"points": {
"type": "array",
"items": {
"type": "string",
"maxLength": 90,
"minLength": 1
},
"maxItems": 5,
"minItems": 1,
"description": "One to five numbered points; three fit best."
},
"circled": {
"type": "string",
"maxLength": 30,
"description": "2 to 4 words circled by hand, such as try it for 7 days."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"design",
"masthead",
"issue",
"coverLines",
"headline"
],
"properties": {
"seed": {
"type": "integer",
"maximum": 4294967295,
"minimum": 0,
"description": "Fixes the hand-drawn parts (torn paper edges, tilts) so every export draws the same slide. Keep the value a slide already has; omit it on a new slide."
},
"issue": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "Issue line under the masthead, such as The skin issue · October 2026."
},
"design": {
"type": "string",
"const": "magazine",
"description": "A magazine cover over the slide photo. Use it on the first slide only, with a photo of a person."
},
"headline": {
"type": "string",
"maxLength": 60,
"minLength": 1,
"description": "The cover story at the bottom, 3 to 6 words."
},
"masthead": {
"type": "string",
"maxLength": 12,
"minLength": 1,
"description": "One word of 3 to 6 letters across the top, such as GLOW."
},
"coverLines": {
"type": "array",
"items": {
"type": "object",
"required": [
"big",
"small"
],
"properties": {
"big": {
"type": "string",
"maxLength": 24,
"minLength": 1,
"description": "1 to 3 words or a number in bold capitals."
},
"small": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "2 to 6 words in italics under it."
}
},
"additionalProperties": false
},
"maxItems": 4,
"description": "Two to four cover lines down the sides."
},
"headlineSub": {
"type": "string",
"maxLength": 50,
"description": "2 to 6 words under the headline."
}
},
"additionalProperties": false
}
],
"description": "A designed look drawn instead of the photo and text items: tweet, imessage, notebook or magazine. Text items on a designed slide are not drawn."
},
{
"type": "null"
}
],
"description": "The slide's designed look, drawn instead of the photo and text items; null for a classic slide."
},
"avatarId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "UUID of the ReelsFarm avatar. Omit it when the image URL identifies the source."
},
"imageUrl": {
"type": "string",
"description": "Public HTTPS URL or authorized ReelsFarm URL of the source image."
},
"textItems": {
"type": "array",
"items": {},
"description": "Ordered text items drawn on this slide. One is usual; use up to six."
},
"aspectRatio": {
"enum": [
"4:5",
"9:16",
"3:4",
"1:1"
],
"type": "string",
"description": "Width-to-height ratio."
},
"imageOpacity": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Image opacity percentage from 0 through 100."
},
"timeLengthMs": {
"type": "integer",
"maximum": 5000,
"minimum": 1000,
"description": "Slide display duration in milliseconds, from 1000 through 5000."
},
"compositedImageUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Authorized ReelsFarm URL of the rendered slide image. Omit it when the server must render the slide."
}
},
"additionalProperties": false
},
"description": "Ordered slideshow slide definitions. Follow the nested slide schema and array limits."
},
"status": {
"enum": [
"DRAFT",
"EXPORTED"
],
"type": "string",
"description": "ReelsFarm lifecycle status used for the requested resource or filter."
},
"settings": {
"type": "object",
"properties": {
"music": {
"anyOf": [
{
"type": "object",
"required": [
"source",
"audioUrl"
],
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"description": "Display name."
},
"source": {
"enum": [
"template",
"upload"
],
"type": "string",
"description": "Where this item comes from."
},
"audioUrl": {
"type": "string",
"minLength": 1,
"description": "Public HTTPS URL or authorized ReelsFarm URL of the source audio track."
},
"coverUrl": {
"type": "string",
"description": "Authorized ReelsFarm asset URL of the selected music cover image."
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Owned or template music configuration used by the slideshow."
},
"duration": {
"type": "integer",
"maximum": 5000,
"minimum": 1000,
"description": "Slideshow display duration in milliseconds."
},
"aspectRatio": {
"enum": [
"4:5",
"9:16",
"3:4",
"1:1"
],
"type": "string",
"description": "Width-to-height ratio."
},
"backgroundColor": {
"type": "string",
"maxLength": 50,
"description": "Slideshow background color as a CSS color value."
},
"revisionHistory": {
"type": "array",
"items": {
"type": "object"
},
"maxItems": 20,
"description": "Up to 20 saved text revisions with their slide states. update_slideshow keeps them when this is left out."
},
"transitionStyle": {
"enum": [
"hard",
"fade",
"slide"
],
"type": "string",
"description": "Visual transition style used between slideshow images."
},
"videoTransition": {
"enum": [
"cut",
"fade"
],
"type": "string",
"description": "Transition used when the slideshow is exported as a video."
},
"activeRevisionId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Identifier of the slideshow revision currently shown in the editor."
}
},
"description": "Structured slideshow appearance and playback settings.",
"additionalProperties": false
},
"createdAt": {
"type": "string",
"description": "ISO 8601 date and time when this item or revision was created."
},
"updatedAt": {
"type": "string",
"description": "updated at used by this ReelsFarm operation. Follow the type and validation limits in the schema."
},
"exportHash": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Hash of the slideshow definition used for the current video export."
},
"latestVideo": {
"anyOf": [
{
"type": "object",
"required": [
"id",
"title",
"videoUrl",
"thumbnailUrl",
"duration",
"sourceType",
"sourceSlideshowId",
"createdAt"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"duration": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"videoUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"createdAt": {
"type": "string"
},
"sourceType": {
"enum": [
"UGC_COMPOSITION",
"SLIDESHOW",
"GENERATED_HOOK",
"AI_CLONE"
],
"type": "string"
},
"thumbnailUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"sourceSlideshowId": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Current reusable slideshow video export, or null when no current export exists."
},
"slideshowType": {
"anyOf": [
{
"enum": [
"EDUCATIONAL",
"PROMOTIONAL",
"STORYTELLING",
"LIFESTYLE",
"REVIEW"
],
"type": "string",
"description": "Content strategy used to generate slideshow text."
},
{
"type": "null"
}
],
"description": "Content strategy used to generate or revise slideshow text."
},
"videoExportReady": {
"type": "boolean",
"description": "True when the slideshow has a current reusable video export."
}
},
"description": "Canonical slideshow with settings, ordered slides, and current export state.",
"additionalProperties": false
},
"actionType": {
"type": "string",
"description": "Stable ReelsFarm action category used for policy and operation tracking."
},
"policyCode": {
"type": "string",
"description": "Stable code that explains the server authorization decision."
},
"sourceTool": {
"type": "string",
"description": "Public ReelsFarm MCP tool responsible for this execution state."
},
"operationId": {
"type": "string",
"description": "UUID of the ReelsFarm MCP operation to inspect."
},
"assetCreated": {
"type": "boolean",
"description": "True only when this response contains a completed media asset created by ReelsFarm."
},
"resultMessage": {
"type": "string",
"description": "Human-readable rule for accurately presenting this ReelsFarm result."
},
"confirmationId": {
"type": "string",
"description": "Short-lived ReelsFarm confirmation identifier returned by a prepared action."
},
"connectionMode": {
"enum": [
"REVIEW",
"CREATOR",
"AUTOPILOT"
],
"type": "string",
"description": "Effective Review, Creator, or Autopilot mode for this action."
},
"creditEstimate": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Estimated credit cost, or null when the cost cannot be fixed in advance."
},
"executionState": {
"enum": [
"NOT_STARTED",
"PREPARED",
"ENQUEUED",
"PROCESSING",
"COMPLETED",
"FAILED"
],
"type": "string",
"description": "Authoritative ReelsFarm execution state. Only COMPLETED can support a completion claim."
},
"policyDecision": {
"enum": [
"ALLOW",
"REQUIRE_CONFIRMATION",
"DENY",
"REQUIRE_DASHBOARD"
],
"type": "string",
"description": "Server authorization decision applied to this action."
},
"confirmationTool": {
"type": "string",
"description": "The public tool that confirms only this prepared operation after explicit user approval."
}
},
"additionalProperties": false
}
Original tool metadata
{
"name": "reelsfarm_update_slideshow",
"title": "Update Slideshow",
"description": "Update slideshow metadata, settings, and slides. slides replaces the whole slide list: send every slide with all its fields, because a slide left out is deleted and a field left out gets its default. Only design keeps its saved value when left out; null makes the slide classic. settings also replaces the saved settings, such as music, so send all of them; only revisionHistory and activeRevisionId keep their saved values when left out. Slide image URLs must be authorized ReelsFarm assets. The described operation can have destructive or irreversible effects, including overwriting saved data.",
"inputSchema": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "ID of the ReelsFarm item."
},
"title": {
"type": "string",
"description": "Human-readable title for the ReelsFarm content item."
},
"dryRun": {
"type": "boolean",
"description": "Validate only: nothing is saved, charged or queued."
},
"prompt": {
"type": "string",
"description": "Natural-language instructions for the requested content generation."
},
"slides": {
"type": "array",
"items": {
"type": "object",
"required": [
"order"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "ID of the ReelsFarm item."
},
"order": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-based position."
},
"design": {
"anyOf": [
{
"oneOf": [
{
"type": "object",
"required": [
"design",
"name",
"handle",
"text",
"time",
"views",
"replies",
"reposts",
"likes",
"saves"
],
"properties": {
"name": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Display name of the person posting. Invented and believable; never a real public figure."
},
"seed": {
"type": "integer",
"maximum": 4294967295,
"minimum": 0,
"description": "Fixes the hand-drawn parts (torn paper edges, tilts) so every export draws the same slide. Keep the value a slide already has; omit it on a new slide."
},
"text": {
"type": "string",
"maxLength": 280,
"minLength": 1,
"description": "The post, up to 280 characters; usually 80 to 200. Lowercase and short lines read as real."
},
"time": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Time and date line, such as 9:41 PM · Oct 21, 2026."
},
"likes": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Likes count as shown on the post, such as 482, 3.1K or 1.2M."
},
"reply": {
"type": "object",
"required": [
"name",
"handle",
"text"
],
"properties": {
"name": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Display name of the person replying."
},
"text": {
"type": "string",
"maxLength": 140,
"minLength": 1,
"description": "The reply, usually the question the next slide answers."
},
"handle": {
"type": "string",
"maxLength": 30,
"minLength": 1,
"description": "Handle of the person replying, starting with @."
}
},
"description": "A reply card under the post. Use on one or two slides only.",
"additionalProperties": false
},
"saves": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Bookmarks count as shown on the post, such as 482, 3.1K or 1.2M."
},
"views": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Views count as shown on the post, such as 482, 3.1K or 1.2M."
},
"design": {
"type": "string",
"const": "tweet",
"description": "A post on X: a white card over the slide photo, blurred."
},
"handle": {
"type": "string",
"maxLength": 30,
"minLength": 1,
"description": "Handle starting with @, used on every slide of the slideshow."
},
"replies": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Replies count as shown on the post, such as 482, 3.1K or 1.2M."
},
"reposts": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Reposts count as shown on the post, such as 482, 3.1K or 1.2M."
},
"verified": {
"type": "boolean",
"description": "Shows a blue tick after the name. Defaults to true."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"design",
"contact",
"messages"
],
"properties": {
"seed": {
"type": "integer",
"maximum": 4294967295,
"minimum": 0,
"description": "Fixes the hand-drawn parts (torn paper edges, tilts) so every export draws the same slide. Keep the value a slide already has; omit it on a new slide."
},
"clock": {
"type": "string",
"maxLength": 8,
"description": "The status bar clock, such as 9:43. Omit it to use 9:41."
},
"draft": {
"type": "string",
"maxLength": 200,
"description": "A reply being typed in the input bar. It opens the keyboard. Usually on the last slide only."
},
"theme": {
"enum": [
"dark",
"light"
],
"type": "string",
"description": "Dark or light mode. Defaults to dark. Same on every slide."
},
"design": {
"type": "string",
"const": "imessage",
"description": "A screenshot of a Messages chat. The slide photo is not shown."
},
"status": {
"type": "string",
"maxLength": 30,
"description": "Shown under your last blue bubble, such as Delivered or Read 9:42 PM. Usually on the last slide only."
},
"unread": {
"type": "string",
"maxLength": 6,
"description": "The unread count next to the back arrow, such as 12."
},
"contact": {
"type": "string",
"maxLength": 30,
"minLength": 1,
"description": "The contact as saved in the phone, such as mom, Sophie or bestie. Same on every slide."
},
"messages": {
"type": "array",
"items": {
"type": "object",
"required": [
"from",
"text"
],
"properties": {
"from": {
"enum": [
"them",
"me"
],
"type": "string",
"description": "them: a grey bubble on the left. me: a blue bubble on the right."
},
"text": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "The message text, short like real texting."
},
"time": {
"type": "string",
"maxLength": 30,
"description": "A time line shown above this message, such as Today 9:41 PM. Usually only on the first message."
},
"reaction": {
"enum": [
"heart",
"like",
"dislike",
"haha",
"emphasis",
"question"
],
"type": "string",
"description": "A tapback on the bubble from the other person: heart, like, dislike, haha, emphasis (!!) or question. Never another emoji."
}
},
"additionalProperties": false
},
"maxItems": 14,
"minItems": 1,
"description": "The conversation so far, oldest first. One chat runs through an iMessage slideshow: each slide repeats the earlier messages and adds the next one to four."
},
"suggestions": {
"type": "array",
"items": {
"type": "string",
"maxLength": 20,
"minLength": 1
},
"maxItems": 3,
"description": "Up to three words above the keyboard."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"design",
"title",
"accent",
"points"
],
"properties": {
"seed": {
"type": "integer",
"maximum": 4294967295,
"minimum": 0,
"description": "Fixes the hand-drawn parts (torn paper edges, tilts) so every export draws the same slide. Keep the value a slide already has; omit it on a new slide."
},
"title": {
"type": "string",
"maxLength": 60,
"minLength": 1,
"description": "Bold title, 2 to 4 words, such as 3 rules for."
},
"accent": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Italic accent line under the title, 2 to 3 words naming the subject, such as slow mornings."
},
"design": {
"type": "string",
"const": "notebook",
"description": "A torn page of grid paper over the slide photo, with the photo taped on when there is room."
},
"points": {
"type": "array",
"items": {
"type": "string",
"maxLength": 90,
"minLength": 1
},
"maxItems": 5,
"minItems": 1,
"description": "One to five numbered points; three fit best."
},
"circled": {
"type": "string",
"maxLength": 30,
"description": "2 to 4 words circled by hand, such as try it for 7 days."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"design",
"masthead",
"issue",
"coverLines",
"headline"
],
"properties": {
"seed": {
"type": "integer",
"maximum": 4294967295,
"minimum": 0,
"description": "Fixes the hand-drawn parts (torn paper edges, tilts) so every export draws the same slide. Keep the value a slide already has; omit it on a new slide."
},
"issue": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "Issue line under the masthead, such as The skin issue · October 2026."
},
"design": {
"type": "string",
"const": "magazine",
"description": "A magazine cover over the slide photo. Use it on the first slide only, with a photo of a person."
},
"headline": {
"type": "string",
"maxLength": 60,
"minLength": 1,
"description": "The cover story at the bottom, 3 to 6 words."
},
"masthead": {
"type": "string",
"maxLength": 12,
"minLength": 1,
"description": "One word of 3 to 6 letters across the top, such as GLOW."
},
"coverLines": {
"type": "array",
"items": {
"type": "object",
"required": [
"big",
"small"
],
"properties": {
"big": {
"type": "string",
"maxLength": 24,
"minLength": 1,
"description": "1 to 3 words or a number in bold capitals."
},
"small": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "2 to 6 words in italics under it."
}
},
"additionalProperties": false
},
"maxItems": 4,
"description": "Two to four cover lines down the sides."
},
"headlineSub": {
"type": "string",
"maxLength": 50,
"description": "2 to 6 words under the headline."
}
},
"additionalProperties": false
}
],
"description": "A designed look drawn instead of the photo and text items: tweet, imessage, notebook or magazine. Text items on a designed slide are not drawn."
},
{
"type": "null"
}
],
"description": "A designed look drawn instead of the text items. tweet, notebook and magazine draw over the slide photo, so they still need imageUrl; imessage shows no photo. null makes a classic slide. Omit it to keep the slide's saved design."
},
"avatarId": {
"type": "string",
"format": "uuid",
"description": "UUID of the ReelsFarm avatar. Omit it when the image URL identifies the source."
},
"imageUrl": {
"type": "string",
"description": "The slide photo, an authorized ReelsFarm asset URL. Required, except on an iMessage slide: it draws no photo, so leave imageUrl out there."
},
"textItems": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"text",
"fontSize",
"textSize",
"textStyle",
"textPosition"
],
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "ID of the ReelsFarm item."
},
"text": {
"type": "string",
"maxLength": 5000,
"description": "Text rendered on the slideshow or used by the content workflow."
},
"textX": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Optional exact position: the horizontal centre of the text column, from 0 (left edge) to 1 (right edge). Only used with textY; 0.5 when omitted."
},
"textY": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Optional exact position: the vertical centre of the text column, from 0 (top) to 1 (bottom). When set it replaces textPosition. Items with the same textX and textY stack in one column."
},
"fontSize": {
"type": "string",
"minLength": 1,
"description": "CSS pixel font size used to render the slideshow text."
},
"textFont": {
"enum": [
"classic",
"elegance",
"retro",
"vintage",
"typewriter",
"comic",
"bold",
"serif",
"neon",
"handwriting",
"freehand",
"heavy",
"luxury",
"arcade",
"curiouscat",
"oblique",
"serene",
"telegraph",
"paintstroke",
"slab",
"phantom",
"postcard",
"script",
"technic"
],
"type": "string",
"description": "TikTok text font, such as classic, elegance, retro, typewriter, neon or handwriting. Omit it for Classic."
},
"textSize": {
"type": "object",
"required": [
"width",
"height"
],
"properties": {
"width": {
"type": "number",
"minimum": 0,
"description": "Measured text width in pixels. Use a non-negative finite number."
},
"height": {
"type": "number",
"minimum": 0,
"description": "Measured text height in pixels. Use a non-negative finite number."
}
},
"description": "Measured text width and height used to reproduce the slideshow layout.",
"additionalProperties": false
},
"textType": {
"enum": [
"title",
"body"
],
"type": "string",
"description": "Semantic role of the slideshow text: title or body."
},
"textAlign": {
"enum": [
"left",
"center",
"right"
],
"type": "string",
"description": "Horizontal alignment of the slideshow text."
},
"textColor": {
"type": "string",
"pattern": "^#[0-9a-f]{6}$",
"description": "Hex colour such as #ea403f: the text colour for none, the outline colour for outline, the box colour otherwise."
},
"textStyle": {
"enum": [
"outline",
"solid",
"shadow",
"neon",
"tiktok",
"white",
"black",
"yellow",
"pink",
"whiteBubble",
"blackBubble"
],
"type": "string",
"description": "ReelsFarm visual style applied to the slideshow text."
},
"fontWeight": {
"anyOf": [
{
"type": "number",
"const": 500
},
{
"type": "number",
"const": 700
}
],
"description": "Numeric font weight. Use 500 for medium text or 700 for bold text."
},
"textEffect": {
"enum": [
"none",
"outline",
"background",
"translucent"
],
"type": "string",
"description": "TikTok text mode: none, outline, background or translucent. When set, it and textColor replace textStyle."
},
"lineWidthEm": {
"type": "number",
"maximum": 40,
"minimum": 4,
"description": "Longest line in em (multiples of the font size), from 4 to 40. Omit it: the width then follows the text. Set it only to copy a reference slideshow."
},
"textPosition": {
"enum": [
"top",
"middle",
"bottom"
],
"type": "string",
"description": "Vertical position of the caption or slideshow text."
},
"textTransform": {
"enum": [
"uppercase",
"none"
],
"type": "string",
"description": "Text casing rule. Use uppercase or none."
}
},
"additionalProperties": false
},
"description": "Ordered text items drawn on this slide. One is usual; use up to six."
},
"aspectRatio": {
"enum": [
"4:5",
"9:16",
"3:4",
"1:1"
],
"type": "string",
"description": "Width-to-height ratio."
},
"imageOpacity": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Image opacity percentage from 0 through 100."
},
"timeLengthMs": {
"type": "integer",
"maximum": 5000,
"minimum": 1000,
"description": "Slide display duration in milliseconds, from 1000 through 5000."
},
"compositedImageUrl": {
"type": "string",
"description": "Authorized ReelsFarm URL of the rendered slide image. Omit it when the server must render the slide."
}
},
"additionalProperties": false
},
"description": "Ordered slideshow slide definitions. Follow the nested slide schema and array limits."
},
"status": {
"enum": [
"DRAFT"
],
"type": "string",
"description": "Set DRAFT to reopen an exported slideshow for editing. Use reelsfarm_prepare_finalize_slideshow to export."
},
"settings": {
"type": "object",
"properties": {
"music": {
"anyOf": [
{
"type": "object",
"required": [
"source",
"audioUrl"
],
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"description": "Display name."
},
"source": {
"enum": [
"template",
"upload"
],
"type": "string",
"description": "Where this item comes from."
},
"audioUrl": {
"type": "string",
"minLength": 1,
"description": "Public HTTPS URL or authorized ReelsFarm URL of the source audio track."
},
"coverUrl": {
"type": "string",
"description": "Authorized ReelsFarm asset URL of the selected music cover image."
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Owned or template music configuration used by the slideshow."
},
"duration": {
"type": "integer",
"maximum": 5000,
"minimum": 1000,
"description": "Slideshow display duration in milliseconds."
},
"aspectRatio": {
"enum": [
"4:5",
"9:16",
"3:4",
"1:1"
],
"type": "string",
"description": "Width-to-height ratio."
},
"backgroundColor": {
"type": "string",
"maxLength": 50,
"description": "Slideshow background color as a CSS color value."
},
"revisionHistory": {
"type": "array",
"items": {
"type": "object"
},
"maxItems": 20,
"description": "Up to 20 saved text revisions with their slide states. update_slideshow keeps them when this is left out."
},
"transitionStyle": {
"enum": [
"hard",
"fade",
"slide"
],
"type": "string",
"description": "Visual transition style used between slideshow images."
},
"videoTransition": {
"enum": [
"cut",
"fade"
],
"type": "string",
"description": "Transition used when the slideshow is exported as a video."
},
"activeRevisionId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Identifier of the slideshow revision currently shown in the editor."
}
},
"description": "Structured slideshow appearance and playback settings.",
"additionalProperties": false
},
"slideshowType": {
"enum": [
"EDUCATIONAL",
"PROMOTIONAL",
"STORYTELLING",
"LIFESTYLE",
"REVIEW"
],
"type": "string",
"description": "Content strategy used to generate or revise slideshow text."
},
"idempotencyKey": {
"type": "string",
"pattern": "^[A-Za-z0-9._:-]+$",
"maxLength": 200,
"minLength": 8,
"description": "Stable key for this action, reused only on retries. Required in Creator and Autopilot."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"properties": {
"dryRun": {
"type": "boolean",
"description": "Validate only: nothing is saved, charged or queued."
},
"summary": {
"type": "string",
"description": "Short explanation of the changes made by a slideshow revision."
},
"executed": {
"type": "boolean",
"description": "True when ReelsFarm executed the action instead of preparing a confirmation."
},
"nextStep": {
"type": "string",
"description": "Short instruction for continuing the prepared workflow."
},
"provider": {
"type": "string",
"const": "reelsfarm",
"description": "Service that executed or prepared this action. A value of reelsfarm is required before attributing a result to ReelsFarm."
},
"toolName": {
"type": "string",
"description": "Exact public MCP tool associated with this prepared action or result."
},
"expiresAt": {
"type": "string",
"description": "ISO 8601 date and time when this prepared action expires."
},
"operation": {
"type": "object",
"description": "Durable MCP operation state and result data.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"slideshow": {
"type": "object",
"required": [
"id",
"title",
"prompt",
"slideshowType",
"status",
"settings",
"slides",
"latestVideo",
"videoExportReady",
"exportHash",
"createdAt",
"updatedAt"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "ID of the ReelsFarm item."
},
"title": {
"type": "string",
"description": "Human-readable title for the ReelsFarm content item."
},
"prompt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Natural-language instructions for the requested content generation."
},
"slides": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"avatarId",
"imageUrl",
"compositedImageUrl",
"order",
"aspectRatio",
"timeLengthMs",
"imageOpacity",
"textItems",
"design"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "ID of the ReelsFarm item."
},
"order": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-based position."
},
"design": {
"anyOf": [
{
"oneOf": [
{
"type": "object",
"required": [
"design",
"name",
"handle",
"text",
"time",
"views",
"replies",
"reposts",
"likes",
"saves"
],
"properties": {
"name": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Display name of the person posting. Invented and believable; never a real public figure."
},
"seed": {
"type": "integer",
"maximum": 4294967295,
"minimum": 0,
"description": "Fixes the hand-drawn parts (torn paper edges, tilts) so every export draws the same slide. Keep the value a slide already has; omit it on a new slide."
},
"text": {
"type": "string",
"maxLength": 280,
"minLength": 1,
"description": "The post, up to 280 characters; usually 80 to 200. Lowercase and short lines read as real."
},
"time": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Time and date line, such as 9:41 PM · Oct 21, 2026."
},
"likes": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Likes count as shown on the post, such as 482, 3.1K or 1.2M."
},
"reply": {
"type": "object",
"required": [
"name",
"handle",
"text"
],
"properties": {
"name": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Display name of the person replying."
},
"text": {
"type": "string",
"maxLength": 140,
"minLength": 1,
"description": "The reply, usually the question the next slide answers."
},
"handle": {
"type": "string",
"maxLength": 30,
"minLength": 1,
"description": "Handle of the person replying, starting with @."
}
},
"description": "A reply card under the post. Use on one or two slides only.",
"additionalProperties": false
},
"saves": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Bookmarks count as shown on the post, such as 482, 3.1K or 1.2M."
},
"views": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Views count as shown on the post, such as 482, 3.1K or 1.2M."
},
"design": {
"type": "string",
"const": "tweet",
"description": "A post on X: a white card over the slide photo, blurred."
},
"handle": {
"type": "string",
"maxLength": 30,
"minLength": 1,
"description": "Handle starting with @, used on every slide of the slideshow."
},
"replies": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Replies count as shown on the post, such as 482, 3.1K or 1.2M."
},
"reposts": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Reposts count as shown on the post, such as 482, 3.1K or 1.2M."
},
"verified": {
"type": "boolean",
"description": "Shows a blue tick after the name. Defaults to true."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"design",
"contact",
"messages"
],
"properties": {
"seed": {
"type": "integer",
"maximum": 4294967295,
"minimum": 0,
"description": "Fixes the hand-drawn parts (torn paper edges, tilts) so every export draws the same slide. Keep the value a slide already has; omit it on a new slide."
},
"clock": {
"type": "string",
"maxLength": 8,
"description": "The status bar clock, such as 9:43. Omit it to use 9:41."
},
"draft": {
"type": "string",
"maxLength": 200,
"description": "A reply being typed in the input bar. It opens the keyboard. Usually on the last slide only."
},
"theme": {
"enum": [
"dark",
"light"
],
"type": "string",
"description": "Dark or light mode. Defaults to dark. Same on every slide."
},
"design": {
"type": "string",
"const": "imessage",
"description": "A screenshot of a Messages chat. The slide photo is not shown."
},
"status": {
"type": "string",
"maxLength": 30,
"description": "Shown under your last blue bubble, such as Delivered or Read 9:42 PM. Usually on the last slide only."
},
"unread": {
"type": "string",
"maxLength": 6,
"description": "The unread count next to the back arrow, such as 12."
},
"contact": {
"type": "string",
"maxLength": 30,
"minLength": 1,
"description": "The contact as saved in the phone, such as mom, Sophie or bestie. Same on every slide."
},
"messages": {
"type": "array",
"items": {
"type": "object",
"required": [
"from",
"text"
],
"properties": {
"from": {
"enum": [
"them",
"me"
],
"type": "string",
"description": "them: a grey bubble on the left. me: a blue bubble on the right."
},
"text": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "The message text, short like real texting."
},
"time": {
"type": "string",
"maxLength": 30,
"description": "A time line shown above this message, such as Today 9:41 PM. Usually only on the first message."
},
"reaction": {
"enum": [
"heart",
"like",
"dislike",
"haha",
"emphasis",
"question"
],
"type": "string",
"description": "A tapback on the bubble from the other person: heart, like, dislike, haha, emphasis (!!) or question. Never another emoji."
}
},
"additionalProperties": false
},
"maxItems": 14,
"minItems": 1,
"description": "The conversation so far, oldest first. One chat runs through an iMessage slideshow: each slide repeats the earlier messages and adds the next one to four."
},
"suggestions": {
"type": "array",
"items": {
"type": "string",
"maxLength": 20,
"minLength": 1
},
"maxItems": 3,
"description": "Up to three words above the keyboard."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"design",
"title",
"accent",
"points"
],
"properties": {
"seed": {
"type": "integer",
"maximum": 4294967295,
"minimum": 0,
"description": "Fixes the hand-drawn parts (torn paper edges, tilts) so every export draws the same slide. Keep the value a slide already has; omit it on a new slide."
},
"title": {
"type": "string",
"maxLength": 60,
"minLength": 1,
"description": "Bold title, 2 to 4 words, such as 3 rules for."
},
"accent": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Italic accent line under the title, 2 to 3 words naming the subject, such as slow mornings."
},
"design": {
"type": "string",
"const": "notebook",
"description": "A torn page of grid paper over the slide photo, with the photo taped on when there is room."
},
"points": {
"type": "array",
"items": {
"type": "string",
"maxLength": 90,
"minLength": 1
},
"maxItems": 5,
"minItems": 1,
"description": "One to five numbered points; three fit best."
},
"circled": {
"type": "string",
"maxLength": 30,
"description": "2 to 4 words circled by hand, such as try it for 7 days."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"design",
"masthead",
"issue",
"coverLines",
"headline"
],
"properties": {
"seed": {
"type": "integer",
"maximum": 4294967295,
"minimum": 0,
"description": "Fixes the hand-drawn parts (torn paper edges, tilts) so every export draws the same slide. Keep the value a slide already has; omit it on a new slide."
},
"issue": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "Issue line under the masthead, such as The skin issue · October 2026."
},
"design": {
"type": "string",
"const": "magazine",
"description": "A magazine cover over the slide photo. Use it on the first slide only, with a photo of a person."
},
"headline": {
"type": "string",
"maxLength": 60,
"minLength": 1,
"description": "The cover story at the bottom, 3 to 6 words."
},
"masthead": {
"type": "string",
"maxLength": 12,
"minLength": 1,
"description": "One word of 3 to 6 letters across the top, such as GLOW."
},
"coverLines": {
"type": "array",
"items": {
"type": "object",
"required": [
"big",
"small"
],
"properties": {
"big": {
"type": "string",
"maxLength": 24,
"minLength": 1,
"description": "1 to 3 words or a number in bold capitals."
},
"small": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "2 to 6 words in italics under it."
}
},
"additionalProperties": false
},
"maxItems": 4,
"description": "Two to four cover lines down the sides."
},
"headlineSub": {
"type": "string",
"maxLength": 50,
"description": "2 to 6 words under the headline."
}
},
"additionalProperties": false
}
],
"description": "A designed look drawn instead of the photo and text items: tweet, imessage, notebook or magazine. Text items on a designed slide are not drawn."
},
{
"type": "null"
}
],
"description": "The slide's designed look, drawn instead of the photo and text items; null for a classic slide."
},
"avatarId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "UUID of the ReelsFarm avatar. Omit it when the image URL identifies the source."
},
"imageUrl": {
"type": "string",
"description": "Public HTTPS URL or authorized ReelsFarm URL of the source image."
},
"textItems": {
"type": "array",
"items": {},
"description": "Ordered text items drawn on this slide. One is usual; use up to six."
},
"aspectRatio": {
"enum": [
"4:5",
"9:16",
"3:4",
"1:1"
],
"type": "string",
"description": "Width-to-height ratio."
},
"imageOpacity": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Image opacity percentage from 0 through 100."
},
"timeLengthMs": {
"type": "integer",
"maximum": 5000,
"minimum": 1000,
"description": "Slide display duration in milliseconds, from 1000 through 5000."
},
"compositedImageUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Authorized ReelsFarm URL of the rendered slide image. Omit it when the server must render the slide."
}
},
"additionalProperties": false
},
"description": "Ordered slideshow slide definitions. Follow the nested slide schema and array limits."
},
"status": {
"enum": [
"DRAFT",
"EXPORTED"
],
"type": "string",
"description": "ReelsFarm lifecycle status used for the requested resource or filter."
},
"settings": {
"type": "object",
"properties": {
"music": {
"anyOf": [
{
"type": "object",
"required": [
"source",
"audioUrl"
],
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"description": "Display name."
},
"source": {
"enum": [
"template",
"upload"
],
"type": "string",
"description": "Where this item comes from."
},
"audioUrl": {
"type": "string",
"minLength": 1,
"description": "Public HTTPS URL or authorized ReelsFarm URL of the source audio track."
},
"coverUrl": {
"type": "string",
"description": "Authorized ReelsFarm asset URL of the selected music cover image."
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Owned or template music configuration used by the slideshow."
},
"duration": {
"type": "integer",
"maximum": 5000,
"minimum": 1000,
"description": "Slideshow display duration in milliseconds."
},
"aspectRatio": {
"enum": [
"4:5",
"9:16",
"3:4",
"1:1"
],
"type": "string",
"description": "Width-to-height ratio."
},
"backgroundColor": {
"type": "string",
"maxLength": 50,
"description": "Slideshow background color as a CSS color value."
},
"revisionHistory": {
"type": "array",
"items": {
"type": "object"
},
"maxItems": 20,
"description": "Up to 20 saved text revisions with their slide states. update_slideshow keeps them when this is left out."
},
"transitionStyle": {
"enum": [
"hard",
"fade",
"slide"
],
"type": "string",
"description": "Visual transition style used between slideshow images."
},
"videoTransition": {
"enum": [
"cut",
"fade"
],
"type": "string",
"description": "Transition used when the slideshow is exported as a video."
},
"activeRevisionId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Identifier of the slideshow revision currently shown in the editor."
}
},
"description": "Structured slideshow appearance and playback settings.",
"additionalProperties": false
},
"createdAt": {
"type": "string",
"description": "ISO 8601 date and time when this item or revision was created."
},
"updatedAt": {
"type": "string",
"description": "updated at used by this ReelsFarm operation. Follow the type and validation limits in the schema."
},
"exportHash": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Hash of the slideshow definition used for the current video export."
},
"latestVideo": {
"anyOf": [
{
"type": "object",
"required": [
"id",
"title",
"videoUrl",
"thumbnailUrl",
"duration",
"sourceType",
"sourceSlideshowId",
"createdAt"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"duration": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"videoUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"createdAt": {
"type": "string"
},
"sourceType": {
"enum": [
"UGC_COMPOSITION",
"SLIDESHOW",
"GENERATED_HOOK",
"AI_CLONE"
],
"type": "string"
},
"thumbnailUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"sourceSlideshowId": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Current reusable slideshow video export, or null when no current export exists."
},
"slideshowType": {
"anyOf": [
{
"enum": [
"EDUCATIONAL",
"PROMOTIONAL",
"STORYTELLING",
"LIFESTYLE",
"REVIEW"
],
"type": "string",
"description": "Content strategy used to generate slideshow text."
},
{
"type": "null"
}
],
"description": "Content strategy used to generate or revise slideshow text."
},
"videoExportReady": {
"type": "boolean",
"description": "True when the slideshow has a current reusable video export."
}
},
"description": "Canonical slideshow with settings, ordered slides, and current export state.",
"additionalProperties": false
},
"actionType": {
"type": "string",
"description": "Stable ReelsFarm action category used for policy and operation tracking."
},
"policyCode": {
"type": "string",
"description": "Stable code that explains the server authorization decision."
},
"sourceTool": {
"type": "string",
"description": "Public ReelsFarm MCP tool responsible for this execution state."
},
"operationId": {
"type": "string",
"description": "UUID of the ReelsFarm MCP operation to inspect."
},
"assetCreated": {
"type": "boolean",
"description": "True only when this response contains a completed media asset created by ReelsFarm."
},
"resultMessage": {
"type": "string",
"description": "Human-readable rule for accurately presenting this ReelsFarm result."
},
"confirmationId": {
"type": "string",
"description": "Short-lived ReelsFarm confirmation identifier returned by a prepared action."
},
"connectionMode": {
"enum": [
"REVIEW",
"CREATOR",
"AUTOPILOT"
],
"type": "string",
"description": "Effective Review, Creator, or Autopilot mode for this action."
},
"creditEstimate": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Estimated credit cost, or null when the cost cannot be fixed in advance."
},
"executionState": {
"enum": [
"NOT_STARTED",
"PREPARED",
"ENQUEUED",
"PROCESSING",
"COMPLETED",
"FAILED"
],
"type": "string",
"description": "Authoritative ReelsFarm execution state. Only COMPLETED can support a completion claim."
},
"policyDecision": {
"enum": [
"ALLOW",
"REQUIRE_CONFIRMATION",
"DENY",
"REQUIRE_DASHBOARD"
],
"type": "string",
"description": "Server authorization decision applied to this action."
},
"confirmationTool": {
"type": "string",
"description": "The public tool that confirms only this prepared operation after explicit user approval."
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description80/100
Update a saved character name or identity JSON when stored in the database. The described operation can have destructive or irreversible effects, including overwriting saved data.
Explain mutations, irreversible effects, or prerequisites that matter before calling this tool.
Inputs65/100
Explain the meaning of this value, not just its name.
id
ID of the ReelsFarm item.
Explain the meaning of this value, not just its name.
name
Display name.
Explain the meaning of this value, not just its name.
identity
Structured character identity fields to store with the ReelsFarm character.
Explain the meaning of this value, not just its name.
idempotencyKey
Stable key for this action, reused only on retries. Required in Creator and Autopilot.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
dryRun
Validate only: nothing is saved, charged or queued.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description84/100
Rename a user-uploaded asset by copying it to a new display-name filename and deleting the old object. The described operation can have destructive or irreversible effects, including overwriting saved data.
The description explains the capability, when to use it, and what to expect.
Inputs80/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
category
ReelsFarm asset library category.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
filename
Stored filename of the ReelsFarm asset, including its extension.
Clear enough to supply this argument.
name
Display name.
Explain the meaning of this value, not just its name.
idempotencyKey
Stable key for this action, reused only on retries. Required in Creator and Autopilot.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
dryRun
Validate only: nothing is saved, charged or queued.
{
"name": "reelsfarm_list_music_tracks",
"title": "List Music Tracks",
"description": "Browse and filter royalty-free music tracks available in the builder.",
"inputSchema": {
"type": "object",
"properties": {
"mood": {
"type": "string",
"description": "Optional music mood used to filter ReelsFarm tracks."
},
"page": {
"type": "number",
"description": "Zero-based result page. Omit it to return the first page."
},
"genre": {
"type": "string",
"description": "Optional music genre used to filter ReelsFarm tracks."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, from 1 to 100."
},
"query": {
"type": "string",
"description": "Search text matched against names and metadata. Omit it only when the schema marks it optional."
},
"bpmMax": {
"type": "number",
"description": "Maximum music tempo in beats per minute for the search filter."
},
"bpmMin": {
"type": "number",
"description": "Minimum music tempo in beats per minute for the search filter."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"properties": {
"total": {},
"tracks": {},
"hasMore": {},
"nextCursor": {}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description84/100
Browse public template hook videos available to all users. These are not the user’s own hooks. Use reelsfarm_list_assets and reelsfarm_list_generated_hooks for account hooks.
The description explains the capability, when to use it, and what to expect.
Inputs88/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
limit
Page size, from 1 to 100.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
page
Zero-based result page. Omit it to return the first page.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description76/100
Prepare generating up to 5 async avatar jobs. Use nano-banana-2-1 for Nano Banana 2.1; the legacy nano-banana-2-pro key also uses 2.1. GPT Image 2 and GPT Image 2.5 accept low, medium, or high quality; Seedream 5.0 Pro accepts basic or high. FLUX 3 (flux-3) accepts basic (1K, 3 credits), high (about 2 MP, 3 credits), ultra (2K, 4 credits) or max (4K, 20 credits). Start a prompt with IMAGE CATEGORY: Product or IMAGE CATEGORY: Infographics to use that instruction profile. Poll reelsfarm_get_avatar_job_status for results.
Describe the returned information so the agent knows whether it will answer the request.
Inputs72/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
items › items › mode
Which records or behavior to use.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
items › items › prompt
Natural-language instructions for the requested content generation.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
items › items › referenceUrl
Public HTTPS URL or authorized ReelsFarm URL of the reference image.
Clear enough to supply this argument.
items › items › model
Generation model identifier. Omit it to use the ReelsFarm default model.
Clear enough to supply this argument.
items › items › aspectRatio
Width-to-height ratio.
Explain the meaning of this value, not just its name.
items › items › quality
Requested rendering or generation quality supported by the selected workflow.
Explain the meaning of this value, not just its name.
items › items › styleMode
Avatar style mode used by the selected image model. Omit it to use the model default.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
idempotencyKey
Stable key for this action, reused only on retries. Required in Creator and Autopilot.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
dryRun
Validate only: nothing is saved, charged or queued.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
Start async avatar image generation inside ReelsFarm from text or a reference image when the connection policy allows it. Poll reelsfarm_get_avatar_job_status to COMPLETED, and use the returned ReelsFarm avatar.imageUrl for later ReelsFarm video generation. Use nano-banana-2-1 for Nano Banana 2.1; the legacy nano-banana-2-pro key also uses 2.1. Use gpt-image-2.5-sunburst for GPT Image 2.5. GPT Image 2 and GPT Image 2.5 accept low, medium, or high quality; Seedream 5.0 Pro accepts basic or high. FLUX 3 (flux-3) accepts basic (1K, 3 credits), high (about 2 MP, 3 credits), ultra (2K, 4 credits) or max (4K, 20 credits). For a product photo or an infographic, start the prompt with a line such as IMAGE CATEGORY: Product or IMAGE CATEGORY: Infographics to use that instruction profile instead of the portrait profile; reelsfarm_list_image_templates returns ready-made briefs.
The description explains the capability, when to use it, and what to expect.
Inputs78/100
Explain the meaning of this value, not just its name.
mode
Which records or behavior to use.
Explain the meaning of this value, not just its name.
prompt
Natural-language instructions for the requested content generation.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
sourceImageUrl
Public HTTPS URL or authorized ReelsFarm URL of the source image.
Clear enough to supply this argument.
referenceUrl
Public HTTPS URL or authorized ReelsFarm URL of the reference image.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
model
Generation model identifier. Omit it to use the ReelsFarm default model.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
aspectRatio
Width-to-height ratio.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
quality
Requested rendering or generation quality supported by the selected workflow.
Explain the meaning of this value, not just its name.
styleMode
Avatar style mode used by the selected image model. Omit it to use the model default.
Clear enough to supply this argument.
conversationId
UUID of the existing image-generation conversation. Omit it to start a new conversation.
Clear enough to supply this argument.
parentGenerationId
UUID of the generation to use as the parent of the next conversation turn.
Clear enough to supply this argument.
idempotencyKey
Stable key for this action, reused only on retries. Required in Creator and Autopilot.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
dryRun
Validate only: nothing is saved, charged or queued.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description76/100
Prepare an async product scene from a source avatar, product image, and conversational instruction. Continue an image conversation with conversationId and parentGenerationId. If the prompt starts with IMAGE CATEGORY: Product or IMAGE CATEGORY: Infographics, the source image is a layout reference and its sample product is replaced with the product image; reelsfarm_list_image_templates returns these layouts.
The description explains the capability, when to use it, and what to expect.
Inputs88/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
sourceImageUrl
Public HTTPS URL or authorized ReelsFarm URL of the source image.
Clear enough to supply this argument.
selectedAvatar
Structured selected-avatar data used by the content generation request.
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
avatarUrl
Authorized ReelsFarm avatar URL returned by a completed ReelsFarm avatar job or selected from ReelsFarm. Do not substitute a client-native generated image or a product upload URL.
Clear enough to supply this argument.
productImageUrl
Public HTTPS URL or authorized ReelsFarm URL of the product image.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
userPrompt
Natural-language user request used to guide content generation.
Clear enough to supply this argument.
prompt
Natural-language instructions for the requested content generation.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
conversationId
UUID of the existing image-generation conversation. Omit it to start a new conversation.
Clear enough to supply this argument.
parentGenerationId
UUID of the generation to use as the parent of the next conversation turn.
Clear enough to supply this argument.
idempotencyKey
Stable key for this action, reused only on retries. Required in Creator and Autopilot.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
dryRun
Validate only: nothing is saved, charged or queued.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description83/100
List the user's products: name, description and up to 6 photos each (photos, in order; imageUrl is the first). Product photos uploaded as files (reelsfarm_create_product_upload_sessions, imports, the browser extension) become products here automatically, named from the file until the AI writes a name and description from the photo (describing true). Use a product id as productContextId for slideshows, automations and Recreate.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
responseFormat
Result text: json (the default) or markdown, a fenced JSON block.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
{
"name": "reelsfarm_list_product_contexts",
"title": "List Products",
"description": "List the user's products: name, description and up to 6 photos each (photos, in order; imageUrl is the first). Product photos uploaded as files (reelsfarm_create_product_upload_sessions, imports, the browser extension) become products here automatically, named from the file until the AI writes a name and description from the photo (describing true). Use a product id as productContextId for slideshows, automations and Recreate.",
"inputSchema": {
"type": "object",
"properties": {
"responseFormat": {
"enum": [
"json",
"markdown"
],
"type": "string",
"default": "json",
"description": "Result text: json (the default) or markdown, a fenced JSON block."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"properties": {
"products": {}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description85/100
Read a public HTTPS product page and suggest the product name and generation context used by the web product-context form. This does not save the suggestion.
Describe the returned information so the agent knows whether it will answer the request.
Inputs94/100
Input documentation gives an agent enough context to populate the arguments.
url
Public HTTPS URL or authorized ReelsFarm asset URL used by this operation.
{
"name": "reelsfarm_suggest_product_context_from_url",
"title": "Suggest Product Context From URL",
"description": "Read a public HTTPS product page and suggest the product name and generation context used by the web product-context form. This does not save the suggestion.",
"inputSchema": {
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "Public HTTPS URL or authorized ReelsFarm asset URL used by this operation."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"properties": {
"name": {},
"suggestion": {},
"description": {}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description70/100
Create a product with a name, an optional description and up to 6 photos (photoUrls, in order; the first is the main photo). Recreate puts the main photo on slides where the original slideshow shows its own product. imageUrl is the older one-photo field.
Explain mutations, irreversible effects, or prerequisites that matter before calling this tool.
Inputs92/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
name
Display name.
Clear enough to supply this argument.
description
What the product is, who it is for and what it does. Optional.
Clear enough to supply this argument.
imageUrl
Public HTTPS URL or authorized ReelsFarm URL of the source image.
Clear enough to supply this argument.
photoUrls
Up to 6 asset URLs of the user's own PNG, JPEG or WebP images, in order.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
idempotencyKey
Stable key for this action, reused only on retries. Required in Creator and Autopilot.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
dryRun
Validate only: nothing is saved, charged or queued.
{
"name": "reelsfarm_create_product_context",
"title": "Create Product",
"description": "Create a product with a name, an optional description and up to 6 photos (photoUrls, in order; the first is the main photo). Recreate puts the main photo on slides where the original slideshow shows its own product. imageUrl is the older one-photo field.",
"inputSchema": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "Display name."
},
"dryRun": {
"type": "boolean",
"description": "Validate only: nothing is saved, charged or queued."
},
"imageUrl": {
"type": "string",
"maxLength": 2048,
"minLength": 1,
"description": "Public HTTPS URL or authorized ReelsFarm URL of the source image."
},
"photoUrls": {
"type": "array",
"items": {
"type": "string",
"maxLength": 2048,
"minLength": 1,
"description": "Asset URL of a PNG, JPEG or WebP image from the user's files, such as a product photo from reelsfarm_list_assets."
},
"maxItems": 6,
"description": "Up to 6 asset URLs of the user's own PNG, JPEG or WebP images, in order."
},
"description": {
"type": "string",
"maxLength": 8000,
"description": "What the product is, who it is for and what it does. Optional."
},
"idempotencyKey": {
"type": "string",
"pattern": "^[A-Za-z0-9._:-]+$",
"maxLength": 200,
"minLength": 8,
"description": "Stable key for this action, reused only on retries. Required in Creator and Autopilot."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"properties": {
"dryRun": {},
"product": {},
"summary": {},
"executed": {},
"nextStep": {},
"provider": {},
"toolName": {},
"expiresAt": {},
"operation": {},
"actionType": {},
"policyCode": {},
"sourceTool": {},
"operationId": {},
"assetCreated": {},
"resultMessage": {},
"confirmationId": {},
"connectionMode": {},
"creditEstimate": {},
"executionState": {},
"policyDecision": {},
"confirmationTool": {}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description87/100
Change a product's name, description or photos. photoUrls replaces all photos, in order (up to 6; the first is the main photo); an empty list removes them. imageUrl is the older one-photo field: null removes the photos. Photos must be PNG, JPEG or WebP images from the user's files. A photo removed from every product goes to Trash.
The description explains the capability, when to use it, and what to expect.
Inputs54/100
Explain the meaning of this value, not just its name.
productContextId
UUID of the product, from reelsfarm_list_product_contexts.
Clear enough to supply this argument.
name
Display name.
Explain the meaning of this value, not just its name.
description
Human-readable description of the ReelsFarm resource or requested operation.
Explain the meaning of this value, not just its name.
imageUrl
Public HTTPS URL or authorized ReelsFarm URL of the source image.
Resolve the mismatch between this description and its schema constraints.
photoUrls
All photos of the product, in order. Replaces the current photos.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
idempotencyKey
Stable key for this action, reused only on retries. Required in Creator and Autopilot.
Resolve the mismatch between this description and its schema constraints.
dryRun
Validate only: nothing is saved, charged or queued.
{
"name": "reelsfarm_update_product_context",
"title": "Update Product",
"description": "Change a product's name, description or photos. photoUrls replaces all photos, in order (up to 6; the first is the main photo); an empty list removes them. imageUrl is the older one-photo field: null removes the photos. Photos must be PNG, JPEG or WebP images from the user's files. A photo removed from every product goes to Trash.",
"inputSchema": {
"type": "object",
"required": [
"productContextId"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "Display name."
},
"dryRun": {
"type": "boolean",
"description": "Validate only: nothing is saved, charged or queued."
},
"imageUrl": {
"anyOf": [
{
"type": "string",
"maxLength": 2048,
"minLength": 1,
"description": "Asset URL of a PNG, JPEG or WebP image from the user's files, such as a product photo from reelsfarm_list_assets."
},
{
"type": "null"
}
],
"description": "Public HTTPS URL or authorized ReelsFarm URL of the source image."
},
"photoUrls": {
"type": "array",
"items": {
"type": "string",
"maxLength": 2048,
"minLength": 1,
"description": "Asset URL of a PNG, JPEG or WebP image from the user's files, such as a product photo from reelsfarm_list_assets."
},
"maxItems": 6,
"description": "All photos of the product, in order. Replaces the current photos."
},
"description": {
"type": "string",
"maxLength": 8000,
"description": "Human-readable description of the ReelsFarm resource or requested operation."
},
"idempotencyKey": {
"type": "string",
"pattern": "^[A-Za-z0-9._:-]+$",
"maxLength": 200,
"minLength": 8,
"description": "Stable key for this action, reused only on retries. Required in Creator and Autopilot."
},
"productContextId": {
"type": "string",
"format": "uuid",
"description": "UUID of the product, from reelsfarm_list_product_contexts."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"properties": {
"dryRun": {},
"product": {},
"summary": {},
"executed": {},
"nextStep": {},
"provider": {},
"toolName": {},
"expiresAt": {},
"operation": {},
"actionType": {},
"policyCode": {},
"sourceTool": {},
"operationId": {},
"assetCreated": {},
"resultMessage": {},
"confirmationId": {},
"connectionMode": {},
"creditEstimate": {},
"executionState": {},
"policyDecision": {},
"confirmationTool": {}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description89/100
List completed, exported videos in this account, optionally filtered by their generation source or library category. totalCount is the full matching library count, independent of pagination. Excludes trashed videos and imported hook clips. Use totalCount for how many videos the user has, rather than the page length or recent generation statistics. Videos workbench results use sourceType GENERATED_HOOK.
The description explains the capability, when to use it, and what to expect.
Inputs81/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
limit
Page size, from 1 to 100.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
cursor
nextCursor of the previous page. Omit it for the first page.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
sourceType
ReelsFarm source library or workflow that supplied this video part.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
category
Videos library category, as in the dashboard: people, product, or scenes. People also includes avatar hooks and AI Clone videos.
{
"type": "object",
"properties": {
"draft": {
"type": "object",
"description": "Canonical saved ReelsFarm draft returned by the operation.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"dryRun": {
"type": "boolean",
"description": "Validate only: nothing is saved, charged or queued."
},
"summary": {
"type": "string",
"description": "Short explanation of the changes made by a slideshow revision."
},
"executed": {
"type": "boolean",
"description": "True when ReelsFarm executed the action instead of preparing a confirmation."
},
"nextStep": {
"type": "string",
"description": "Short instruction for continuing the prepared workflow."
},
"provider": {
"type": "string",
"const": "reelsfarm",
"description": "Service that executed or prepared this action. A value of reelsfarm is required before attributing a result to ReelsFarm."
},
"toolName": {
"type": "string",
"description": "Exact public MCP tool associated with this prepared action or result."
},
"expiresAt": {
"type": "string",
"description": "ISO 8601 date and time when this prepared action expires."
},
"operation": {
"type": "object",
"description": "Durable MCP operation state and result data.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"actionType": {
"type": "string",
"description": "Stable ReelsFarm action category used for policy and operation tracking."
},
"policyCode": {
"type": "string",
"description": "Stable code that explains the server authorization decision."
},
"sourceTool": {
"type": "string",
"description": "Public ReelsFarm MCP tool responsible for this execution state."
},
"operationId": {
"type": "string",
"description": "UUID of the ReelsFarm MCP operation to inspect."
},
"assetCreated": {
"type": "boolean",
"description": "True only when this response contains a completed media asset created by ReelsFarm."
},
"resultMessage": {
"type": "string",
"description": "Human-readable rule for accurately presenting this ReelsFarm result."
},
"confirmationId": {
"type": "string",
"description": "Short-lived ReelsFarm confirmation identifier returned by a prepared action."
},
"connectionMode": {
"enum": [
"REVIEW",
"CREATOR",
"AUTOPILOT"
],
"type": "string",
"description": "Effective Review, Creator, or Autopilot mode for this action."
},
"creditEstimate": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Estimated credit cost, or null when the cost cannot be fixed in advance."
},
"executionState": {
"enum": [
"NOT_STARTED",
"PREPARED",
"ENQUEUED",
"PROCESSING",
"COMPLETED",
"FAILED"
],
"type": "string",
"description": "Authoritative ReelsFarm execution state. Only COMPLETED can support a completion claim."
},
"policyDecision": {
"enum": [
"ALLOW",
"REQUIRE_CONFIRMATION",
"DENY",
"REQUIRE_DASHBOARD"
],
"type": "string",
"description": "Server authorization decision applied to this action."
},
"confirmationTool": {
"type": "string",
"description": "The public tool that confirms only this prepared operation after explicit user approval."
}
},
"additionalProperties": false
}
Original tool metadata
{
"name": "reelsfarm_save_draft",
"title": "Save Hook Demo Draft",
"description": "Create or update a Hook/Demo builder draft. The described operation can have destructive or irreversible effects, including overwriting saved data.",
"inputSchema": {
"type": "object",
"required": [
"hookUrl"
],
"properties": {
"id": {
"type": "string",
"description": "ID of the ReelsFarm item."
},
"parts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "ID of the ReelsFarm item."
},
"name": {
"type": "string",
"description": "Display name."
},
"caption": {
"type": "string",
"description": "Caption text. Omit it for no caption."
},
"videoId": {
"type": "string",
"format": "uuid",
"description": "UUID of an existing user-owned ReelsFarm video. Do not provide videoUrl with this field."
},
"hookType": {
"enum": [
"GENERATED",
"UPLOADED",
"TEMPLATE"
],
"type": "string",
"description": "Hook origin classification: generated, uploaded, or template."
},
"videoUrl": {
"type": "string",
"description": "Public HTTPS URL or authorized ReelsFarm URL of the source video."
},
"sourceType": {
"enum": [
"my-hooks",
"my-avatars",
"my-videos",
"templates",
"demos",
"upload"
],
"type": "string",
"description": "ReelsFarm source library or workflow that supplied this video part."
},
"textPosition": {
"enum": [
"TOP",
"MIDDLE",
"BOTTOM",
"top",
"center",
"bottom"
],
"type": "string",
"description": "Vertical position of the caption or slideshow text."
},
"thumbnailUrl": {
"type": "string",
"description": "Thumbnail image URL."
},
"assetCategory": {
"enum": [
"hooks",
"demos",
"videos"
],
"type": "string",
"description": "ReelsFarm asset library category that contains the referenced file."
},
"muteGlobalAudio": {
"type": "boolean",
"description": "When true, exclude global audio while this video part plays."
},
"muteSourceAudio": {
"type": "boolean",
"description": "When true, remove audio from this video part before composition."
}
},
"additionalProperties": false
},
"maxItems": 10,
"minItems": 1,
"description": "Ordered video parts used to assemble the UGC video. Each part must provide exactly one videoId or videoUrl."
},
"demoId": {
"type": "string",
"description": "UUID of an existing user-owned ReelsFarm demo video."
},
"dryRun": {
"type": "boolean",
"description": "Validate only: nothing is saved, charged or queued."
},
"hookId": {
"type": "string",
"description": "UUID of an existing ReelsFarm hook video."
},
"caption": {
"type": "string",
"description": "Caption text. Omit it for no caption."
},
"demoUrl": {
"type": "string",
"description": "Public HTTPS URL or authorized ReelsFarm URL of the demo video."
},
"hookUrl": {
"type": "string",
"minLength": 1,
"description": "Public HTTPS URL or authorized ReelsFarm URL of the hook video."
},
"hookType": {
"enum": [
"GENERATED",
"UPLOADED",
"TEMPLATE"
],
"type": "string",
"description": "Hook origin classification: generated, uploaded, or template."
},
"musicUrl": {
"type": "string",
"description": "Public HTTPS URL or authorized ReelsFarm URL of the selected music track."
},
"musicName": {
"type": "string",
"description": "Human-readable name of the selected ReelsFarm music track."
},
"musicType": {
"type": "string",
"description": "Music source or selection type used by the video composition."
},
"hookThumbUrl": {
"type": "string",
"description": "Public HTTPS URL or authorized ReelsFarm URL of the hook thumbnail."
},
"textPosition": {
"enum": [
"TOP",
"MIDDLE",
"BOTTOM"
],
"type": "string",
"description": "Vertical position of the caption or slideshow text."
},
"idempotencyKey": {
"type": "string",
"pattern": "^[A-Za-z0-9._:-]+$",
"maxLength": 200,
"minLength": 8,
"description": "Stable key for this action, reused only on retries. Required in Creator and Autopilot."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"properties": {
"draft": {
"type": "object",
"description": "Canonical saved ReelsFarm draft returned by the operation.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"dryRun": {
"type": "boolean",
"description": "Validate only: nothing is saved, charged or queued."
},
"summary": {
"type": "string",
"description": "Short explanation of the changes made by a slideshow revision."
},
"executed": {
"type": "boolean",
"description": "True when ReelsFarm executed the action instead of preparing a confirmation."
},
"nextStep": {
"type": "string",
"description": "Short instruction for continuing the prepared workflow."
},
"provider": {
"type": "string",
"const": "reelsfarm",
"description": "Service that executed or prepared this action. A value of reelsfarm is required before attributing a result to ReelsFarm."
},
"toolName": {
"type": "string",
"description": "Exact public MCP tool associated with this prepared action or result."
},
"expiresAt": {
"type": "string",
"description": "ISO 8601 date and time when this prepared action expires."
},
"operation": {
"type": "object",
"description": "Durable MCP operation state and result data.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"actionType": {
"type": "string",
"description": "Stable ReelsFarm action category used for policy and operation tracking."
},
"policyCode": {
"type": "string",
"description": "Stable code that explains the server authorization decision."
},
"sourceTool": {
"type": "string",
"description": "Public ReelsFarm MCP tool responsible for this execution state."
},
"operationId": {
"type": "string",
"description": "UUID of the ReelsFarm MCP operation to inspect."
},
"assetCreated": {
"type": "boolean",
"description": "True only when this response contains a completed media asset created by ReelsFarm."
},
"resultMessage": {
"type": "string",
"description": "Human-readable rule for accurately presenting this ReelsFarm result."
},
"confirmationId": {
"type": "string",
"description": "Short-lived ReelsFarm confirmation identifier returned by a prepared action."
},
"connectionMode": {
"enum": [
"REVIEW",
"CREATOR",
"AUTOPILOT"
],
"type": "string",
"description": "Effective Review, Creator, or Autopilot mode for this action."
},
"creditEstimate": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Estimated credit cost, or null when the cost cannot be fixed in advance."
},
"executionState": {
"enum": [
"NOT_STARTED",
"PREPARED",
"ENQUEUED",
"PROCESSING",
"COMPLETED",
"FAILED"
],
"type": "string",
"description": "Authoritative ReelsFarm execution state. Only COMPLETED can support a completion claim."
},
"policyDecision": {
"enum": [
"ALLOW",
"REQUIRE_CONFIRMATION",
"DENY",
"REQUIRE_DASHBOARD"
],
"type": "string",
"description": "Server authorization decision applied to this action."
},
"confirmationTool": {
"type": "string",
"description": "The public tool that confirms only this prepared operation after explicit user approval."
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description87/100
List this account’s generated and imported video hooks using the same library as My Hooks in the dashboard. Also list uploaded hooks with reelsfarm_list_assets(category: hooks). Follow nextCursor until hasMore is false and deduplicate by bucket/key or URL. Never substitute public template hooks for account hooks.
Describe the returned information so the agent knows whether it will answer the request.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
limit
Page size, from 1 to 100.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
cursor
nextCursor of the previous page. Omit it for the first page.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
{
"name": "reelsfarm_list_generated_hooks",
"title": "List Generated Hooks",
"description": "List this account’s generated and imported video hooks using the same library as My Hooks in the dashboard. Also list uploaded hooks with reelsfarm_list_assets(category: hooks). Follow nextCursor until hasMore is false and deduplicate by bucket/key or URL. Never substitute public template hooks for account hooks.",
"inputSchema": {
"type": "object",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, from 1 to 100."
},
"cursor": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "nextCursor of the previous page. Omit it for the first page."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"properties": {
"hooks": {},
"hasMore": {},
"nextCursor": {},
"libraryTotal": {}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description81/100
Get the status of a Videos workbench job started with reelsfarm_prepare_generate_video or in the dashboard. improvedPrompt is the rewritten prompt the model got, or null when the prompt was sent as written. A COMPLETED job returns the finished library video; use video.id with contentType UGC_VIDEO to publish it.
Describe the returned information so the agent knows whether it will answer the request.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
jobId
ID of the ReelsFarm job.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
waitMs
Wait up to 25000 milliseconds for a status or item-progress change. Omit or use 0 for an immediate snapshot.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Declare the result fields and their types in the output schema.
View output schema
{
"type": "object",
"required": [
"jobProgress"
],
"properties": {
"status": {},
"provider": {},
"sourceTool": {},
"jobProgress": {
"type": "object",
"required": [
"step",
"terminal",
"nextPollAfterMs"
],
"properties": {
"step": {
"enum": [
"queued",
"processing",
"completed",
"failed",
"cancelled",
"unknown"
],
"type": "string",
"description": "Persisted job stage. Processing does not imply a more detailed provider stage."
},
"total": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Number of batch items, when reported by the worker."
},
"failed": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Number of failed batch items, when reported by the worker."
},
"terminal": {
"type": "boolean",
"description": "True when the job has finished, failed, or been cancelled."
},
"processed": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Number of batch items processed, when reported by the worker."
},
"succeeded": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Number of successful batch items. A completed job can include failed items."
},
"nextPollAfterMs": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Suggested delay before an immediate status call; zero for terminal jobs. A waitMs call can be made immediately."
}
},
"description": "Consistent job lifecycle and recorded batch progress. Check the existing result for assets and errors.",
"additionalProperties": false
},
"assetCreated": {},
"resultMessage": {},
"executionState": {}
},
"additionalProperties": false
}
Original tool metadata
{
"name": "reelsfarm_get_video_generation_status",
"title": "Get Video Generation Status",
"description": "Get the status of a Videos workbench job started with reelsfarm_prepare_generate_video or in the dashboard. improvedPrompt is the rewritten prompt the model got, or null when the prompt was sent as written. A COMPLETED job returns the finished library video; use video.id with contentType UGC_VIDEO to publish it.",
"inputSchema": {
"type": "object",
"required": [
"jobId"
],
"properties": {
"jobId": {
"type": "string",
"format": "uuid",
"description": "ID of the ReelsFarm job."
},
"waitMs": {
"type": "integer",
"maximum": 25000,
"minimum": 0,
"description": "Wait up to 25000 milliseconds for a status or item-progress change. Omit or use 0 for an immediate snapshot."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"required": [
"jobProgress"
],
"properties": {
"status": {},
"provider": {},
"sourceTool": {},
"jobProgress": {
"type": "object",
"required": [
"step",
"terminal",
"nextPollAfterMs"
],
"properties": {
"step": {
"enum": [
"queued",
"processing",
"completed",
"failed",
"cancelled",
"unknown"
],
"type": "string",
"description": "Persisted job stage. Processing does not imply a more detailed provider stage."
},
"total": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Number of batch items, when reported by the worker."
},
"failed": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Number of failed batch items, when reported by the worker."
},
"terminal": {
"type": "boolean",
"description": "True when the job has finished, failed, or been cancelled."
},
"processed": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Number of batch items processed, when reported by the worker."
},
"succeeded": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Number of successful batch items. A completed job can include failed items."
},
"nextPollAfterMs": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Suggested delay before an immediate status call; zero for terminal jobs. A waitMs call can be made immediately."
}
},
"description": "Consistent job lifecycle and recorded batch progress. Check the existing result for assets and errors.",
"additionalProperties": false
},
"assetCreated": {},
"resultMessage": {},
"executionState": {}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description74/100
Cancel a pending or running hook clip import job owned by the authenticated user. The described operation can have destructive or irreversible effects, including overwriting saved data.
Explain mutations, irreversible effects, or prerequisites that matter before calling this tool.
Inputs50/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
jobId
ID of the ReelsFarm job.
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
idempotencyKey
Stable key for this action, reused only on retries. Required in Creator and Autopilot.
Resolve the mismatch between this description and its schema constraints.
dryRun
Validate only: nothing is saved, charged or queued.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description79/100
List user slideshows with the same status filter and cursor pagination as the web app. Rows leave out settings.revisionHistory; reelsfarm_get_slideshow returns it.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
limit
Page size, from 1 to 100.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
cursor
nextCursor of the previous page. Omit it for the first page.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
status
ReelsFarm lifecycle status used for the requested resource or filter.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
{
"type": "object",
"required": [
"slideshows",
"nextCursor",
"hasMore"
],
"properties": {
"hasMore": {
"type": "boolean",
"description": "True when another result page is available."
},
"nextCursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Opaque cursor for the next result page, or null when no later page exists."
},
"slideshows": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"title",
"prompt",
"slideshowType",
"status",
"settings",
"slides",
"latestVideo",
"videoExportReady",
"exportHash",
"createdAt",
"updatedAt"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "ID of the ReelsFarm item."
},
"title": {
"type": "string",
"description": "Human-readable title for the ReelsFarm content item."
},
"prompt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Natural-language instructions for the requested content generation."
},
"slides": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"avatarId",
"imageUrl",
"compositedImageUrl",
"order",
"aspectRatio",
"timeLengthMs",
"imageOpacity",
"textItems",
"design"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "ID of the ReelsFarm item."
},
"order": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-based position."
},
"design": {
"anyOf": [
{
"oneOf": [
{
"type": "object",
"required": [
"design",
"name",
"handle",
"text",
"time",
"views",
"replies",
"reposts",
"likes",
"saves"
],
"properties": {
"name": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Display name of the person posting. Invented and believable; never a real public figure."
},
"seed": {
"type": "integer",
"maximum": 4294967295,
"minimum": 0,
"description": "Fixes the hand-drawn parts (torn paper edges, tilts) so every export draws the same slide. Keep the value a slide already has; omit it on a new slide."
},
"text": {
"type": "string",
"maxLength": 280,
"minLength": 1,
"description": "The post, up to 280 characters; usually 80 to 200. Lowercase and short lines read as real."
},
"time": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Time and date line, such as 9:41 PM · Oct 21, 2026."
},
"likes": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Likes count as shown on the post, such as 482, 3.1K or 1.2M."
},
"reply": {
"type": "object",
"required": [
"name",
"handle",
"text"
],
"properties": {
"name": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Display name of the person replying."
},
"text": {
"type": "string",
"maxLength": 140,
"minLength": 1,
"description": "The reply, usually the question the next slide answers."
},
"handle": {
"type": "string",
"maxLength": 30,
"minLength": 1,
"description": "Handle of the person replying, starting with @."
}
},
"description": "A reply card under the post. Use on one or two slides only.",
"additionalProperties": false
},
"saves": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Bookmarks count as shown on the post, such as 482, 3.1K or 1.2M."
},
"views": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Views count as shown on the post, such as 482, 3.1K or 1.2M."
},
"design": {
"type": "string",
"const": "tweet",
"description": "A post on X: a white card over the slide photo, blurred."
},
"handle": {
"type": "string",
"maxLength": 30,
"minLength": 1,
"description": "Handle starting with @, used on every slide of the slideshow."
},
"replies": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Replies count as shown on the post, such as 482, 3.1K or 1.2M."
},
"reposts": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Reposts count as shown on the post, such as 482, 3.1K or 1.2M."
},
"verified": {
"type": "boolean",
"description": "Shows a blue tick after the name. Defaults to true."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"design",
"contact",
"messages"
],
"properties": {
"seed": {
"type": "integer",
"maximum": 4294967295,
"minimum": 0,
"description": "Fixes the hand-drawn parts (torn paper edges, tilts) so every export draws the same slide. Keep the value a slide already has; omit it on a new slide."
},
"clock": {
"type": "string",
"maxLength": 8,
"description": "The status bar clock, such as 9:43. Omit it to use 9:41."
},
"draft": {
"type": "string",
"maxLength": 200,
"description": "A reply being typed in the input bar. It opens the keyboard. Usually on the last slide only."
},
"theme": {
"enum": [
"dark",
"light"
],
"type": "string",
"description": "Dark or light mode. Defaults to dark. Same on every slide."
},
"design": {
"type": "string",
"const": "imessage",
"description": "A screenshot of a Messages chat. The slide photo is not shown."
},
"status": {
"type": "string",
"maxLength": 30,
"description": "Shown under your last blue bubble, such as Delivered or Read 9:42 PM. Usually on the last slide only."
},
"unread": {
"type": "string",
"maxLength": 6,
"description": "The unread count next to the back arrow, such as 12."
},
"contact": {
"type": "string",
"maxLength": 30,
"minLength": 1,
"description": "The contact as saved in the phone, such as mom, Sophie or bestie. Same on every slide."
},
"messages": {
"type": "array",
"items": {
"type": "object",
"required": [
"from",
"text"
],
"properties": {
"from": {
"enum": [
"them",
"me"
],
"type": "string",
"description": "them: a grey bubble on the left. me: a blue bubble on the right."
},
"text": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "The message text, short like real texting."
},
"time": {
"type": "string",
"maxLength": 30,
"description": "A time line shown above this message, such as Today 9:41 PM. Usually only on the first message."
},
"reaction": {
"enum": [
"heart",
"like",
"dislike",
"haha",
"emphasis",
"question"
],
"type": "string",
"description": "A tapback on the bubble from the other person: heart, like, dislike, haha, emphasis (!!) or question. Never another emoji."
}
},
"additionalProperties": false
},
"maxItems": 14,
"minItems": 1,
"description": "The conversation so far, oldest first. One chat runs through an iMessage slideshow: each slide repeats the earlier messages and adds the next one to four."
},
"suggestions": {
"type": "array",
"items": {
"type": "string",
"maxLength": 20,
"minLength": 1
},
"maxItems": 3,
"description": "Up to three words above the keyboard."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"design",
"title",
"accent",
"points"
],
"properties": {
"seed": {
"type": "integer",
"maximum": 4294967295,
"minimum": 0,
"description": "Fixes the hand-drawn parts (torn paper edges, tilts) so every export draws the same slide. Keep the value a slide already has; omit it on a new slide."
},
"title": {
"type": "string",
"maxLength": 60,
"minLength": 1,
"description": "Bold title, 2 to 4 words, such as 3 rules for."
},
"accent": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Italic accent line under the title, 2 to 3 words naming the subject, such as slow mornings."
},
"design": {
"type": "string",
"const": "notebook",
"description": "A torn page of grid paper over the slide photo, with the photo taped on when there is room."
},
"points": {
"type": "array",
"items": {
"type": "string",
"maxLength": 90,
"minLength": 1
},
"maxItems": 5,
"minItems": 1,
"description": "One to five numbered points; three fit best."
},
"circled": {
"type": "string",
"maxLength": 30,
"description": "2 to 4 words circled by hand, such as try it for 7 days."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"design",
"masthead",
"issue",
"coverLines",
"headline"
],
"properties": {
"seed": {
"type": "integer",
"maximum": 4294967295,
"minimum": 0,
"description": "Fixes the hand-drawn parts (torn paper edges, tilts) so every export draws the same slide. Keep the value a slide already has; omit it on a new slide."
},
"issue": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "Issue line under the masthead, such as The skin issue · October 2026."
},
"design": {
"type": "string",
"const": "magazine",
"description": "A magazine cover over the slide photo. Use it on the first slide only, with a photo of a person."
},
"headline": {
"type": "string",
"maxLength": 60,
"minLength": 1,
"description": "The cover story at the bottom, 3 to 6 words."
},
"masthead": {
"type": "string",
"maxLength": 12,
"minLength": 1,
"description": "One word of 3 to 6 letters across the top, such as GLOW."
},
"coverLines": {
"type": "array",
"items": {
"type": "object",
"required": [
"big",
"small"
],
"properties": {
"big": {
"type": "string",
"maxLength": 24,
"minLength": 1,
"description": "1 to 3 words or a number in bold capitals."
},
"small": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "2 to 6 words in italics under it."
}
},
"additionalProperties": false
},
"maxItems": 4,
"description": "Two to four cover lines down the sides."
},
"headlineSub": {
"type": "string",
"maxLength": 50,
"description": "2 to 6 words under the headline."
}
},
"additionalProperties": false
}
],
"description": "A designed look drawn instead of the photo and text items: tweet, imessage, notebook or magazine. Text items on a designed slide are not drawn."
},
{
"type": "null"
}
],
"description": "The slide's designed look, drawn instead of the photo and text items; null for a classic slide."
},
"avatarId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "UUID of the ReelsFarm avatar. Omit it when the image URL identifies the source."
},
"imageUrl": {
"type": "string",
"description": "Public HTTPS URL or authorized ReelsFarm URL of the source image."
},
"textItems": {
"type": "array",
"items": {},
"description": "Ordered text items drawn on this slide. One is usual; use up to six."
},
"aspectRatio": {
"enum": [
"4:5",
"9:16",
"3:4",
"1:1"
],
"type": "string",
"description": "Width-to-height ratio."
},
"imageOpacity": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Image opacity percentage from 0 through 100."
},
"timeLengthMs": {
"type": "integer",
"maximum": 5000,
"minimum": 1000,
"description": "Slide display duration in milliseconds, from 1000 through 5000."
},
"compositedImageUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Authorized ReelsFarm URL of the rendered slide image. Omit it when the server must render the slide."
}
},
"additionalProperties": false
},
"description": "Ordered slideshow slide definitions. Follow the nested slide schema and array limits."
},
"status": {
"enum": [
"DRAFT",
"EXPORTED"
],
"type": "string",
"description": "ReelsFarm lifecycle status used for the requested resource or filter."
},
"settings": {
"type": "object",
"properties": {
"music": {
"anyOf": [
{
"type": "object",
"required": [
"source",
"audioUrl"
],
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"description": "Display name."
},
"source": {
"enum": [
"template",
"upload"
],
"type": "string",
"description": "Where this item comes from."
},
"audioUrl": {
"type": "string",
"minLength": 1,
"description": "Public HTTPS URL or authorized ReelsFarm URL of the source audio track."
},
"coverUrl": {
"type": "string",
"description": "Authorized ReelsFarm asset URL of the selected music cover image."
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Owned or template music configuration used by the slideshow."
},
"duration": {
"type": "integer",
"maximum": 5000,
"minimum": 1000,
"description": "Slideshow display duration in milliseconds."
},
"aspectRatio": {
"enum": [
"4:5",
"9:16",
"3:4",
"1:1"
],
"type": "string",
"description": "Width-to-height ratio."
},
"backgroundColor": {
"type": "string",
"maxLength": 50,
"description": "Slideshow background color as a CSS color value."
},
"revisionHistory": {
"type": "array",
"items": {
"type": "object"
},
"maxItems": 20,
"description": "Up to 20 saved text revisions with their slide states. update_slideshow keeps them when this is left out."
},
"transitionStyle": {
"enum": [
"hard",
"fade",
"slide"
],
"type": "string",
"description": "Visual transition style used between slideshow images."
},
"videoTransition": {
"enum": [
"cut",
"fade"
],
"type": "string",
"description": "Transition used when the slideshow is exported as a video."
},
"activeRevisionId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Identifier of the slideshow revision currently shown in the editor."
}
},
"description": "Structured slideshow appearance and playback settings.",
"additionalProperties": false
},
"createdAt": {
"type": "string",
"description": "ISO 8601 date and time when this item or revision was created."
},
"updatedAt": {
"type": "string",
"description": "updated at used by this ReelsFarm operation. Follow the type and validation limits in the schema."
},
"exportHash": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Hash of the slideshow definition used for the current video export."
},
"latestVideo": {
"anyOf": [
{
"type": "object",
"required": [
"id",
"title",
"videoUrl",
"thumbnailUrl",
"duration",
"sourceType",
"sourceSlideshowId",
"createdAt"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"duration": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"videoUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"createdAt": {
"type": "string"
},
"sourceType": {
"enum": [
"UGC_COMPOSITION",
"SLIDESHOW",
"GENERATED_HOOK",
"AI_CLONE"
],
"type": "string"
},
"thumbnailUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"sourceSlideshowId": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Current reusable slideshow video export, or null when no current export exists."
},
"slideshowType": {
"anyOf": [
{
"enum": [
"EDUCATIONAL",
"PROMOTIONAL",
"STORYTELLING",
"LIFESTYLE",
"REVIEW"
],
"type": "string",
"description": "Content strategy used to generate slideshow text."
},
{
"type": "null"
}
],
"description": "Content strategy used to generate or revise slideshow text."
},
"videoExportReady": {
"type": "boolean",
"description": "True when the slideshow has a current reusable video export."
}
},
"additionalProperties": false
},
"description": "Canonical slideshows returned by this result page."
}
},
"additionalProperties": false
}
Original tool metadata
{
"name": "reelsfarm_list_slideshows",
"title": "List Slideshows",
"description": "List user slideshows with the same status filter and cursor pagination as the web app. Rows leave out settings.revisionHistory; reelsfarm_get_slideshow returns it.",
"inputSchema": {
"type": "object",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, from 1 to 100."
},
"cursor": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "nextCursor of the previous page. Omit it for the first page."
},
"status": {
"enum": [
"DRAFT",
"EXPORTED"
],
"type": "string",
"description": "ReelsFarm lifecycle status used for the requested resource or filter."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"required": [
"slideshows",
"nextCursor",
"hasMore"
],
"properties": {
"hasMore": {
"type": "boolean",
"description": "True when another result page is available."
},
"nextCursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Opaque cursor for the next result page, or null when no later page exists."
},
"slideshows": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"title",
"prompt",
"slideshowType",
"status",
"settings",
"slides",
"latestVideo",
"videoExportReady",
"exportHash",
"createdAt",
"updatedAt"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "ID of the ReelsFarm item."
},
"title": {
"type": "string",
"description": "Human-readable title for the ReelsFarm content item."
},
"prompt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Natural-language instructions for the requested content generation."
},
"slides": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"avatarId",
"imageUrl",
"compositedImageUrl",
"order",
"aspectRatio",
"timeLengthMs",
"imageOpacity",
"textItems",
"design"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "ID of the ReelsFarm item."
},
"order": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-based position."
},
"design": {
"anyOf": [
{
"oneOf": [
{
"type": "object",
"required": [
"design",
"name",
"handle",
"text",
"time",
"views",
"replies",
"reposts",
"likes",
"saves"
],
"properties": {
"name": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Display name of the person posting. Invented and believable; never a real public figure."
},
"seed": {
"type": "integer",
"maximum": 4294967295,
"minimum": 0,
"description": "Fixes the hand-drawn parts (torn paper edges, tilts) so every export draws the same slide. Keep the value a slide already has; omit it on a new slide."
},
"text": {
"type": "string",
"maxLength": 280,
"minLength": 1,
"description": "The post, up to 280 characters; usually 80 to 200. Lowercase and short lines read as real."
},
"time": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Time and date line, such as 9:41 PM · Oct 21, 2026."
},
"likes": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Likes count as shown on the post, such as 482, 3.1K or 1.2M."
},
"reply": {
"type": "object",
"required": [
"name",
"handle",
"text"
],
"properties": {
"name": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Display name of the person replying."
},
"text": {
"type": "string",
"maxLength": 140,
"minLength": 1,
"description": "The reply, usually the question the next slide answers."
},
"handle": {
"type": "string",
"maxLength": 30,
"minLength": 1,
"description": "Handle of the person replying, starting with @."
}
},
"description": "A reply card under the post. Use on one or two slides only.",
"additionalProperties": false
},
"saves": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Bookmarks count as shown on the post, such as 482, 3.1K or 1.2M."
},
"views": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Views count as shown on the post, such as 482, 3.1K or 1.2M."
},
"design": {
"type": "string",
"const": "tweet",
"description": "A post on X: a white card over the slide photo, blurred."
},
"handle": {
"type": "string",
"maxLength": 30,
"minLength": 1,
"description": "Handle starting with @, used on every slide of the slideshow."
},
"replies": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Replies count as shown on the post, such as 482, 3.1K or 1.2M."
},
"reposts": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Reposts count as shown on the post, such as 482, 3.1K or 1.2M."
},
"verified": {
"type": "boolean",
"description": "Shows a blue tick after the name. Defaults to true."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"design",
"contact",
"messages"
],
"properties": {
"seed": {
"type": "integer",
"maximum": 4294967295,
"minimum": 0,
"description": "Fixes the hand-drawn parts (torn paper edges, tilts) so every export draws the same slide. Keep the value a slide already has; omit it on a new slide."
},
"clock": {
"type": "string",
"maxLength": 8,
"description": "The status bar clock, such as 9:43. Omit it to use 9:41."
},
"draft": {
"type": "string",
"maxLength": 200,
"description": "A reply being typed in the input bar. It opens the keyboard. Usually on the last slide only."
},
"theme": {
"enum": [
"dark",
"light"
],
"type": "string",
"description": "Dark or light mode. Defaults to dark. Same on every slide."
},
"design": {
"type": "string",
"const": "imessage",
"description": "A screenshot of a Messages chat. The slide photo is not shown."
},
"status": {
"type": "string",
"maxLength": 30,
"description": "Shown under your last blue bubble, such as Delivered or Read 9:42 PM. Usually on the last slide only."
},
"unread": {
"type": "string",
"maxLength": 6,
"description": "The unread count next to the back arrow, such as 12."
},
"contact": {
"type": "string",
"maxLength": 30,
"minLength": 1,
"description": "The contact as saved in the phone, such as mom, Sophie or bestie. Same on every slide."
},
"messages": {
"type": "array",
"items": {
"type": "object",
"required": [
"from",
"text"
],
"properties": {
"from": {
"enum": [
"them",
"me"
],
"type": "string",
"description": "them: a grey bubble on the left. me: a blue bubble on the right."
},
"text": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "The message text, short like real texting."
},
"time": {
"type": "string",
"maxLength": 30,
"description": "A time line shown above this message, such as Today 9:41 PM. Usually only on the first message."
},
"reaction": {
"enum": [
"heart",
"like",
"dislike",
"haha",
"emphasis",
"question"
],
"type": "string",
"description": "A tapback on the bubble from the other person: heart, like, dislike, haha, emphasis (!!) or question. Never another emoji."
}
},
"additionalProperties": false
},
"maxItems": 14,
"minItems": 1,
"description": "The conversation so far, oldest first. One chat runs through an iMessage slideshow: each slide repeats the earlier messages and adds the next one to four."
},
"suggestions": {
"type": "array",
"items": {
"type": "string",
"maxLength": 20,
"minLength": 1
},
"maxItems": 3,
"description": "Up to three words above the keyboard."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"design",
"title",
"accent",
"points"
],
"properties": {
"seed": {
"type": "integer",
"maximum": 4294967295,
"minimum": 0,
"description": "Fixes the hand-drawn parts (torn paper edges, tilts) so every export draws the same slide. Keep the value a slide already has; omit it on a new slide."
},
"title": {
"type": "string",
"maxLength": 60,
"minLength": 1,
"description": "Bold title, 2 to 4 words, such as 3 rules for."
},
"accent": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Italic accent line under the title, 2 to 3 words naming the subject, such as slow mornings."
},
"design": {
"type": "string",
"const": "notebook",
"description": "A torn page of grid paper over the slide photo, with the photo taped on when there is room."
},
"points": {
"type": "array",
"items": {
"type": "string",
"maxLength": 90,
"minLength": 1
},
"maxItems": 5,
"minItems": 1,
"description": "One to five numbered points; three fit best."
},
"circled": {
"type": "string",
"maxLength": 30,
"description": "2 to 4 words circled by hand, such as try it for 7 days."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"design",
"masthead",
"issue",
"coverLines",
"headline"
],
"properties": {
"seed": {
"type": "integer",
"maximum": 4294967295,
"minimum": 0,
"description": "Fixes the hand-drawn parts (torn paper edges, tilts) so every export draws the same slide. Keep the value a slide already has; omit it on a new slide."
},
"issue": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "Issue line under the masthead, such as The skin issue · October 2026."
},
"design": {
"type": "string",
"const": "magazine",
"description": "A magazine cover over the slide photo. Use it on the first slide only, with a photo of a person."
},
"headline": {
"type": "string",
"maxLength": 60,
"minLength": 1,
"description": "The cover story at the bottom, 3 to 6 words."
},
"masthead": {
"type": "string",
"maxLength": 12,
"minLength": 1,
"description": "One word of 3 to 6 letters across the top, such as GLOW."
},
"coverLines": {
"type": "array",
"items": {
"type": "object",
"required": [
"big",
"small"
],
"properties": {
"big": {
"type": "string",
"maxLength": 24,
"minLength": 1,
"description": "1 to 3 words or a number in bold capitals."
},
"small": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "2 to 6 words in italics under it."
}
},
"additionalProperties": false
},
"maxItems": 4,
"description": "Two to four cover lines down the sides."
},
"headlineSub": {
"type": "string",
"maxLength": 50,
"description": "2 to 6 words under the headline."
}
},
"additionalProperties": false
}
],
"description": "A designed look drawn instead of the photo and text items: tweet, imessage, notebook or magazine. Text items on a designed slide are not drawn."
},
{
"type": "null"
}
],
"description": "The slide's designed look, drawn instead of the photo and text items; null for a classic slide."
},
"avatarId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "UUID of the ReelsFarm avatar. Omit it when the image URL identifies the source."
},
"imageUrl": {
"type": "string",
"description": "Public HTTPS URL or authorized ReelsFarm URL of the source image."
},
"textItems": {
"type": "array",
"items": {},
"description": "Ordered text items drawn on this slide. One is usual; use up to six."
},
"aspectRatio": {
"enum": [
"4:5",
"9:16",
"3:4",
"1:1"
],
"type": "string",
"description": "Width-to-height ratio."
},
"imageOpacity": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Image opacity percentage from 0 through 100."
},
"timeLengthMs": {
"type": "integer",
"maximum": 5000,
"minimum": 1000,
"description": "Slide display duration in milliseconds, from 1000 through 5000."
},
"compositedImageUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Authorized ReelsFarm URL of the rendered slide image. Omit it when the server must render the slide."
}
},
"additionalProperties": false
},
"description": "Ordered slideshow slide definitions. Follow the nested slide schema and array limits."
},
"status": {
"enum": [
"DRAFT",
"EXPORTED"
],
"type": "string",
"description": "ReelsFarm lifecycle status used for the requested resource or filter."
},
"settings": {
"type": "object",
"properties": {
"music": {
"anyOf": [
{
"type": "object",
"required": [
"source",
"audioUrl"
],
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"description": "Display name."
},
"source": {
"enum": [
"template",
"upload"
],
"type": "string",
"description": "Where this item comes from."
},
"audioUrl": {
"type": "string",
"minLength": 1,
"description": "Public HTTPS URL or authorized ReelsFarm URL of the source audio track."
},
"coverUrl": {
"type": "string",
"description": "Authorized ReelsFarm asset URL of the selected music cover image."
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Owned or template music configuration used by the slideshow."
},
"duration": {
"type": "integer",
"maximum": 5000,
"minimum": 1000,
"description": "Slideshow display duration in milliseconds."
},
"aspectRatio": {
"enum": [
"4:5",
"9:16",
"3:4",
"1:1"
],
"type": "string",
"description": "Width-to-height ratio."
},
"backgroundColor": {
"type": "string",
"maxLength": 50,
"description": "Slideshow background color as a CSS color value."
},
"revisionHistory": {
"type": "array",
"items": {
"type": "object"
},
"maxItems": 20,
"description": "Up to 20 saved text revisions with their slide states. update_slideshow keeps them when this is left out."
},
"transitionStyle": {
"enum": [
"hard",
"fade",
"slide"
],
"type": "string",
"description": "Visual transition style used between slideshow images."
},
"videoTransition": {
"enum": [
"cut",
"fade"
],
"type": "string",
"description": "Transition used when the slideshow is exported as a video."
},
"activeRevisionId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Identifier of the slideshow revision currently shown in the editor."
}
},
"description": "Structured slideshow appearance and playback settings.",
"additionalProperties": false
},
"createdAt": {
"type": "string",
"description": "ISO 8601 date and time when this item or revision was created."
},
"updatedAt": {
"type": "string",
"description": "updated at used by this ReelsFarm operation. Follow the type and validation limits in the schema."
},
"exportHash": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Hash of the slideshow definition used for the current video export."
},
"latestVideo": {
"anyOf": [
{
"type": "object",
"required": [
"id",
"title",
"videoUrl",
"thumbnailUrl",
"duration",
"sourceType",
"sourceSlideshowId",
"createdAt"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"duration": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"videoUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"createdAt": {
"type": "string"
},
"sourceType": {
"enum": [
"UGC_COMPOSITION",
"SLIDESHOW",
"GENERATED_HOOK",
"AI_CLONE"
],
"type": "string"
},
"thumbnailUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"sourceSlideshowId": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Current reusable slideshow video export, or null when no current export exists."
},
"slideshowType": {
"anyOf": [
{
"enum": [
"EDUCATIONAL",
"PROMOTIONAL",
"STORYTELLING",
"LIFESTYLE",
"REVIEW"
],
"type": "string",
"description": "Content strategy used to generate slideshow text."
},
{
"type": "null"
}
],
"description": "Content strategy used to generate or revise slideshow text."
},
"videoExportReady": {
"type": "boolean",
"description": "True when the slideshow has a current reusable video export."
}
},
"additionalProperties": false
},
"description": "Canonical slideshows returned by this result page."
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description70/100
Create a draft slideshow from existing image asset URLs and slide settings. A slide with a design draws that Look (tweet, imessage, notebook, magazine) instead of its text items; pass designs from reelsfarm_get_slideshow_text_job_status unchanged. An iMessage slide draws no photo, so it needs no imageUrl.
Explain mutations, irreversible effects, or prerequisites that matter before calling this tool.
Inputs85/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
title
Human-readable title for the ReelsFarm content item.
Clear enough to supply this argument.
prompt
Natural-language instructions for the requested content generation.
Clear enough to supply this argument.
slideshowType
Content strategy used to generate or revise slideshow text.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
settings › duration
Slideshow display duration in milliseconds.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
settings › backgroundColor
Slideshow background color as a CSS color value.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
settings › transitionStyle
Visual transition style used between slideshow images.
Clear enough to supply this argument.
settings › videoTransition
Transition used when the slideshow is exported as a video.
Clear enough to supply this argument.
settings › aspectRatio
Width-to-height ratio.
Explain the meaning of this value, not just its name.
settings › music › anyOf › 0 › source
Where this item comes from.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
settings › music › anyOf › 0 › audioUrl
Public HTTPS URL or authorized ReelsFarm URL of the source audio track.
Clear enough to supply this argument.
settings › music › anyOf › 0 › name
Display name.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
settings › music › anyOf › 0 › coverUrl
Authorized ReelsFarm asset URL of the selected music cover image.
Clear enough to supply this argument.
settings › revisionHistory
Up to 20 saved text revisions with their slide states. update_slideshow keeps them when this is left out.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
settings › activeRevisionId
Identifier of the slideshow revision currently shown in the editor.
Explain what happens when this optional value is omitted.
slides › items › id
ID of the ReelsFarm item.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
slides › items › avatarId
UUID of the ReelsFarm avatar. Omit it when the image URL identifies the source.
Clear enough to supply this argument.
slides › items › imageUrl
The slide photo, an authorized ReelsFarm asset URL. Required, except on an iMessage slide: it draws no photo, so leave imageUrl out there.
Clear enough to supply this argument.
slides › items › compositedImageUrl
Authorized ReelsFarm URL of the rendered slide image. Omit it when the server must render the slide.
Clear enough to supply this argument.
slides › items › order
Zero-based position.
Clear enough to supply this argument.
slides › items › aspectRatio
Width-to-height ratio.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
slides › items › timeLengthMs
Slide display duration in milliseconds, from 1000 through 5000.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
slides › items › textItems › items › id
ID of the ReelsFarm item.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
slides › items › textItems › items › text
Text rendered on the slideshow or used by the content workflow.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
slides › items › textItems › items › fontSize
CSS pixel font size used to render the slideshow text.
TikTok text font, such as classic, elegance, retro, typewriter, neon or handwriting. Omit it for Classic.
Clear enough to supply this argument.
slides › items › textItems › items › textEffect
TikTok text mode: none, outline, background or translucent. When set, it and textColor replace textStyle.
Clear enough to supply this argument.
slides › items › textItems › items › textColor
Hex colour such as #ea403f: the text colour for none, the outline colour for outline, the box colour otherwise.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
slides › items › textItems › items › lineWidthEm
Longest line in em (multiples of the font size), from 4 to 40. Omit it: the width then follows the text. Set it only to copy a reference slideshow.
Clear enough to supply this argument.
slides › items › textItems › items › textX
Optional exact position: the horizontal centre of the text column, from 0 (left edge) to 1 (right edge). Only used with textY; 0.5 when omitted.
Clear enough to supply this argument.
slides › items › textItems › items › textY
Optional exact position: the vertical centre of the text column, from 0 (top) to 1 (bottom). When set it replaces textPosition. Items with the same textX and textY stack in one column.
Align the output schema with the tool’s documented result.
View output schema
{
"type": "object",
"properties": {
"dryRun": {
"type": "boolean",
"description": "Validate only: nothing is saved, charged or queued."
},
"summary": {
"type": "string",
"description": "Short explanation of the changes made by a slideshow revision."
},
"executed": {
"type": "boolean",
"description": "True when ReelsFarm executed the action instead of preparing a confirmation."
},
"nextStep": {
"type": "string",
"description": "Short instruction for continuing the prepared workflow."
},
"provider": {
"type": "string",
"const": "reelsfarm",
"description": "Service that executed or prepared this action. A value of reelsfarm is required before attributing a result to ReelsFarm."
},
"toolName": {
"type": "string",
"description": "Exact public MCP tool associated with this prepared action or result."
},
"expiresAt": {
"type": "string",
"description": "ISO 8601 date and time when this prepared action expires."
},
"operation": {
"type": "object",
"description": "Durable MCP operation state and result data.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"slideshow": {
"type": "object",
"required": [
"id",
"title",
"prompt",
"slideshowType",
"status",
"settings",
"slides",
"latestVideo",
"videoExportReady",
"exportHash",
"createdAt",
"updatedAt"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "ID of the ReelsFarm item."
},
"title": {
"type": "string",
"description": "Human-readable title for the ReelsFarm content item."
},
"prompt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Natural-language instructions for the requested content generation."
},
"slides": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"avatarId",
"imageUrl",
"compositedImageUrl",
"order",
"aspectRatio",
"timeLengthMs",
"imageOpacity",
"textItems",
"design"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "ID of the ReelsFarm item."
},
"order": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-based position."
},
"design": {
"anyOf": [
{
"oneOf": [
{
"type": "object",
"required": [
"design",
"name",
"handle",
"text",
"time",
"views",
"replies",
"reposts",
"likes",
"saves"
],
"properties": {
"name": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Display name of the person posting. Invented and believable; never a real public figure."
},
"seed": {
"type": "integer",
"maximum": 4294967295,
"minimum": 0,
"description": "Fixes the hand-drawn parts (torn paper edges, tilts) so every export draws the same slide. Keep the value a slide already has; omit it on a new slide."
},
"text": {
"type": "string",
"maxLength": 280,
"minLength": 1,
"description": "The post, up to 280 characters; usually 80 to 200. Lowercase and short lines read as real."
},
"time": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Time and date line, such as 9:41 PM · Oct 21, 2026."
},
"likes": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Likes count as shown on the post, such as 482, 3.1K or 1.2M."
},
"reply": {
"type": "object",
"required": [
"name",
"handle",
"text"
],
"properties": {
"name": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Display name of the person replying."
},
"text": {
"type": "string",
"maxLength": 140,
"minLength": 1,
"description": "The reply, usually the question the next slide answers."
},
"handle": {
"type": "string",
"maxLength": 30,
"minLength": 1,
"description": "Handle of the person replying, starting with @."
}
},
"description": "A reply card under the post. Use on one or two slides only.",
"additionalProperties": false
},
"saves": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Bookmarks count as shown on the post, such as 482, 3.1K or 1.2M."
},
"views": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Views count as shown on the post, such as 482, 3.1K or 1.2M."
},
"design": {
"type": "string",
"const": "tweet",
"description": "A post on X: a white card over the slide photo, blurred."
},
"handle": {
"type": "string",
"maxLength": 30,
"minLength": 1,
"description": "Handle starting with @, used on every slide of the slideshow."
},
"replies": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Replies count as shown on the post, such as 482, 3.1K or 1.2M."
},
"reposts": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Reposts count as shown on the post, such as 482, 3.1K or 1.2M."
},
"verified": {
"type": "boolean",
"description": "Shows a blue tick after the name. Defaults to true."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"design",
"contact",
"messages"
],
"properties": {
"seed": {
"type": "integer",
"maximum": 4294967295,
"minimum": 0,
"description": "Fixes the hand-drawn parts (torn paper edges, tilts) so every export draws the same slide. Keep the value a slide already has; omit it on a new slide."
},
"clock": {
"type": "string",
"maxLength": 8,
"description": "The status bar clock, such as 9:43. Omit it to use 9:41."
},
"draft": {
"type": "string",
"maxLength": 200,
"description": "A reply being typed in the input bar. It opens the keyboard. Usually on the last slide only."
},
"theme": {
"enum": [
"dark",
"light"
],
"type": "string",
"description": "Dark or light mode. Defaults to dark. Same on every slide."
},
"design": {
"type": "string",
"const": "imessage",
"description": "A screenshot of a Messages chat. The slide photo is not shown."
},
"status": {
"type": "string",
"maxLength": 30,
"description": "Shown under your last blue bubble, such as Delivered or Read 9:42 PM. Usually on the last slide only."
},
"unread": {
"type": "string",
"maxLength": 6,
"description": "The unread count next to the back arrow, such as 12."
},
"contact": {
"type": "string",
"maxLength": 30,
"minLength": 1,
"description": "The contact as saved in the phone, such as mom, Sophie or bestie. Same on every slide."
},
"messages": {
"type": "array",
"items": {
"type": "object",
"required": [
"from",
"text"
],
"properties": {
"from": {
"enum": [
"them",
"me"
],
"type": "string",
"description": "them: a grey bubble on the left. me: a blue bubble on the right."
},
"text": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "The message text, short like real texting."
},
"time": {
"type": "string",
"maxLength": 30,
"description": "A time line shown above this message, such as Today 9:41 PM. Usually only on the first message."
},
"reaction": {
"enum": [
"heart",
"like",
"dislike",
"haha",
"emphasis",
"question"
],
"type": "string",
"description": "A tapback on the bubble from the other person: heart, like, dislike, haha, emphasis (!!) or question. Never another emoji."
}
},
"additionalProperties": false
},
"maxItems": 14,
"minItems": 1,
"description": "The conversation so far, oldest first. One chat runs through an iMessage slideshow: each slide repeats the earlier messages and adds the next one to four."
},
"suggestions": {
"type": "array",
"items": {
"type": "string",
"maxLength": 20,
"minLength": 1
},
"maxItems": 3,
"description": "Up to three words above the keyboard."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"design",
"title",
"accent",
"points"
],
"properties": {
"seed": {
"type": "integer",
"maximum": 4294967295,
"minimum": 0,
"description": "Fixes the hand-drawn parts (torn paper edges, tilts) so every export draws the same slide. Keep the value a slide already has; omit it on a new slide."
},
"title": {
"type": "string",
"maxLength": 60,
"minLength": 1,
"description": "Bold title, 2 to 4 words, such as 3 rules for."
},
"accent": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Italic accent line under the title, 2 to 3 words naming the subject, such as slow mornings."
},
"design": {
"type": "string",
"const": "notebook",
"description": "A torn page of grid paper over the slide photo, with the photo taped on when there is room."
},
"points": {
"type": "array",
"items": {
"type": "string",
"maxLength": 90,
"minLength": 1
},
"maxItems": 5,
"minItems": 1,
"description": "One to five numbered points; three fit best."
},
"circled": {
"type": "string",
"maxLength": 30,
"description": "2 to 4 words circled by hand, such as try it for 7 days."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"design",
"masthead",
"issue",
"coverLines",
"headline"
],
"properties": {
"seed": {
"type": "integer",
"maximum": 4294967295,
"minimum": 0,
"description": "Fixes the hand-drawn parts (torn paper edges, tilts) so every export draws the same slide. Keep the value a slide already has; omit it on a new slide."
},
"issue": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "Issue line under the masthead, such as The skin issue · October 2026."
},
"design": {
"type": "string",
"const": "magazine",
"description": "A magazine cover over the slide photo. Use it on the first slide only, with a photo of a person."
},
"headline": {
"type": "string",
"maxLength": 60,
"minLength": 1,
"description": "The cover story at the bottom, 3 to 6 words."
},
"masthead": {
"type": "string",
"maxLength": 12,
"minLength": 1,
"description": "One word of 3 to 6 letters across the top, such as GLOW."
},
"coverLines": {
"type": "array",
"items": {
"type": "object",
"required": [
"big",
"small"
],
"properties": {
"big": {
"type": "string",
"maxLength": 24,
"minLength": 1,
"description": "1 to 3 words or a number in bold capitals."
},
"small": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "2 to 6 words in italics under it."
}
},
"additionalProperties": false
},
"maxItems": 4,
"description": "Two to four cover lines down the sides."
},
"headlineSub": {
"type": "string",
"maxLength": 50,
"description": "2 to 6 words under the headline."
}
},
"additionalProperties": false
}
],
"description": "A designed look drawn instead of the photo and text items: tweet, imessage, notebook or magazine. Text items on a designed slide are not drawn."
},
{
"type": "null"
}
],
"description": "The slide's designed look, drawn instead of the photo and text items; null for a classic slide."
},
"avatarId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "UUID of the ReelsFarm avatar. Omit it when the image URL identifies the source."
},
"imageUrl": {
"type": "string",
"description": "Public HTTPS URL or authorized ReelsFarm URL of the source image."
},
"textItems": {
"type": "array",
"items": {},
"description": "Ordered text items drawn on this slide. One is usual; use up to six."
},
"aspectRatio": {
"enum": [
"4:5",
"9:16",
"3:4",
"1:1"
],
"type": "string",
"description": "Width-to-height ratio."
},
"imageOpacity": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Image opacity percentage from 0 through 100."
},
"timeLengthMs": {
"type": "integer",
"maximum": 5000,
"minimum": 1000,
"description": "Slide display duration in milliseconds, from 1000 through 5000."
},
"compositedImageUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Authorized ReelsFarm URL of the rendered slide image. Omit it when the server must render the slide."
}
},
"additionalProperties": false
},
"description": "Ordered slideshow slide definitions. Follow the nested slide schema and array limits."
},
"status": {
"enum": [
"DRAFT",
"EXPORTED"
],
"type": "string",
"description": "ReelsFarm lifecycle status used for the requested resource or filter."
},
"settings": {
"type": "object",
"properties": {
"music": {
"anyOf": [
{
"type": "object",
"required": [
"source",
"audioUrl"
],
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"description": "Display name."
},
"source": {
"enum": [
"template",
"upload"
],
"type": "string",
"description": "Where this item comes from."
},
"audioUrl": {
"type": "string",
"minLength": 1,
"description": "Public HTTPS URL or authorized ReelsFarm URL of the source audio track."
},
"coverUrl": {
"type": "string",
"description": "Authorized ReelsFarm asset URL of the selected music cover image."
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Owned or template music configuration used by the slideshow."
},
"duration": {
"type": "integer",
"maximum": 5000,
"minimum": 1000,
"description": "Slideshow display duration in milliseconds."
},
"aspectRatio": {
"enum": [
"4:5",
"9:16",
"3:4",
"1:1"
],
"type": "string",
"description": "Width-to-height ratio."
},
"backgroundColor": {
"type": "string",
"maxLength": 50,
"description": "Slideshow background color as a CSS color value."
},
"revisionHistory": {
"type": "array",
"items": {
"type": "object"
},
"maxItems": 20,
"description": "Up to 20 saved text revisions with their slide states. update_slideshow keeps them when this is left out."
},
"transitionStyle": {
"enum": [
"hard",
"fade",
"slide"
],
"type": "string",
"description": "Visual transition style used between slideshow images."
},
"videoTransition": {
"enum": [
"cut",
"fade"
],
"type": "string",
"description": "Transition used when the slideshow is exported as a video."
},
"activeRevisionId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Identifier of the slideshow revision currently shown in the editor."
}
},
"description": "Structured slideshow appearance and playback settings.",
"additionalProperties": false
},
"createdAt": {
"type": "string",
"description": "ISO 8601 date and time when this item or revision was created."
},
"updatedAt": {
"type": "string",
"description": "updated at used by this ReelsFarm operation. Follow the type and validation limits in the schema."
},
"exportHash": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Hash of the slideshow definition used for the current video export."
},
"latestVideo": {
"anyOf": [
{
"type": "object",
"required": [
"id",
"title",
"videoUrl",
"thumbnailUrl",
"duration",
"sourceType",
"sourceSlideshowId",
"createdAt"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"duration": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"videoUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"createdAt": {
"type": "string"
},
"sourceType": {
"enum": [
"UGC_COMPOSITION",
"SLIDESHOW",
"GENERATED_HOOK",
"AI_CLONE"
],
"type": "string"
},
"thumbnailUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"sourceSlideshowId": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Current reusable slideshow video export, or null when no current export exists."
},
"slideshowType": {
"anyOf": [
{
"enum": [
"EDUCATIONAL",
"PROMOTIONAL",
"STORYTELLING",
"LIFESTYLE",
"REVIEW"
],
"type": "string",
"description": "Content strategy used to generate slideshow text."
},
{
"type": "null"
}
],
"description": "Content strategy used to generate or revise slideshow text."
},
"videoExportReady": {
"type": "boolean",
"description": "True when the slideshow has a current reusable video export."
}
},
"description": "Canonical slideshow with settings, ordered slides, and current export state.",
"additionalProperties": false
},
"actionType": {
"type": "string",
"description": "Stable ReelsFarm action category used for policy and operation tracking."
},
"policyCode": {
"type": "string",
"description": "Stable code that explains the server authorization decision."
},
"sourceTool": {
"type": "string",
"description": "Public ReelsFarm MCP tool responsible for this execution state."
},
"operationId": {
"type": "string",
"description": "UUID of the ReelsFarm MCP operation to inspect."
},
"assetCreated": {
"type": "boolean",
"description": "True only when this response contains a completed media asset created by ReelsFarm."
},
"resultMessage": {
"type": "string",
"description": "Human-readable rule for accurately presenting this ReelsFarm result."
},
"confirmationId": {
"type": "string",
"description": "Short-lived ReelsFarm confirmation identifier returned by a prepared action."
},
"connectionMode": {
"enum": [
"REVIEW",
"CREATOR",
"AUTOPILOT"
],
"type": "string",
"description": "Effective Review, Creator, or Autopilot mode for this action."
},
"creditEstimate": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Estimated credit cost, or null when the cost cannot be fixed in advance."
},
"executionState": {
"enum": [
"NOT_STARTED",
"PREPARED",
"ENQUEUED",
"PROCESSING",
"COMPLETED",
"FAILED"
],
"type": "string",
"description": "Authoritative ReelsFarm execution state. Only COMPLETED can support a completion claim."
},
"policyDecision": {
"enum": [
"ALLOW",
"REQUIRE_CONFIRMATION",
"DENY",
"REQUIRE_DASHBOARD"
],
"type": "string",
"description": "Server authorization decision applied to this action."
},
"confirmationTool": {
"type": "string",
"description": "The public tool that confirms only this prepared operation after explicit user approval."
}
},
"additionalProperties": false
}
Original tool metadata
{
"name": "reelsfarm_create_slideshow",
"title": "Create Slideshow",
"description": "Create a draft slideshow from existing image asset URLs and slide settings. A slide with a design draws that Look (tweet, imessage, notebook, magazine) instead of its text items; pass designs from reelsfarm_get_slideshow_text_job_status unchanged. An iMessage slide draws no photo, so it needs no imageUrl.",
"inputSchema": {
"type": "object",
"required": [
"slides"
],
"properties": {
"title": {
"type": "string",
"description": "Human-readable title for the ReelsFarm content item."
},
"dryRun": {
"type": "boolean",
"description": "Validate only: nothing is saved, charged or queued."
},
"prompt": {
"type": "string",
"description": "Natural-language instructions for the requested content generation."
},
"slides": {
"type": "array",
"items": {
"type": "object",
"required": [
"order"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "ID of the ReelsFarm item."
},
"order": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-based position."
},
"design": {
"anyOf": [
{
"oneOf": [
{
"type": "object",
"required": [
"design",
"name",
"handle",
"text",
"time",
"views",
"replies",
"reposts",
"likes",
"saves"
],
"properties": {
"name": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Display name of the person posting. Invented and believable; never a real public figure."
},
"seed": {
"type": "integer",
"maximum": 4294967295,
"minimum": 0,
"description": "Fixes the hand-drawn parts (torn paper edges, tilts) so every export draws the same slide. Keep the value a slide already has; omit it on a new slide."
},
"text": {
"type": "string",
"maxLength": 280,
"minLength": 1,
"description": "The post, up to 280 characters; usually 80 to 200. Lowercase and short lines read as real."
},
"time": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Time and date line, such as 9:41 PM · Oct 21, 2026."
},
"likes": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Likes count as shown on the post, such as 482, 3.1K or 1.2M."
},
"reply": {
"type": "object",
"required": [
"name",
"handle",
"text"
],
"properties": {
"name": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Display name of the person replying."
},
"text": {
"type": "string",
"maxLength": 140,
"minLength": 1,
"description": "The reply, usually the question the next slide answers."
},
"handle": {
"type": "string",
"maxLength": 30,
"minLength": 1,
"description": "Handle of the person replying, starting with @."
}
},
"description": "A reply card under the post. Use on one or two slides only.",
"additionalProperties": false
},
"saves": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Bookmarks count as shown on the post, such as 482, 3.1K or 1.2M."
},
"views": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Views count as shown on the post, such as 482, 3.1K or 1.2M."
},
"design": {
"type": "string",
"const": "tweet",
"description": "A post on X: a white card over the slide photo, blurred."
},
"handle": {
"type": "string",
"maxLength": 30,
"minLength": 1,
"description": "Handle starting with @, used on every slide of the slideshow."
},
"replies": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Replies count as shown on the post, such as 482, 3.1K or 1.2M."
},
"reposts": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Reposts count as shown on the post, such as 482, 3.1K or 1.2M."
},
"verified": {
"type": "boolean",
"description": "Shows a blue tick after the name. Defaults to true."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"design",
"contact",
"messages"
],
"properties": {
"seed": {
"type": "integer",
"maximum": 4294967295,
"minimum": 0,
"description": "Fixes the hand-drawn parts (torn paper edges, tilts) so every export draws the same slide. Keep the value a slide already has; omit it on a new slide."
},
"clock": {
"type": "string",
"maxLength": 8,
"description": "The status bar clock, such as 9:43. Omit it to use 9:41."
},
"draft": {
"type": "string",
"maxLength": 200,
"description": "A reply being typed in the input bar. It opens the keyboard. Usually on the last slide only."
},
"theme": {
"enum": [
"dark",
"light"
],
"type": "string",
"description": "Dark or light mode. Defaults to dark. Same on every slide."
},
"design": {
"type": "string",
"const": "imessage",
"description": "A screenshot of a Messages chat. The slide photo is not shown."
},
"status": {
"type": "string",
"maxLength": 30,
"description": "Shown under your last blue bubble, such as Delivered or Read 9:42 PM. Usually on the last slide only."
},
"unread": {
"type": "string",
"maxLength": 6,
"description": "The unread count next to the back arrow, such as 12."
},
"contact": {
"type": "string",
"maxLength": 30,
"minLength": 1,
"description": "The contact as saved in the phone, such as mom, Sophie or bestie. Same on every slide."
},
"messages": {
"type": "array",
"items": {
"type": "object",
"required": [
"from",
"text"
],
"properties": {
"from": {
"enum": [
"them",
"me"
],
"type": "string",
"description": "them: a grey bubble on the left. me: a blue bubble on the right."
},
"text": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "The message text, short like real texting."
},
"time": {
"type": "string",
"maxLength": 30,
"description": "A time line shown above this message, such as Today 9:41 PM. Usually only on the first message."
},
"reaction": {
"enum": [
"heart",
"like",
"dislike",
"haha",
"emphasis",
"question"
],
"type": "string",
"description": "A tapback on the bubble from the other person: heart, like, dislike, haha, emphasis (!!) or question. Never another emoji."
}
},
"additionalProperties": false
},
"maxItems": 14,
"minItems": 1,
"description": "The conversation so far, oldest first. One chat runs through an iMessage slideshow: each slide repeats the earlier messages and adds the next one to four."
},
"suggestions": {
"type": "array",
"items": {
"type": "string",
"maxLength": 20,
"minLength": 1
},
"maxItems": 3,
"description": "Up to three words above the keyboard."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"design",
"title",
"accent",
"points"
],
"properties": {
"seed": {
"type": "integer",
"maximum": 4294967295,
"minimum": 0,
"description": "Fixes the hand-drawn parts (torn paper edges, tilts) so every export draws the same slide. Keep the value a slide already has; omit it on a new slide."
},
"title": {
"type": "string",
"maxLength": 60,
"minLength": 1,
"description": "Bold title, 2 to 4 words, such as 3 rules for."
},
"accent": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Italic accent line under the title, 2 to 3 words naming the subject, such as slow mornings."
},
"design": {
"type": "string",
"const": "notebook",
"description": "A torn page of grid paper over the slide photo, with the photo taped on when there is room."
},
"points": {
"type": "array",
"items": {
"type": "string",
"maxLength": 90,
"minLength": 1
},
"maxItems": 5,
"minItems": 1,
"description": "One to five numbered points; three fit best."
},
"circled": {
"type": "string",
"maxLength": 30,
"description": "2 to 4 words circled by hand, such as try it for 7 days."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"design",
"masthead",
"issue",
"coverLines",
"headline"
],
"properties": {
"seed": {
"type": "integer",
"maximum": 4294967295,
"minimum": 0,
"description": "Fixes the hand-drawn parts (torn paper edges, tilts) so every export draws the same slide. Keep the value a slide already has; omit it on a new slide."
},
"issue": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "Issue line under the masthead, such as The skin issue · October 2026."
},
"design": {
"type": "string",
"const": "magazine",
"description": "A magazine cover over the slide photo. Use it on the first slide only, with a photo of a person."
},
"headline": {
"type": "string",
"maxLength": 60,
"minLength": 1,
"description": "The cover story at the bottom, 3 to 6 words."
},
"masthead": {
"type": "string",
"maxLength": 12,
"minLength": 1,
"description": "One word of 3 to 6 letters across the top, such as GLOW."
},
"coverLines": {
"type": "array",
"items": {
"type": "object",
"required": [
"big",
"small"
],
"properties": {
"big": {
"type": "string",
"maxLength": 24,
"minLength": 1,
"description": "1 to 3 words or a number in bold capitals."
},
"small": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "2 to 6 words in italics under it."
}
},
"additionalProperties": false
},
"maxItems": 4,
"description": "Two to four cover lines down the sides."
},
"headlineSub": {
"type": "string",
"maxLength": 50,
"description": "2 to 6 words under the headline."
}
},
"additionalProperties": false
}
],
"description": "A designed look drawn instead of the photo and text items: tweet, imessage, notebook or magazine. Text items on a designed slide are not drawn."
},
{
"type": "null"
}
],
"description": "A designed look drawn instead of the text items. tweet, notebook and magazine draw over the slide photo, so they still need imageUrl; imessage shows no photo. null makes a classic slide. Omit it to keep the slide's saved design."
},
"avatarId": {
"type": "string",
"format": "uuid",
"description": "UUID of the ReelsFarm avatar. Omit it when the image URL identifies the source."
},
"imageUrl": {
"type": "string",
"description": "The slide photo, an authorized ReelsFarm asset URL. Required, except on an iMessage slide: it draws no photo, so leave imageUrl out there."
},
"textItems": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"text",
"fontSize",
"textSize",
"textStyle",
"textPosition"
],
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "ID of the ReelsFarm item."
},
"text": {
"type": "string",
"maxLength": 5000,
"description": "Text rendered on the slideshow or used by the content workflow."
},
"textX": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Optional exact position: the horizontal centre of the text column, from 0 (left edge) to 1 (right edge). Only used with textY; 0.5 when omitted."
},
"textY": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Optional exact position: the vertical centre of the text column, from 0 (top) to 1 (bottom). When set it replaces textPosition. Items with the same textX and textY stack in one column."
},
"fontSize": {
"type": "string",
"minLength": 1,
"description": "CSS pixel font size used to render the slideshow text."
},
"textFont": {
"enum": [
"classic",
"elegance",
"retro",
"vintage",
"typewriter",
"comic",
"bold",
"serif",
"neon",
"handwriting",
"freehand",
"heavy",
"luxury",
"arcade",
"curiouscat",
"oblique",
"serene",
"telegraph",
"paintstroke",
"slab",
"phantom",
"postcard",
"script",
"technic"
],
"type": "string",
"description": "TikTok text font, such as classic, elegance, retro, typewriter, neon or handwriting. Omit it for Classic."
},
"textSize": {
"type": "object",
"required": [
"width",
"height"
],
"properties": {
"width": {
"type": "number",
"minimum": 0,
"description": "Measured text width in pixels. Use a non-negative finite number."
},
"height": {
"type": "number",
"minimum": 0,
"description": "Measured text height in pixels. Use a non-negative finite number."
}
},
"description": "Measured text width and height used to reproduce the slideshow layout.",
"additionalProperties": false
},
"textType": {
"enum": [
"title",
"body"
],
"type": "string",
"description": "Semantic role of the slideshow text: title or body."
},
"textAlign": {
"enum": [
"left",
"center",
"right"
],
"type": "string",
"description": "Horizontal alignment of the slideshow text."
},
"textColor": {
"type": "string",
"pattern": "^#[0-9a-f]{6}$",
"description": "Hex colour such as #ea403f: the text colour for none, the outline colour for outline, the box colour otherwise."
},
"textStyle": {
"enum": [
"outline",
"solid",
"shadow",
"neon",
"tiktok",
"white",
"black",
"yellow",
"pink",
"whiteBubble",
"blackBubble"
],
"type": "string",
"description": "ReelsFarm visual style applied to the slideshow text."
},
"fontWeight": {
"anyOf": [
{
"type": "number",
"const": 500
},
{
"type": "number",
"const": 700
}
],
"description": "Numeric font weight. Use 500 for medium text or 700 for bold text."
},
"textEffect": {
"enum": [
"none",
"outline",
"background",
"translucent"
],
"type": "string",
"description": "TikTok text mode: none, outline, background or translucent. When set, it and textColor replace textStyle."
},
"lineWidthEm": {
"type": "number",
"maximum": 40,
"minimum": 4,
"description": "Longest line in em (multiples of the font size), from 4 to 40. Omit it: the width then follows the text. Set it only to copy a reference slideshow."
},
"textPosition": {
"enum": [
"top",
"middle",
"bottom"
],
"type": "string",
"description": "Vertical position of the caption or slideshow text."
},
"textTransform": {
"enum": [
"uppercase",
"none"
],
"type": "string",
"description": "Text casing rule. Use uppercase or none."
}
},
"additionalProperties": false
},
"description": "Ordered text items drawn on this slide. One is usual; use up to six."
},
"aspectRatio": {
"enum": [
"4:5",
"9:16",
"3:4",
"1:1"
],
"type": "string",
"description": "Width-to-height ratio."
},
"imageOpacity": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Image opacity percentage from 0 through 100."
},
"timeLengthMs": {
"type": "integer",
"maximum": 5000,
"minimum": 1000,
"description": "Slide display duration in milliseconds, from 1000 through 5000."
},
"compositedImageUrl": {
"type": "string",
"description": "Authorized ReelsFarm URL of the rendered slide image. Omit it when the server must render the slide."
}
},
"additionalProperties": false
},
"minItems": 1,
"description": "Ordered slideshow slide definitions. Follow the nested slide schema and array limits."
},
"settings": {
"type": "object",
"properties": {
"music": {
"anyOf": [
{
"type": "object",
"required": [
"source",
"audioUrl"
],
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"description": "Display name."
},
"source": {
"enum": [
"template",
"upload"
],
"type": "string",
"description": "Where this item comes from."
},
"audioUrl": {
"type": "string",
"minLength": 1,
"description": "Public HTTPS URL or authorized ReelsFarm URL of the source audio track."
},
"coverUrl": {
"type": "string",
"description": "Authorized ReelsFarm asset URL of the selected music cover image."
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Owned or template music configuration used by the slideshow."
},
"duration": {
"type": "integer",
"maximum": 5000,
"minimum": 1000,
"description": "Slideshow display duration in milliseconds."
},
"aspectRatio": {
"enum": [
"4:5",
"9:16",
"3:4",
"1:1"
],
"type": "string",
"description": "Width-to-height ratio."
},
"backgroundColor": {
"type": "string",
"maxLength": 50,
"description": "Slideshow background color as a CSS color value."
},
"revisionHistory": {
"type": "array",
"items": {
"type": "object"
},
"maxItems": 20,
"description": "Up to 20 saved text revisions with their slide states. update_slideshow keeps them when this is left out."
},
"transitionStyle": {
"enum": [
"hard",
"fade",
"slide"
],
"type": "string",
"description": "Visual transition style used between slideshow images."
},
"videoTransition": {
"enum": [
"cut",
"fade"
],
"type": "string",
"description": "Transition used when the slideshow is exported as a video."
},
"activeRevisionId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Identifier of the slideshow revision currently shown in the editor."
}
},
"description": "Structured slideshow appearance and playback settings.",
"additionalProperties": false
},
"slideshowType": {
"enum": [
"EDUCATIONAL",
"PROMOTIONAL",
"STORYTELLING",
"LIFESTYLE",
"REVIEW"
],
"type": "string",
"description": "Content strategy used to generate or revise slideshow text."
},
"idempotencyKey": {
"type": "string",
"pattern": "^[A-Za-z0-9._:-]+$",
"maxLength": 200,
"minLength": 8,
"description": "Stable key for this action, reused only on retries. Required in Creator and Autopilot."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"properties": {
"dryRun": {
"type": "boolean",
"description": "Validate only: nothing is saved, charged or queued."
},
"summary": {
"type": "string",
"description": "Short explanation of the changes made by a slideshow revision."
},
"executed": {
"type": "boolean",
"description": "True when ReelsFarm executed the action instead of preparing a confirmation."
},
"nextStep": {
"type": "string",
"description": "Short instruction for continuing the prepared workflow."
},
"provider": {
"type": "string",
"const": "reelsfarm",
"description": "Service that executed or prepared this action. A value of reelsfarm is required before attributing a result to ReelsFarm."
},
"toolName": {
"type": "string",
"description": "Exact public MCP tool associated with this prepared action or result."
},
"expiresAt": {
"type": "string",
"description": "ISO 8601 date and time when this prepared action expires."
},
"operation": {
"type": "object",
"description": "Durable MCP operation state and result data.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"slideshow": {
"type": "object",
"required": [
"id",
"title",
"prompt",
"slideshowType",
"status",
"settings",
"slides",
"latestVideo",
"videoExportReady",
"exportHash",
"createdAt",
"updatedAt"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "ID of the ReelsFarm item."
},
"title": {
"type": "string",
"description": "Human-readable title for the ReelsFarm content item."
},
"prompt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Natural-language instructions for the requested content generation."
},
"slides": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"avatarId",
"imageUrl",
"compositedImageUrl",
"order",
"aspectRatio",
"timeLengthMs",
"imageOpacity",
"textItems",
"design"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "ID of the ReelsFarm item."
},
"order": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-based position."
},
"design": {
"anyOf": [
{
"oneOf": [
{
"type": "object",
"required": [
"design",
"name",
"handle",
"text",
"time",
"views",
"replies",
"reposts",
"likes",
"saves"
],
"properties": {
"name": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Display name of the person posting. Invented and believable; never a real public figure."
},
"seed": {
"type": "integer",
"maximum": 4294967295,
"minimum": 0,
"description": "Fixes the hand-drawn parts (torn paper edges, tilts) so every export draws the same slide. Keep the value a slide already has; omit it on a new slide."
},
"text": {
"type": "string",
"maxLength": 280,
"minLength": 1,
"description": "The post, up to 280 characters; usually 80 to 200. Lowercase and short lines read as real."
},
"time": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Time and date line, such as 9:41 PM · Oct 21, 2026."
},
"likes": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Likes count as shown on the post, such as 482, 3.1K or 1.2M."
},
"reply": {
"type": "object",
"required": [
"name",
"handle",
"text"
],
"properties": {
"name": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Display name of the person replying."
},
"text": {
"type": "string",
"maxLength": 140,
"minLength": 1,
"description": "The reply, usually the question the next slide answers."
},
"handle": {
"type": "string",
"maxLength": 30,
"minLength": 1,
"description": "Handle of the person replying, starting with @."
}
},
"description": "A reply card under the post. Use on one or two slides only.",
"additionalProperties": false
},
"saves": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Bookmarks count as shown on the post, such as 482, 3.1K or 1.2M."
},
"views": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Views count as shown on the post, such as 482, 3.1K or 1.2M."
},
"design": {
"type": "string",
"const": "tweet",
"description": "A post on X: a white card over the slide photo, blurred."
},
"handle": {
"type": "string",
"maxLength": 30,
"minLength": 1,
"description": "Handle starting with @, used on every slide of the slideshow."
},
"replies": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Replies count as shown on the post, such as 482, 3.1K or 1.2M."
},
"reposts": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Reposts count as shown on the post, such as 482, 3.1K or 1.2M."
},
"verified": {
"type": "boolean",
"description": "Shows a blue tick after the name. Defaults to true."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"design",
"contact",
"messages"
],
"properties": {
"seed": {
"type": "integer",
"maximum": 4294967295,
"minimum": 0,
"description": "Fixes the hand-drawn parts (torn paper edges, tilts) so every export draws the same slide. Keep the value a slide already has; omit it on a new slide."
},
"clock": {
"type": "string",
"maxLength": 8,
"description": "The status bar clock, such as 9:43. Omit it to use 9:41."
},
"draft": {
"type": "string",
"maxLength": 200,
"description": "A reply being typed in the input bar. It opens the keyboard. Usually on the last slide only."
},
"theme": {
"enum": [
"dark",
"light"
],
"type": "string",
"description": "Dark or light mode. Defaults to dark. Same on every slide."
},
"design": {
"type": "string",
"const": "imessage",
"description": "A screenshot of a Messages chat. The slide photo is not shown."
},
"status": {
"type": "string",
"maxLength": 30,
"description": "Shown under your last blue bubble, such as Delivered or Read 9:42 PM. Usually on the last slide only."
},
"unread": {
"type": "string",
"maxLength": 6,
"description": "The unread count next to the back arrow, such as 12."
},
"contact": {
"type": "string",
"maxLength": 30,
"minLength": 1,
"description": "The contact as saved in the phone, such as mom, Sophie or bestie. Same on every slide."
},
"messages": {
"type": "array",
"items": {
"type": "object",
"required": [
"from",
"text"
],
"properties": {
"from": {
"enum": [
"them",
"me"
],
"type": "string",
"description": "them: a grey bubble on the left. me: a blue bubble on the right."
},
"text": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "The message text, short like real texting."
},
"time": {
"type": "string",
"maxLength": 30,
"description": "A time line shown above this message, such as Today 9:41 PM. Usually only on the first message."
},
"reaction": {
"enum": [
"heart",
"like",
"dislike",
"haha",
"emphasis",
"question"
],
"type": "string",
"description": "A tapback on the bubble from the other person: heart, like, dislike, haha, emphasis (!!) or question. Never another emoji."
}
},
"additionalProperties": false
},
"maxItems": 14,
"minItems": 1,
"description": "The conversation so far, oldest first. One chat runs through an iMessage slideshow: each slide repeats the earlier messages and adds the next one to four."
},
"suggestions": {
"type": "array",
"items": {
"type": "string",
"maxLength": 20,
"minLength": 1
},
"maxItems": 3,
"description": "Up to three words above the keyboard."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"design",
"title",
"accent",
"points"
],
"properties": {
"seed": {
"type": "integer",
"maximum": 4294967295,
"minimum": 0,
"description": "Fixes the hand-drawn parts (torn paper edges, tilts) so every export draws the same slide. Keep the value a slide already has; omit it on a new slide."
},
"title": {
"type": "string",
"maxLength": 60,
"minLength": 1,
"description": "Bold title, 2 to 4 words, such as 3 rules for."
},
"accent": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Italic accent line under the title, 2 to 3 words naming the subject, such as slow mornings."
},
"design": {
"type": "string",
"const": "notebook",
"description": "A torn page of grid paper over the slide photo, with the photo taped on when there is room."
},
"points": {
"type": "array",
"items": {
"type": "string",
"maxLength": 90,
"minLength": 1
},
"maxItems": 5,
"minItems": 1,
"description": "One to five numbered points; three fit best."
},
"circled": {
"type": "string",
"maxLength": 30,
"description": "2 to 4 words circled by hand, such as try it for 7 days."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"design",
"masthead",
"issue",
"coverLines",
"headline"
],
"properties": {
"seed": {
"type": "integer",
"maximum": 4294967295,
"minimum": 0,
"description": "Fixes the hand-drawn parts (torn paper edges, tilts) so every export draws the same slide. Keep the value a slide already has; omit it on a new slide."
},
"issue": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "Issue line under the masthead, such as The skin issue · October 2026."
},
"design": {
"type": "string",
"const": "magazine",
"description": "A magazine cover over the slide photo. Use it on the first slide only, with a photo of a person."
},
"headline": {
"type": "string",
"maxLength": 60,
"minLength": 1,
"description": "The cover story at the bottom, 3 to 6 words."
},
"masthead": {
"type": "string",
"maxLength": 12,
"minLength": 1,
"description": "One word of 3 to 6 letters across the top, such as GLOW."
},
"coverLines": {
"type": "array",
"items": {
"type": "object",
"required": [
"big",
"small"
],
"properties": {
"big": {
"type": "string",
"maxLength": 24,
"minLength": 1,
"description": "1 to 3 words or a number in bold capitals."
},
"small": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "2 to 6 words in italics under it."
}
},
"additionalProperties": false
},
"maxItems": 4,
"description": "Two to four cover lines down the sides."
},
"headlineSub": {
"type": "string",
"maxLength": 50,
"description": "2 to 6 words under the headline."
}
},
"additionalProperties": false
}
],
"description": "A designed look drawn instead of the photo and text items: tweet, imessage, notebook or magazine. Text items on a designed slide are not drawn."
},
{
"type": "null"
}
],
"description": "The slide's designed look, drawn instead of the photo and text items; null for a classic slide."
},
"avatarId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "UUID of the ReelsFarm avatar. Omit it when the image URL identifies the source."
},
"imageUrl": {
"type": "string",
"description": "Public HTTPS URL or authorized ReelsFarm URL of the source image."
},
"textItems": {
"type": "array",
"items": {},
"description": "Ordered text items drawn on this slide. One is usual; use up to six."
},
"aspectRatio": {
"enum": [
"4:5",
"9:16",
"3:4",
"1:1"
],
"type": "string",
"description": "Width-to-height ratio."
},
"imageOpacity": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Image opacity percentage from 0 through 100."
},
"timeLengthMs": {
"type": "integer",
"maximum": 5000,
"minimum": 1000,
"description": "Slide display duration in milliseconds, from 1000 through 5000."
},
"compositedImageUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Authorized ReelsFarm URL of the rendered slide image. Omit it when the server must render the slide."
}
},
"additionalProperties": false
},
"description": "Ordered slideshow slide definitions. Follow the nested slide schema and array limits."
},
"status": {
"enum": [
"DRAFT",
"EXPORTED"
],
"type": "string",
"description": "ReelsFarm lifecycle status used for the requested resource or filter."
},
"settings": {
"type": "object",
"properties": {
"music": {
"anyOf": [
{
"type": "object",
"required": [
"source",
"audioUrl"
],
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"description": "Display name."
},
"source": {
"enum": [
"template",
"upload"
],
"type": "string",
"description": "Where this item comes from."
},
"audioUrl": {
"type": "string",
"minLength": 1,
"description": "Public HTTPS URL or authorized ReelsFarm URL of the source audio track."
},
"coverUrl": {
"type": "string",
"description": "Authorized ReelsFarm asset URL of the selected music cover image."
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Owned or template music configuration used by the slideshow."
},
"duration": {
"type": "integer",
"maximum": 5000,
"minimum": 1000,
"description": "Slideshow display duration in milliseconds."
},
"aspectRatio": {
"enum": [
"4:5",
"9:16",
"3:4",
"1:1"
],
"type": "string",
"description": "Width-to-height ratio."
},
"backgroundColor": {
"type": "string",
"maxLength": 50,
"description": "Slideshow background color as a CSS color value."
},
"revisionHistory": {
"type": "array",
"items": {
"type": "object"
},
"maxItems": 20,
"description": "Up to 20 saved text revisions with their slide states. update_slideshow keeps them when this is left out."
},
"transitionStyle": {
"enum": [
"hard",
"fade",
"slide"
],
"type": "string",
"description": "Visual transition style used between slideshow images."
},
"videoTransition": {
"enum": [
"cut",
"fade"
],
"type": "string",
"description": "Transition used when the slideshow is exported as a video."
},
"activeRevisionId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Identifier of the slideshow revision currently shown in the editor."
}
},
"description": "Structured slideshow appearance and playback settings.",
"additionalProperties": false
},
"createdAt": {
"type": "string",
"description": "ISO 8601 date and time when this item or revision was created."
},
"updatedAt": {
"type": "string",
"description": "updated at used by this ReelsFarm operation. Follow the type and validation limits in the schema."
},
"exportHash": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Hash of the slideshow definition used for the current video export."
},
"latestVideo": {
"anyOf": [
{
"type": "object",
"required": [
"id",
"title",
"videoUrl",
"thumbnailUrl",
"duration",
"sourceType",
"sourceSlideshowId",
"createdAt"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"duration": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"videoUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"createdAt": {
"type": "string"
},
"sourceType": {
"enum": [
"UGC_COMPOSITION",
"SLIDESHOW",
"GENERATED_HOOK",
"AI_CLONE"
],
"type": "string"
},
"thumbnailUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"sourceSlideshowId": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Current reusable slideshow video export, or null when no current export exists."
},
"slideshowType": {
"anyOf": [
{
"enum": [
"EDUCATIONAL",
"PROMOTIONAL",
"STORYTELLING",
"LIFESTYLE",
"REVIEW"
],
"type": "string",
"description": "Content strategy used to generate slideshow text."
},
{
"type": "null"
}
],
"description": "Content strategy used to generate or revise slideshow text."
},
"videoExportReady": {
"type": "boolean",
"description": "True when the slideshow has a current reusable video export."
}
},
"description": "Canonical slideshow with settings, ordered slides, and current export state.",
"additionalProperties": false
},
"actionType": {
"type": "string",
"description": "Stable ReelsFarm action category used for policy and operation tracking."
},
"policyCode": {
"type": "string",
"description": "Stable code that explains the server authorization decision."
},
"sourceTool": {
"type": "string",
"description": "Public ReelsFarm MCP tool responsible for this execution state."
},
"operationId": {
"type": "string",
"description": "UUID of the ReelsFarm MCP operation to inspect."
},
"assetCreated": {
"type": "boolean",
"description": "True only when this response contains a completed media asset created by ReelsFarm."
},
"resultMessage": {
"type": "string",
"description": "Human-readable rule for accurately presenting this ReelsFarm result."
},
"confirmationId": {
"type": "string",
"description": "Short-lived ReelsFarm confirmation identifier returned by a prepared action."
},
"connectionMode": {
"enum": [
"REVIEW",
"CREATOR",
"AUTOPILOT"
],
"type": "string",
"description": "Effective Review, Creator, or Autopilot mode for this action."
},
"creditEstimate": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Estimated credit cost, or null when the cost cannot be fixed in advance."
},
"executionState": {
"enum": [
"NOT_STARTED",
"PREPARED",
"ENQUEUED",
"PROCESSING",
"COMPLETED",
"FAILED"
],
"type": "string",
"description": "Authoritative ReelsFarm execution state. Only COMPLETED can support a completion claim."
},
"policyDecision": {
"enum": [
"ALLOW",
"REQUIRE_CONFIRMATION",
"DENY",
"REQUIRE_DASHBOARD"
],
"type": "string",
"description": "Server authorization decision applied to this action."
},
"confirmationTool": {
"type": "string",
"description": "The public tool that confirms only this prepared operation after explicit user approval."
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description87/100
Recreate a public TikTok photo slideshow for the user's product, from its link, as a draft slideshow. A slideshow from the Slideshow Ideas library works the same way by its slideshowIdeaId, such as "slideshow idea 0123456789abcdef0123" in a request. ReelsFarm reads every slide, keeps the format and each slide's text look, finds a photo for every slide (the product context's photo on slides where the original shows its own product), rewrites each text in its own words on the same subject, and names the product only where the original names its own, unless instructions say otherwise. Takes about two minutes: poll reelsfarm_get_recreate_slideshow_job_status, then use its slideshowId with the slideshow tools.
The description explains the capability, when to use it, and what to expect.
Inputs89/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
tiktokUrl
Link to a public TikTok photo slideshow, full (tiktok.com/@user/photo/ID) or short (vm.tiktok.com/...). Give this or slideshowIdeaId.
Clear enough to supply this argument.
slideshowIdeaId
20-character ID of a Slideshow Ideas library slideshow, such as the example from the user's onboarding. Give this or tiktokUrl.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
productContextId
Saved product context the slideshow is for. When it has a photo, the photo goes on slides where the original shows its own product.
Explain what happens when this optional value is omitted.
instructions
Extra instructions that win over Recreate's defaults, for example "mention the app on every slide" or "keep the original wording".
Clear enough to supply this argument.
effort
Effort preset: light, low, medium, high, or extra_high. Omit it to use extra_high, which uses up to 20 slide photos and reviews the rendered text layout.
Clear enough to supply this argument.
idempotencyKey
Stable key for this action, reused only on retries. Required in Creator and Autopilot.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
dryRun
Validate only: nothing is saved, charged or queued.
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "SLIDESHOW_RECREATE",
"description": "ReelsFarm media or generation kind used to filter the result."
},
"jobId": {
"type": "string",
"description": "ID of the ReelsFarm job."
},
"dryRun": {
"type": "boolean",
"description": "Validate only: nothing is saved, charged or queued."
},
"status": {
"enum": [
"PENDING",
"PROCESSING",
"COMPLETED",
"FAILED"
],
"type": "string",
"description": "ReelsFarm lifecycle status used for the requested resource or filter."
},
"summary": {
"type": "string",
"description": "Short explanation of the changes made by a slideshow revision."
},
"executed": {
"type": "boolean",
"description": "True when ReelsFarm executed the action instead of preparing a confirmation."
},
"nextStep": {
"type": "string",
"description": "Short instruction for continuing the prepared workflow."
},
"provider": {
"type": "string",
"const": "reelsfarm",
"description": "Service that executed or prepared this action. A value of reelsfarm is required before attributing a result to ReelsFarm."
},
"toolName": {
"type": "string",
"description": "Exact public MCP tool associated with this prepared action or result."
},
"expiresAt": {
"type": "string",
"description": "ISO 8601 date and time when this prepared action expires."
},
"operation": {
"type": "object",
"description": "Durable MCP operation state and result data.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"actionType": {
"type": "string",
"description": "Stable ReelsFarm action category used for policy and operation tracking."
},
"policyCode": {
"type": "string",
"description": "Stable code that explains the server authorization decision."
},
"sourceTool": {
"type": "string",
"description": "Public ReelsFarm MCP tool responsible for this execution state."
},
"creditsCost": {
"type": "number",
"description": "Actual number of credits charged for the operation."
},
"operationId": {
"type": "string",
"description": "UUID of the ReelsFarm MCP operation to inspect."
},
"assetCreated": {
"type": "boolean",
"description": "True only when this response contains a completed media asset created by ReelsFarm."
},
"resultMessage": {
"type": "string",
"description": "Human-readable rule for accurately presenting this ReelsFarm result."
},
"confirmationId": {
"type": "string",
"description": "Short-lived ReelsFarm confirmation identifier returned by a prepared action."
},
"connectionMode": {
"enum": [
"REVIEW",
"CREATOR",
"AUTOPILOT"
],
"type": "string",
"description": "Effective Review, Creator, or Autopilot mode for this action."
},
"creditEstimate": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Estimated credit cost, or null when the cost cannot be fixed in advance."
},
"executionState": {
"enum": [
"NOT_STARTED",
"PREPARED",
"ENQUEUED",
"PROCESSING",
"COMPLETED",
"FAILED"
],
"type": "string",
"description": "Authoritative ReelsFarm execution state. Only COMPLETED can support a completion claim."
},
"policyDecision": {
"enum": [
"ALLOW",
"REQUIRE_CONFIRMATION",
"DENY",
"REQUIRE_DASHBOARD"
],
"type": "string",
"description": "Server authorization decision applied to this action."
},
"confirmationTool": {
"type": "string",
"description": "The public tool that confirms only this prepared operation after explicit user approval."
}
},
"additionalProperties": false
}
Original tool metadata
{
"name": "reelsfarm_prepare_recreate_slideshow",
"title": "Prepare Recreate Slideshow",
"description": "Recreate a public TikTok photo slideshow for the user's product, from its link, as a draft slideshow. A slideshow from the Slideshow Ideas library works the same way by its slideshowIdeaId, such as \"slideshow idea 0123456789abcdef0123\" in a request. ReelsFarm reads every slide, keeps the format and each slide's text look, finds a photo for every slide (the product context's photo on slides where the original shows its own product), rewrites each text in its own words on the same subject, and names the product only where the original names its own, unless instructions say otherwise. Takes about two minutes: poll reelsfarm_get_recreate_slideshow_job_status, then use its slideshowId with the slideshow tools.",
"inputSchema": {
"type": "object",
"properties": {
"dryRun": {
"type": "boolean",
"description": "Validate only: nothing is saved, charged or queued."
},
"effort": {
"enum": [
"light",
"low",
"medium",
"high",
"extra_high"
],
"type": "string",
"description": "Effort preset: light, low, medium, high, or extra_high. Omit it to use extra_high, which uses up to 20 slide photos and reviews the rendered text layout."
},
"tiktokUrl": {
"type": "string",
"maxLength": 2048,
"minLength": 1,
"description": "Link to a public TikTok photo slideshow, full (tiktok.com/@user/photo/ID) or short (vm.tiktok.com/...). Give this or slideshowIdeaId."
},
"instructions": {
"type": "string",
"maxLength": 1000,
"minLength": 1,
"description": "Extra instructions that win over Recreate's defaults, for example \"mention the app on every slide\" or \"keep the original wording\"."
},
"idempotencyKey": {
"type": "string",
"pattern": "^[A-Za-z0-9._:-]+$",
"maxLength": 200,
"minLength": 8,
"description": "Stable key for this action, reused only on retries. Required in Creator and Autopilot."
},
"slideshowIdeaId": {
"type": "string",
"pattern": "^[a-f0-9]{20}$",
"description": "20-character ID of a Slideshow Ideas library slideshow, such as the example from the user's onboarding. Give this or tiktokUrl."
},
"productContextId": {
"type": "string",
"format": "uuid",
"description": "Saved product context the slideshow is for. When it has a photo, the photo goes on slides where the original shows its own product."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "SLIDESHOW_RECREATE",
"description": "ReelsFarm media or generation kind used to filter the result."
},
"jobId": {
"type": "string",
"description": "ID of the ReelsFarm job."
},
"dryRun": {
"type": "boolean",
"description": "Validate only: nothing is saved, charged or queued."
},
"status": {
"enum": [
"PENDING",
"PROCESSING",
"COMPLETED",
"FAILED"
],
"type": "string",
"description": "ReelsFarm lifecycle status used for the requested resource or filter."
},
"summary": {
"type": "string",
"description": "Short explanation of the changes made by a slideshow revision."
},
"executed": {
"type": "boolean",
"description": "True when ReelsFarm executed the action instead of preparing a confirmation."
},
"nextStep": {
"type": "string",
"description": "Short instruction for continuing the prepared workflow."
},
"provider": {
"type": "string",
"const": "reelsfarm",
"description": "Service that executed or prepared this action. A value of reelsfarm is required before attributing a result to ReelsFarm."
},
"toolName": {
"type": "string",
"description": "Exact public MCP tool associated with this prepared action or result."
},
"expiresAt": {
"type": "string",
"description": "ISO 8601 date and time when this prepared action expires."
},
"operation": {
"type": "object",
"description": "Durable MCP operation state and result data.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"actionType": {
"type": "string",
"description": "Stable ReelsFarm action category used for policy and operation tracking."
},
"policyCode": {
"type": "string",
"description": "Stable code that explains the server authorization decision."
},
"sourceTool": {
"type": "string",
"description": "Public ReelsFarm MCP tool responsible for this execution state."
},
"creditsCost": {
"type": "number",
"description": "Actual number of credits charged for the operation."
},
"operationId": {
"type": "string",
"description": "UUID of the ReelsFarm MCP operation to inspect."
},
"assetCreated": {
"type": "boolean",
"description": "True only when this response contains a completed media asset created by ReelsFarm."
},
"resultMessage": {
"type": "string",
"description": "Human-readable rule for accurately presenting this ReelsFarm result."
},
"confirmationId": {
"type": "string",
"description": "Short-lived ReelsFarm confirmation identifier returned by a prepared action."
},
"connectionMode": {
"enum": [
"REVIEW",
"CREATOR",
"AUTOPILOT"
],
"type": "string",
"description": "Effective Review, Creator, or Autopilot mode for this action."
},
"creditEstimate": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Estimated credit cost, or null when the cost cannot be fixed in advance."
},
"executionState": {
"enum": [
"NOT_STARTED",
"PREPARED",
"ENQUEUED",
"PROCESSING",
"COMPLETED",
"FAILED"
],
"type": "string",
"description": "Authoritative ReelsFarm execution state. Only COMPLETED can support a completion claim."
},
"policyDecision": {
"enum": [
"ALLOW",
"REQUIRE_CONFIRMATION",
"DENY",
"REQUIRE_DASHBOARD"
],
"type": "string",
"description": "Server authorization decision applied to this action."
},
"confirmationTool": {
"type": "string",
"description": "The public tool that confirms only this prepared operation after explicit user approval."
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description90/100
Get the status of a Recreate job. When it completes, slideshowId is the new draft slideshow; open it with reelsfarm_get_slideshow, change it with reelsfarm_update_slideshow, and render it with reelsfarm_prepare_finalize_slideshow.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
jobId
ID of the ReelsFarm job.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
waitMs
Wait up to 25000 milliseconds for a status or item-progress change. Omit or use 0 for an immediate snapshot.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Declare the result fields and their types in the output schema.
View output schema
{
"type": "object",
"required": [
"jobProgress"
],
"properties": {
"status": {},
"provider": {},
"sourceTool": {},
"jobProgress": {
"type": "object",
"required": [
"step",
"terminal",
"nextPollAfterMs"
],
"properties": {
"step": {
"enum": [
"queued",
"processing",
"completed",
"failed",
"cancelled",
"unknown"
],
"type": "string",
"description": "Persisted job stage. Processing does not imply a more detailed provider stage."
},
"total": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Number of batch items, when reported by the worker."
},
"failed": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Number of failed batch items, when reported by the worker."
},
"terminal": {
"type": "boolean",
"description": "True when the job has finished, failed, or been cancelled."
},
"processed": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Number of batch items processed, when reported by the worker."
},
"succeeded": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Number of successful batch items. A completed job can include failed items."
},
"nextPollAfterMs": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Suggested delay before an immediate status call; zero for terminal jobs. A waitMs call can be made immediately."
}
},
"description": "Consistent job lifecycle and recorded batch progress. Check the existing result for assets and errors.",
"additionalProperties": false
},
"assetCreated": {},
"resultMessage": {},
"executionState": {}
},
"additionalProperties": false
}
Original tool metadata
{
"name": "reelsfarm_get_recreate_slideshow_job_status",
"title": "Get Recreate Slideshow Job Status",
"description": "Get the status of a Recreate job. When it completes, slideshowId is the new draft slideshow; open it with reelsfarm_get_slideshow, change it with reelsfarm_update_slideshow, and render it with reelsfarm_prepare_finalize_slideshow.",
"inputSchema": {
"type": "object",
"required": [
"jobId"
],
"properties": {
"jobId": {
"type": "string",
"format": "uuid",
"description": "ID of the ReelsFarm job."
},
"waitMs": {
"type": "integer",
"maximum": 25000,
"minimum": 0,
"description": "Wait up to 25000 milliseconds for a status or item-progress change. Omit or use 0 for an immediate snapshot."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"required": [
"jobProgress"
],
"properties": {
"status": {},
"provider": {},
"sourceTool": {},
"jobProgress": {
"type": "object",
"required": [
"step",
"terminal",
"nextPollAfterMs"
],
"properties": {
"step": {
"enum": [
"queued",
"processing",
"completed",
"failed",
"cancelled",
"unknown"
],
"type": "string",
"description": "Persisted job stage. Processing does not imply a more detailed provider stage."
},
"total": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Number of batch items, when reported by the worker."
},
"failed": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Number of failed batch items, when reported by the worker."
},
"terminal": {
"type": "boolean",
"description": "True when the job has finished, failed, or been cancelled."
},
"processed": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Number of batch items processed, when reported by the worker."
},
"succeeded": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Number of successful batch items. A completed job can include failed items."
},
"nextPollAfterMs": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Suggested delay before an immediate status call; zero for terminal jobs. A waitMs call can be made immediately."
}
},
"description": "Consistent job lifecycle and recorded batch progress. Check the existing result for assets and errors.",
"additionalProperties": false
},
"assetCreated": {},
"resultMessage": {},
"executionState": {}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description89/100
Search photos for slideshow slides, like the photo picker in the app: Pinterest (default), Tumblr or Pexels. Results are portrait-friendly photo links with previews. Save the ones you use with reelsfarm_save_slide_photos, then put the saved url on a slide. Each user can run 30 searches a minute.
The description explains the capability, when to use it, and what to expect.
Inputs83/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
query
What the photo shows, for example "cozy cafe window rain".
Clear enough to supply this argument.
source
Photo source. Defaults to pinterest. Tumblr and Pexels are listed in sources when this server has their keys.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
cursor
nextCursor from the previous page.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
{
"name": "reelsfarm_search_photos",
"title": "Search Photos",
"description": "Search photos for slideshow slides, like the photo picker in the app: Pinterest (default), Tumblr or Pexels. Results are portrait-friendly photo links with previews. Save the ones you use with reelsfarm_save_slide_photos, then put the saved url on a slide. Each user can run 30 searches a minute.",
"inputSchema": {
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "What the photo shows, for example \"cozy cafe window rain\"."
},
"cursor": {
"type": "string",
"pattern": "^[A-Za-z0-9+/=_|:.-]{1,4096}$",
"description": "nextCursor from the previous page."
},
"source": {
"enum": [
"pinterest",
"tumblr",
"pexels"
],
"type": "string",
"description": "Photo source. Defaults to pinterest. Tumblr and Pexels are listed in sources when this server has their keys."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"properties": {
"query": {},
"source": {},
"results": {},
"sources": {},
"nextCursor": {}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
Save photos found with reelsfarm_search_photos so they can go on slides (up to 10 per call). Each result has the saved url to use as a slide imageUrl. Saved photos do not count toward the upload limit; photos that no slideshow uses are removed after three days.
The description explains the capability, when to use it, and what to expect.
Inputs81/100
Explain the meaning of this value, not just its name.
photos › items › url
imageUrl of a reelsfarm_search_photos result.
Clear enough to supply this argument.
photos › items › name
Display name.
Explain the meaning of this value, not just its name.
idempotencyKey
Stable key for this action, reused only on retries. Required in Creator and Autopilot.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
dryRun
Validate only: nothing is saved, charged or queued.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description79/100
Save a prompt to the user's prompt library, like Save prompt in the app: kind image for image prompts, slideshow for slideshow prompts. Saving the same text again returns the saved prompt.
The description explains the capability, when to use it, and what to expect.
Inputs81/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
kind
ReelsFarm media or generation kind used to filter the result.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
prompt
Natural-language instructions for the requested content generation.
Clear enough to supply this argument.
idempotencyKey
Stable key for this action, reused only on retries. Required in Creator and Autopilot.
Explain what happens when this optional value is omitted.
dryRun
Validate only: nothing is saved, charged or queued.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description71/100
List saved slideshow formats: reusable content, image and publishing settings that generate review batches of slideshows (reelsfarm_prepare_create_slideshow_batch). creditsPerSlideshow is the slideshow generation price of each slideshow in a batch. When the format sets images.generatedPhotos, each picture also costs that image model's price.
Describe the returned information so the agent knows whether it will answer the request.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
cursor
nextCursor of the previous page. Omit it for the first page.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description80/100
Create a slideshow format, or replace a saved one when formatId is given. A format holds the content brief (content), image rules (images), publishing defaults (publishRules) and optional per-slide directions, with the same fields as automations. content.recreateUrl copies a public TikTok photo slideshow: ReelsFarm reads it (free) when the format is saved, and the format then takes that slideshow's slide count.
The description explains the capability, when to use it, and what to expect.
Inputs86/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
formatId
UUID of a saved format to replace. Omit it to create a format.
Clear enough to supply this argument.
name
Display name.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
mode
Which records or behavior to use.
Explain the meaning of this value, not just its name.
content › topic
Topic used to guide slideshow or automation content generation.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
content › customTopic
Optional custom topic used instead of a saved or generated automation topic.
Clear enough to supply this argument.
content › slidesCount
Slides per post, or the fewest when slidesCountMax sets a range.
Clear enough to supply this argument.
content › slidesCountMax
With a range, each post has a random number of slides from slidesCount to this. A fixed image set past the end of a shorter post goes on its last slide.
Hex colour such as #ea403f: the text colour for none, the outline colour for outline, the box colour otherwise.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
content › recreateUrl
A public TikTok photo slideshow whose format every post copies: its slides, text look and positions, with new words and new photos each run. ReelsFarm reads it (free) when the change runs; narrativeContent then says what to change. Null stops copying it.
Clear enough to supply this argument.
content › slideshowType
Content strategy used to generate or revise slideshow text.
Clear enough to supply this argument.
content › provenFormat
A proven slideshow format every post follows, on top of formatInstructions: help-me-choose (Numbered options of one kind; viewers vote for a number in the comments.); numbered-product-last (A list worth saving, with the product as the last item.); rated-picks (Personal favourites, each with an honest rating; viewers add theirs.); problem-math-steps (A specific problem, what it really costs, then the steps to fix it.). It sets the slideshow type. Null for none.
Clear enough to supply this argument.
content › design
The Look of every post. tweet: posts on X over the blurred photos. imessage: one text conversation across the slides. notebook: torn grid paper with numbered points. magazine: a magazine cover on slide 1, then photo slides. auto: picks a look only when the topic plainly is one. classic or null: photo slides with text.
Clear enough to supply this argument.
content › formatInstructions
Optional output-format guidance appended to the content generation prompt.
Clear enough to supply this argument.
content › narrativeContent
Structured narrative inputs used to generate automation slide text.
Resolve the mismatch between this description and its schema constraints.
publishRules › anyOf › 0 › caption
Post caption. To rotate captions across runs, put each caption in square brackets, for example [First caption][Second caption]. Text outside the brackets is not allowed in rotation mode.
Legacy alias for TikTok delivery and privacy. PUBLIC and PRIVATE mean direct posts; DRAFT sends to the TikTok inbox. tiktokPublishMode and tiktokPrivacyLevel in the same request take priority.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description87/100
List review batches generated from slideshow formats, newest first, with each item's status (QUEUED, GENERATING, READY, FAILED, EXCLUDED) and slideshowId when ready.
The description explains the capability, when to use it, and what to expect.
Inputs95/100
Input documentation gives an agent enough context to populate the arguments.
cursor
nextCursor of the previous page. Omit it for the first page.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
Prepare generating a review batch of 1 to 50 slideshows from a saved format. Each slideshow costs the slideshow generation price; when the format sets images.generatedPhotos, each picture also costs that image model's price. Nothing is posted. Poll reelsfarm_get_slideshow_batch with the returned batchId.
Describe the returned information so the agent knows whether it will answer the request.
Inputs88/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
formatId
UUID of a saved slideshow format, from reelsfarm_list_slideshow_formats.
Clear enough to supply this argument.
count
How many slideshows to generate, 1 to 50.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
idempotencyKey
Stable key for this action, reused only on retries. Required in Creator and Autopilot.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
dryRun
Validate only: nothing is saved, charged or queued.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description71/100
List normalized social accounts and connectable providers available for MCP publishing workflows. Each account has managed: true when ReelsFarm connected the Instagram or Facebook account for the user through its managed integration; publish to it like any other integration account.
Describe the returned information so the agent knows whether it will answer the request.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
responseFormat
Result text: json (the default) or markdown, a fenced JSON block.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
{
"name": "reelsfarm_list_social_accounts",
"title": "List Social Accounts",
"description": "List normalized social accounts and connectable providers available for MCP publishing workflows. Each account has managed: true when ReelsFarm connected the Instagram or Facebook account for the user through its managed integration; publish to it like any other integration account.",
"inputSchema": {
"type": "object",
"properties": {
"responseFormat": {
"enum": [
"json",
"markdown"
],
"type": "string",
"default": "json",
"description": "Result text: json (the default) or markdown, a fenced JSON block."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"properties": {
"accounts": {},
"availableProviders": {},
"supportedPlatforms": {},
"nativeOAuthProviders": {}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description75/100
List OAuth and integration social accounts available for publishing. Includes legacy arrays plus normalized accounts. Each account has managed: true when ReelsFarm connected the Instagram or Facebook account for the user through its managed integration; publish to it like any other integration account.
Describe the returned information so the agent knows whether it will answer the request.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
responseFormat
Result text: json (the default) or markdown, a fenced JSON block.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
{
"name": "reelsfarm_list_connected_accounts",
"title": "List Connected Accounts",
"description": "List OAuth and integration social accounts available for publishing. Includes legacy arrays plus normalized accounts. Each account has managed: true when ReelsFarm connected the Instagram or Facebook account for the user through its managed integration; publish to it like any other integration account.",
"inputSchema": {
"type": "object",
"properties": {
"responseFormat": {
"enum": [
"json",
"markdown"
],
"type": "string",
"default": "json",
"description": "Result text: json (the default) or markdown, a fenced JSON block."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"properties": {
"accounts": {},
"externalAccounts": {},
"oauthConnections": {},
"availableProviders": {},
"supportedPlatforms": {},
"nativeOAuthProviders": {}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
Inspect content and destination-account readiness before scheduling or publishing. Each target includes settingsSchema with exact fields, required choices, allowed values, plus rules and known limits. Use it to build the platforms entry. This does not create a post or change stored media metadata.
The description explains the capability, when to use it, and what to expect.
Inputs81/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
contentType
Type of user-owned ReelsFarm content to publish.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
contentId
UUID of the user-owned content item.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
publishFormat
Media format sent to the selected social platforms.
Clear enough to supply this argument.
connectionIds
One to twenty destination account UUIDs returned by reelsfarm_list_connected_accounts.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description76/100
List scheduled and published posts with compact platform-level publish status rows, 20 per page unless limit says otherwise (up to 100). Each row includes accountId and the saved destination settings.
Describe the returned information so the agent knows whether it will answer the request.
Inputs68/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
limit
Page size, from 1 to 100.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
cursor
nextCursor of the previous page. Omit it for the first page.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
status
ReelsFarm lifecycle status used for the requested resource or filter.
Explain the meaning of this value, not just its name.
startDate
Inclusive start of the requested date range in ISO 8601 date or date-time format.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
endDate
Inclusive end of the requested date range in ISO 8601 date or date-time format.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
platform
Social platform used for this publishing target or filter.
Explain the meaning of this value, not just its name.
accountId
UUID of the connected ReelsFarm social account.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
{
"name": "reelsfarm_list_scheduled_posts",
"title": "List Scheduled Posts",
"description": "List scheduled and published posts with compact platform-level publish status rows, 20 per page unless limit says otherwise (up to 100). Each row includes accountId and the saved destination settings.",
"inputSchema": {
"type": "object",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, from 1 to 100."
},
"cursor": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "nextCursor of the previous page. Omit it for the first page."
},
"status": {
"type": "string",
"description": "ReelsFarm lifecycle status used for the requested resource or filter."
},
"endDate": {
"type": "string",
"description": "Inclusive end of the requested date range in ISO 8601 date or date-time format."
},
"platform": {
"type": "string",
"description": "Social platform used for this publishing target or filter."
},
"accountId": {
"type": "string",
"description": "UUID of the connected ReelsFarm social account."
},
"startDate": {
"type": "string",
"description": "Inclusive start of the requested date range in ISO 8601 date or date-time format."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"properties": {
"hasMore": {},
"nextCursor": {},
"scheduledPosts": {}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
Shorten the title to an action and subject; move usage details into the description.
Description75/100
Prepare creation of a TikTok slideshow automation. Defaults to PAUSED unless status is ACTIVE. An ACTIVE automation needs publishRules.tiktokSettings.tiktokTitle (1 to 90 characters) and photos for every slide: a photo source in images.photoSources, an image collection, or a fixed image for every slide. iMessage posts (content.design imessage) need no photos. ReelsFarm checks the request before approval. To rotate captions across runs, put each caption in square brackets.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Explain the meaning of this value, not just its name.
name
Display name.
Explain the meaning of this value, not just its name.
mode
Which records or behavior to use.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
status
ReelsFarm lifecycle status used for the requested resource or filter.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
targetConnectionId
UUID of the social connection that receives automation posts.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
timezone
Internet Assigned Numbers Authority timezone, such as Europe/Tirane.
Clear enough to supply this argument.
schedule › slots › items › days
Number of previous calendar days included in the statistics window.
Resolve the mismatch between this description and its schema constraints.
schedule › slots › items › timeLocal
Local publication time in 24-hour HH:MM format.
Resolve the mismatch between this description and its schema constraints.
content › topic
Topic used to guide slideshow or automation content generation.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
content › customTopic
Optional custom topic used instead of a saved or generated automation topic.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
content › slidesCount
Slides per post, or the fewest when slidesCountMax sets a range.
Clear enough to supply this argument.
content › slidesCountMax
With a range, each post has a random number of slides from slidesCount to this. A fixed image set past the end of a shorter post goes on its last slide.
Hex colour such as #ea403f: the text colour for none, the outline colour for outline, the box colour otherwise.
Clear enough to supply this argument.
content › recreateUrl
A public TikTok photo slideshow whose format every post copies: its slides, text look and positions, with new words and new photos each run. ReelsFarm reads it (free) when the change runs; narrativeContent then says what to change. Null stops copying it.
Clear enough to supply this argument.
content › slideshowType
Content strategy used to generate or revise slideshow text.
Clear enough to supply this argument.
content › provenFormat
A proven slideshow format every post follows, on top of formatInstructions: help-me-choose (Numbered options of one kind; viewers vote for a number in the comments.); numbered-product-last (A list worth saving, with the product as the last item.); rated-picks (Personal favourites, each with an honest rating; viewers add theirs.); problem-math-steps (A specific problem, what it really costs, then the steps to fix it.). It sets the slideshow type. Null for none.
Clear enough to supply this argument.
content › design
The Look of every post. tweet: posts on X over the blurred photos. imessage: one text conversation across the slides. notebook: torn grid paper with numbered points. magazine: a magazine cover on slide 1, then photo slides. auto: picks a look only when the topic plainly is one. classic or null: photo slides with text.
Clear enough to supply this argument.
content › formatInstructions
Optional output-format guidance appended to the content generation prompt.
Clear enough to supply this argument.
content › narrativeContent
Structured narrative inputs used to generate automation slide text.
Post caption. To rotate captions across runs, put each caption in square brackets, for example [First caption][Second caption]. Text outside the brackets is not allowed in rotation mode.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Legacy alias for TikTok delivery and privacy. PUBLIC and PRIVATE mean direct posts; DRAFT sends to the TikTok inbox. tiktokPublishMode and tiktokPrivacyLevel in the same request take priority.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description83/100
Prepare changes to an existing TikTok slideshow automation. Omitted top-level fields keep their saved values, and images replaces the saved image rules. publishRules merges field by field: an omitted caption or TikTok setting keeps its saved value, and a new caption replaces a saved captionOverride. content merges field by field too: an omitted content field keeps its saved value, and null clears it. An ACTIVE automation, including one you only edit, needs a TikTok photo title of 1 to 90 characters and photos for every slide: a photo source in images.photoSources, an image collection, or a fixed image for every slide. iMessage posts need no photos. Card-trial accounts keep automations PAUSED. ReelsFarm checks the request before approval. The described operation can have destructive or irreversible effects, including overwriting saved data.
The description explains the capability, when to use it, and what to expect.
Inputs76/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
id
ID of the ReelsFarm item.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
name
Display name.
Explain the meaning of this value, not just its name.
mode
Which records or behavior to use.
Explain the meaning of this value, not just its name.
status
ReelsFarm lifecycle status used for the requested resource or filter.
Explain the meaning of this value, not just its name.
targetConnectionId
UUID of the social connection that receives automation posts.
Clear enough to supply this argument.
timezone
Internet Assigned Numbers Authority timezone, such as Europe/Tirane.
Clear enough to supply this argument.
schedule › slots › items › days
Number of previous calendar days included in the statistics window.
Resolve the mismatch between this description and its schema constraints.
schedule › slots › items › timeLocal
Local publication time in 24-hour HH:MM format.
Resolve the mismatch between this description and its schema constraints.
content › topic
Topic used to guide slideshow or automation content generation.
Clear enough to supply this argument.
content › customTopic
Optional custom topic used instead of a saved or generated automation topic.
Explain what happens when this optional value is omitted.
content › slidesCount
Slides per post, or the fewest when slidesCountMax sets a range.
Clear enough to supply this argument.
content › slidesCountMax
With a range, each post has a random number of slides from slidesCount to this. A fixed image set past the end of a shorter post goes on its last slide.
Hex colour such as #ea403f: the text colour for none, the outline colour for outline, the box colour otherwise.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
content › recreateUrl
A public TikTok photo slideshow whose format every post copies: its slides, text look and positions, with new words and new photos each run. ReelsFarm reads it (free) when the change runs; narrativeContent then says what to change. Null stops copying it.
Clear enough to supply this argument.
content › slideshowType
Content strategy used to generate or revise slideshow text.
Clear enough to supply this argument.
content › provenFormat
A proven slideshow format every post follows, on top of formatInstructions: help-me-choose (Numbered options of one kind; viewers vote for a number in the comments.); numbered-product-last (A list worth saving, with the product as the last item.); rated-picks (Personal favourites, each with an honest rating; viewers add theirs.); problem-math-steps (A specific problem, what it really costs, then the steps to fix it.). It sets the slideshow type. Null for none.
Clear enough to supply this argument.
content › design
The Look of every post. tweet: posts on X over the blurred photos. imessage: one text conversation across the slides. notebook: torn grid paper with numbered points. magazine: a magazine cover on slide 1, then photo slides. auto: picks a look only when the topic plainly is one. classic or null: photo slides with text.
Clear enough to supply this argument.
content › formatInstructions
Optional output-format guidance appended to the content generation prompt.
Clear enough to supply this argument.
content › narrativeContent
Structured narrative inputs used to generate automation slide text.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
publishRules › anyOf › 0 › caption
Post caption. To rotate captions across runs, put each caption in square brackets, for example [First caption][Second caption]. Text outside the brackets is not allowed in rotation mode.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Legacy alias for TikTok delivery and privacy. PUBLIC and PRIVATE mean direct posts; DRAFT sends to the TikTok inbox. tiktokPublishMode and tiktokPrivacyLevel in the same request take priority.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description80/100
Get credit costs for MCP-exposed generation actions, including async avatar, Product Studio, hook, and Videos workbench jobs. videoGeneration lists each workbench model with its durations, aspect ratios, resolutions, reference limits, and per-second prices. With a Seedance reference video, referenceVideoPricing applies to the reference length plus the clip length.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
responseFormat
Result text: json (the default) or markdown, a fenced JSON block.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "UGC_VIDEO",
"description": "ReelsFarm media or generation kind used to filter the result."
},
"jobId": {
"type": "string",
"description": "ID of the ReelsFarm job."
},
"dryRun": {
"type": "boolean",
"description": "Validate only: nothing is saved, charged or queued."
},
"status": {
"enum": [
"PENDING",
"PROCESSING",
"COMPLETED",
"FAILED"
],
"type": "string",
"description": "ReelsFarm lifecycle status used for the requested resource or filter."
},
"summary": {
"type": "string",
"description": "Short explanation of the changes made by a slideshow revision."
},
"executed": {
"type": "boolean",
"description": "True when ReelsFarm executed the action instead of preparing a confirmation."
},
"nextStep": {
"type": "string",
"description": "Short instruction for continuing the prepared workflow."
},
"provider": {
"type": "string",
"const": "reelsfarm",
"description": "Service that executed or prepared this action. A value of reelsfarm is required before attributing a result to ReelsFarm."
},
"toolName": {
"type": "string",
"description": "Exact public MCP tool associated with this prepared action or result."
},
"expiresAt": {
"type": "string",
"description": "ISO 8601 date and time when this prepared action expires."
},
"operation": {
"type": "object",
"description": "Durable MCP operation state and result data.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"actionType": {
"type": "string",
"description": "Stable ReelsFarm action category used for policy and operation tracking."
},
"policyCode": {
"type": "string",
"description": "Stable code that explains the server authorization decision."
},
"sourceTool": {
"type": "string",
"description": "Public ReelsFarm MCP tool responsible for this execution state."
},
"operationId": {
"type": "string",
"description": "UUID of the ReelsFarm MCP operation to inspect."
},
"assetCreated": {
"type": "boolean",
"description": "True only when this response contains a completed media asset created by ReelsFarm."
},
"resultMessage": {
"type": "string",
"description": "Human-readable rule for accurately presenting this ReelsFarm result."
},
"confirmationId": {
"type": "string",
"description": "Short-lived ReelsFarm confirmation identifier returned by a prepared action."
},
"connectionMode": {
"enum": [
"REVIEW",
"CREATOR",
"AUTOPILOT"
],
"type": "string",
"description": "Effective Review, Creator, or Autopilot mode for this action."
},
"creditEstimate": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Estimated credit cost, or null when the cost cannot be fixed in advance."
},
"executionState": {
"enum": [
"NOT_STARTED",
"PREPARED",
"ENQUEUED",
"PROCESSING",
"COMPLETED",
"FAILED"
],
"type": "string",
"description": "Authoritative ReelsFarm execution state. Only COMPLETED can support a completion claim."
},
"policyDecision": {
"enum": [
"ALLOW",
"REQUIRE_CONFIRMATION",
"DENY",
"REQUIRE_DASHBOARD"
],
"type": "string",
"description": "Server authorization decision applied to this action."
},
"confirmationTool": {
"type": "string",
"description": "The public tool that confirms only this prepared operation after explicit user approval."
}
},
"additionalProperties": false
}
Original tool metadata
{
"name": "reelsfarm_prepare_generate_ugc_video",
"title": "Prepare UGC Video Generation",
"description": "Prepare a credit-spending UGC video generation job.",
"inputSchema": {
"type": "object",
"properties": {
"parts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "ID of the ReelsFarm item."
},
"name": {
"type": "string",
"description": "Display name."
},
"caption": {
"type": "string",
"description": "Caption text. Omit it for no caption."
},
"videoId": {
"type": "string",
"format": "uuid",
"description": "UUID of an existing user-owned ReelsFarm video. Do not provide videoUrl with this field."
},
"hookType": {
"enum": [
"GENERATED",
"UPLOADED",
"TEMPLATE"
],
"type": "string",
"description": "Hook origin classification: generated, uploaded, or template."
},
"videoUrl": {
"type": "string",
"description": "Public HTTPS URL or authorized ReelsFarm URL of the source video."
},
"sourceType": {
"enum": [
"my-hooks",
"my-avatars",
"my-videos",
"templates",
"demos",
"upload"
],
"type": "string",
"description": "ReelsFarm source library or workflow that supplied this video part."
},
"textPosition": {
"enum": [
"TOP",
"MIDDLE",
"BOTTOM",
"top",
"center",
"bottom"
],
"type": "string",
"description": "Vertical position of the caption or slideshow text."
},
"thumbnailUrl": {
"type": "string",
"description": "Thumbnail image URL."
},
"assetCategory": {
"enum": [
"hooks",
"demos",
"videos"
],
"type": "string",
"description": "ReelsFarm asset library category that contains the referenced file."
},
"muteGlobalAudio": {
"type": "boolean",
"description": "When true, exclude global audio while this video part plays."
},
"muteSourceAudio": {
"type": "boolean",
"description": "When true, remove audio from this video part before composition."
}
},
"additionalProperties": false
},
"maxItems": 10,
"minItems": 1,
"description": "Ordered video parts used to assemble the UGC video. Each part must provide exactly one videoId or videoUrl."
},
"dryRun": {
"type": "boolean",
"description": "Validate only: nothing is saved, charged or queued."
},
"caption": {
"type": "string",
"description": "Caption text. Omit it for no caption."
},
"demoUrl": {
"type": "string",
"description": "Public HTTPS URL or authorized ReelsFarm URL of the demo video."
},
"hookUrl": {
"type": "string",
"description": "Public HTTPS URL or authorized ReelsFarm URL of the hook video."
},
"quality": {
"enum": [
"medium",
"high"
],
"type": "string",
"description": "Requested rendering or generation quality supported by the selected workflow."
},
"audioUrl": {
"type": "string",
"description": "Public HTTPS URL or authorized ReelsFarm URL of the source audio track."
},
"textPosition": {
"enum": [
"TOP",
"MIDDLE",
"BOTTOM"
],
"type": "string",
"description": "Vertical position of the caption or slideshow text."
},
"idempotencyKey": {
"type": "string",
"pattern": "^[A-Za-z0-9._:-]+$",
"maxLength": 200,
"minLength": 8,
"description": "Stable key for this action, reused only on retries. Required in Creator and Autopilot."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "UGC_VIDEO",
"description": "ReelsFarm media or generation kind used to filter the result."
},
"jobId": {
"type": "string",
"description": "ID of the ReelsFarm job."
},
"dryRun": {
"type": "boolean",
"description": "Validate only: nothing is saved, charged or queued."
},
"status": {
"enum": [
"PENDING",
"PROCESSING",
"COMPLETED",
"FAILED"
],
"type": "string",
"description": "ReelsFarm lifecycle status used for the requested resource or filter."
},
"summary": {
"type": "string",
"description": "Short explanation of the changes made by a slideshow revision."
},
"executed": {
"type": "boolean",
"description": "True when ReelsFarm executed the action instead of preparing a confirmation."
},
"nextStep": {
"type": "string",
"description": "Short instruction for continuing the prepared workflow."
},
"provider": {
"type": "string",
"const": "reelsfarm",
"description": "Service that executed or prepared this action. A value of reelsfarm is required before attributing a result to ReelsFarm."
},
"toolName": {
"type": "string",
"description": "Exact public MCP tool associated with this prepared action or result."
},
"expiresAt": {
"type": "string",
"description": "ISO 8601 date and time when this prepared action expires."
},
"operation": {
"type": "object",
"description": "Durable MCP operation state and result data.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"actionType": {
"type": "string",
"description": "Stable ReelsFarm action category used for policy and operation tracking."
},
"policyCode": {
"type": "string",
"description": "Stable code that explains the server authorization decision."
},
"sourceTool": {
"type": "string",
"description": "Public ReelsFarm MCP tool responsible for this execution state."
},
"operationId": {
"type": "string",
"description": "UUID of the ReelsFarm MCP operation to inspect."
},
"assetCreated": {
"type": "boolean",
"description": "True only when this response contains a completed media asset created by ReelsFarm."
},
"resultMessage": {
"type": "string",
"description": "Human-readable rule for accurately presenting this ReelsFarm result."
},
"confirmationId": {
"type": "string",
"description": "Short-lived ReelsFarm confirmation identifier returned by a prepared action."
},
"connectionMode": {
"enum": [
"REVIEW",
"CREATOR",
"AUTOPILOT"
],
"type": "string",
"description": "Effective Review, Creator, or Autopilot mode for this action."
},
"creditEstimate": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Estimated credit cost, or null when the cost cannot be fixed in advance."
},
"executionState": {
"enum": [
"NOT_STARTED",
"PREPARED",
"ENQUEUED",
"PROCESSING",
"COMPLETED",
"FAILED"
],
"type": "string",
"description": "Authoritative ReelsFarm execution state. Only COMPLETED can support a completion claim."
},
"policyDecision": {
"enum": [
"ALLOW",
"REQUIRE_CONFIRMATION",
"DENY",
"REQUIRE_DASHBOARD"
],
"type": "string",
"description": "Server authorization decision applied to this action."
},
"confirmationTool": {
"type": "string",
"description": "The public tool that confirms only this prepared operation after explicit user approval."
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
Start animating a completed ReelsFarm avatar image into a short ReelsFarm video hook with Veo or Seedance when the connection policy allows it. Use the avatar.imageUrl returned by reelsfarm_get_avatar_job_status after it reports COMPLETED. Poll reelsfarm_get_generated_hook_status to COMPLETED before claiming a video exists. Never use a product upload session for the avatar handoff. For text-to-video, start and end frames, reference media, other durations, or other models, use reelsfarm_prepare_generate_video.
The description explains the capability, when to use it, and what to expect.
Inputs86/100
Explain what happens when this optional value is omitted.
avatarUrl
Authorized ReelsFarm avatar URL returned by a completed ReelsFarm avatar job or selected from ReelsFarm. Do not substitute a client-native generated image or a product upload URL.
Clear enough to supply this argument.
preset
Predefined hook motion preset. The reactions open proven app-promo hooks: shocked (for "wdym you don't have to..."), grateful ("i'll never forget the girl who..."), looks_up ("girl to girl:", "POV:"), fed_up (pain call-outs), confident (hot takes); also nod_smile and subtle_pan. surprised_reaction is the older, milder surprise. Omitted, it is subtle_pan. customPrompt is added after the preset's motion and does not replace it, so pick the preset closest to the motion you want.
Clear enough to supply this argument.
model
Generation model identifier. Omit it to use the ReelsFarm default model.
Clear enough to supply this argument.
durationSeconds
Requested video duration in seconds. Supported values depend on the selected model.
Explain what happens when this optional value is omitted.
includeAudio
When true, ask the selected hook model to generate spoken audio from scriptText.
Explain what happens when this optional value is omitted.
scriptText
Spoken hook script, limited to 220 characters. Required when includeAudio is true.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
customPrompt
Optional motion or scene instructions added to the standard generation prompt.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
idempotencyKey
Stable key for this action, reused only on retries. Required in Creator and Autopilot.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
dryRun
Validate only: nothing is saved, charged or queued.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description94/100
Start an async video in the ReelsFarm Videos workbench when the connection policy allows it. It supports text-to-video, an animated start image with an optional end image, or up to three reference images (Seedance also accepts one reference video and one reference audio file). Models: seedance-2.5 (default), seedance-2, seedance-2-fast, veo-3.1, veo-3.1-fast, and gemini-omni-1.1-flash. Use owned ReelsFarm asset URLs for frames and references. A short prompt is enough: by default (improvePrompt) it is rewritten into the form the model follows best, keeping every detail and spoken word. Seedance makes 9:16, 16:9, 1:1, 3:4, 4:3, and 21:9; Veo and Omni make 9:16 and 16:9. Check reelsfarm_get_generation_pricing for per-model durations, aspect ratios, and prices. Poll reelsfarm_get_video_generation_status to COMPLETED, then use video.id with contentType UGC_VIDEO to publish. One video job (hook or workbench) runs at a time per account. For an avatar-led hook clip, use reelsfarm_prepare_generate_hook.
The description explains the capability, when to use it, and what to expect.
Inputs77/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
prompt
Description of the video to create, up to 4000 characters. Describe sound here when the model generates audio.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
model
Video model. Seedance models allow 4-15 seconds, every aspect ratio (9:16, 16:9, 1:1, 3:4, 4:3, 21:9), and video or audio references. Veo models allow 4, 6, or 8 seconds at 9:16 or 16:9. gemini-omni-1.1-flash allows 4-10 seconds, 720p or 1080p, and always includes audio.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
durationSeconds
Clip length in seconds: 4, 6, 8, 10, 12, or 15. Each model supports a subset. Veo with reference images requires 8.
Resolve the mismatch between this description and its schema constraints.
aspectRatio
Output aspect ratio: 9:16 vertical, 16:9 landscape, 1:1 square, 3:4, 4:3, or 21:9 cinema. Veo and Omni models allow only 9:16 and 16:9.
Clear enough to supply this argument.
resolution
Output resolution. Only gemini-omni-1.1-flash offers a choice; omit it to use the model resolution.
Clear enough to supply this argument.
includeAudio
Generate native audio. No speech script is needed. Must be true for gemini-omni-1.1-flash.
Clear enough to supply this argument.
category
Library category for the finished video: people, product, or scenes.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
collectionId
UUID of a user-owned media collection that receives the finished video.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
firstFrameUrl
Owned ReelsFarm image URL to animate as the starting frame. Do not combine frames with reference media.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
lastFrameUrl
Owned ReelsFarm image URL for the ending frame. Requires firstFrameUrl.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
referenceImageUrls
Up to three owned ReelsFarm image URLs that guide the subject, product, scene, or style.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
referenceVideoUrls
Up to one owned ReelsFarm video URL used as a motion or style reference. Seedance models only. Use 2-15 seconds (2-30 for seedance-2.5). It is billed for its length plus the clip length, at a lower per-second rate.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
referenceAudioUrls
Up to one owned ReelsFarm audio URL used as a sound reference. Seedance models only; also add an image or video reference. Use 2-15 seconds (2-30 for seedance-2.5).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
motionPreset
With a firstFrameUrl of a person: the hook reaction the video opens with (shocked, grateful, looks_up, fed_up, confident, nod_smile, subtle_pan). It adds the reaction and the hook timing rules before the prompt. Ignored without a firstFrameUrl. Omit to send the prompt as written.
Resolve the mismatch between this description and its schema constraints.
improvePrompt
Rewrite the prompt into the form the model follows best: one concrete action that fits the clip length, the place, the look and its light, the shot and one camera move, and the sound when includeAudio is true. The aspect ratio, frames and references shape the rewrite. Every detail and spoken word of the prompt stays, and a prompt that already covers all of this is sent unchanged. The status tool returns the result as improvedPrompt. Set false, with naturalSpeech false, to send the prompt exactly as written. A motionPreset uses its own direction instead.
Clear enough to supply this argument.
naturalSpeech
With includeAudio and someone speaking: give each spoken line a tone and an action, the sound of the place, a still close shot for lip sync, and the model's dialogue syntax, so the voice sounds like a real person. The spoken words never change. Set false to keep the delivery as written.
Clear enough to supply this argument.
camera
Camera move for the whole clip, on every model: static (tripod), handheld (phone with a small shake), push_in (slowly toward the subject), pull_back (from close, back to show the place), pan (turns across the scene), orbit (circles the subject), follow (moves with the subject), drone_rise (aerial, rising). It wins over camera words in the prompt. Omit to let the prompt rewrite choose. Not with a motionPreset.
Clear enough to supply this argument.
look
Look and light, on every model: phone_ugc (real phone footage), studio_product (clean studio light), golden_hour (low warm sun), cinematic (soft film look, shallow focus), flash_night (direct flash at night), vintage_film (faded color, film grain). It wins over look words in the prompt. Omit to let the prompt rewrite choose. Not with a firstFrameUrl, which already sets the look, or a motionPreset.
Clear enough to supply this argument.
shots
one for one continuous shot, cuts for two or three shots joined by hard cuts in one clip. cuts needs a Seedance model and 8 seconds or more; other models always make one shot. Omit for one shot unless the prompt asks for cuts. Not with a motionPreset.
Clear enough to supply this argument.
conversationId
UUID that groups related videos in the dashboard Videos history. Omit it to start a new conversation.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
idempotencyKey
Stable key for this action, reused only on retries. Required in Creator and Autopilot.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
dryRun
Validate only: nothing is saved, charged or queued.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
{
"name": "reelsfarm_prepare_generate_video",
"title": "Prepare Video Generation",
"description": "Start an async video in the ReelsFarm Videos workbench when the connection policy allows it. It supports text-to-video, an animated start image with an optional end image, or up to three reference images (Seedance also accepts one reference video and one reference audio file). Models: seedance-2.5 (default), seedance-2, seedance-2-fast, veo-3.1, veo-3.1-fast, and gemini-omni-1.1-flash. Use owned ReelsFarm asset URLs for frames and references. A short prompt is enough: by default (improvePrompt) it is rewritten into the form the model follows best, keeping every detail and spoken word. Seedance makes 9:16, 16:9, 1:1, 3:4, 4:3, and 21:9; Veo and Omni make 9:16 and 16:9. Check reelsfarm_get_generation_pricing for per-model durations, aspect ratios, and prices. Poll reelsfarm_get_video_generation_status to COMPLETED, then use video.id with contentType UGC_VIDEO to publish. One video job (hook or workbench) runs at a time per account. For an avatar-led hook clip, use reelsfarm_prepare_generate_hook.",
"inputSchema": {
"type": "object",
"required": [
"prompt"
],
"properties": {
"look": {
"enum": [
"phone_ugc",
"studio_product",
"golden_hour",
"cinematic",
"flash_night",
"vintage_film"
],
"type": "string",
"description": "Look and light, on every model: phone_ugc (real phone footage), studio_product (clean studio light), golden_hour (low warm sun), cinematic (soft film look, shallow focus), flash_night (direct flash at night), vintage_film (faded color, film grain). It wins over look words in the prompt. Omit to let the prompt rewrite choose. Not with a firstFrameUrl, which already sets the look, or a motionPreset."
},
"model": {
"enum": [
"seedance-2.5",
"seedance-2",
"seedance-2-fast",
"veo-3.1-fast",
"veo-3.1",
"gemini-omni-1.1-flash"
],
"type": "string",
"default": "seedance-2.5",
"description": "Video model. Seedance models allow 4-15 seconds, every aspect ratio (9:16, 16:9, 1:1, 3:4, 4:3, 21:9), and video or audio references. Veo models allow 4, 6, or 8 seconds at 9:16 or 16:9. gemini-omni-1.1-flash allows 4-10 seconds, 720p or 1080p, and always includes audio."
},
"shots": {
"enum": [
"one",
"cuts"
],
"type": "string",
"description": "one for one continuous shot, cuts for two or three shots joined by hard cuts in one clip. cuts needs a Seedance model and 8 seconds or more; other models always make one shot. Omit for one shot unless the prompt asks for cuts. Not with a motionPreset."
},
"camera": {
"enum": [
"static",
"handheld",
"push_in",
"pull_back",
"pan",
"orbit",
"follow",
"drone_rise"
],
"type": "string",
"description": "Camera move for the whole clip, on every model: static (tripod), handheld (phone with a small shake), push_in (slowly toward the subject), pull_back (from close, back to show the place), pan (turns across the scene), orbit (circles the subject), follow (moves with the subject), drone_rise (aerial, rising). It wins over camera words in the prompt. Omit to let the prompt rewrite choose. Not with a motionPreset."
},
"dryRun": {
"type": "boolean",
"description": "Validate only: nothing is saved, charged or queued."
},
"prompt": {
"type": "string",
"maxLength": 4000,
"minLength": 1,
"description": "Description of the video to create, up to 4000 characters. Describe sound here when the model generates audio."
},
"category": {
"enum": [
"people",
"product",
"scenes"
],
"type": "string",
"default": "scenes",
"description": "Library category for the finished video: people, product, or scenes."
},
"resolution": {
"enum": [
"720p",
"1080p"
],
"type": "string",
"description": "Output resolution. Only gemini-omni-1.1-flash offers a choice; omit it to use the model resolution."
},
"aspectRatio": {
"enum": [
"9:16",
"16:9",
"1:1",
"3:4",
"4:3",
"21:9"
],
"type": "string",
"default": "9:16",
"description": "Output aspect ratio: 9:16 vertical, 16:9 landscape, 1:1 square, 3:4, 4:3, or 21:9 cinema. Veo and Omni models allow only 9:16 and 16:9."
},
"collectionId": {
"type": "string",
"format": "uuid",
"description": "UUID of a user-owned media collection that receives the finished video."
},
"includeAudio": {
"type": "boolean",
"default": false,
"description": "Generate native audio. No speech script is needed. Must be true for gemini-omni-1.1-flash."
},
"lastFrameUrl": {
"type": "string",
"maxLength": 4000,
"minLength": 1,
"description": "Owned ReelsFarm image URL for the ending frame. Requires firstFrameUrl."
},
"motionPreset": {
"enum": [
"subtle_pan",
"shocked",
"grateful",
"looks_up",
"fed_up",
"confident",
"nod_smile",
"surprised_reaction"
],
"type": "string",
"description": "With a firstFrameUrl of a person: the hook reaction the video opens with (shocked, grateful, looks_up, fed_up, confident, nod_smile, subtle_pan). It adds the reaction and the hook timing rules before the prompt. Ignored without a firstFrameUrl. Omit to send the prompt as written."
},
"firstFrameUrl": {
"type": "string",
"maxLength": 4000,
"minLength": 1,
"description": "Owned ReelsFarm image URL to animate as the starting frame. Do not combine frames with reference media."
},
"improvePrompt": {
"type": "boolean",
"default": true,
"description": "Rewrite the prompt into the form the model follows best: one concrete action that fits the clip length, the place, the look and its light, the shot and one camera move, and the sound when includeAudio is true. The aspect ratio, frames and references shape the rewrite. Every detail and spoken word of the prompt stays, and a prompt that already covers all of this is sent unchanged. The status tool returns the result as improvedPrompt. Set false, with naturalSpeech false, to send the prompt exactly as written. A motionPreset uses its own direction instead."
},
"naturalSpeech": {
"type": "boolean",
"default": true,
"description": "With includeAudio and someone speaking: give each spoken line a tone and an action, the sound of the place, a still close shot for lip sync, and the model's dialogue syntax, so the voice sounds like a real person. The spoken words never change. Set false to keep the delivery as written."
},
"conversationId": {
"type": "string",
"format": "uuid",
"description": "UUID that groups related videos in the dashboard Videos history. Omit it to start a new conversation."
},
"idempotencyKey": {
"type": "string",
"pattern": "^[A-Za-z0-9._:-]+$",
"maxLength": 200,
"minLength": 8,
"description": "Stable key for this action, reused only on retries. Required in Creator and Autopilot."
},
"durationSeconds": {
"type": "integer",
"default": 4,
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Clip length in seconds: 4, 6, 8, 10, 12, or 15. Each model supports a subset. Veo with reference images requires 8."
},
"referenceAudioUrls": {
"type": "array",
"items": {
"type": "string",
"maxLength": 4000,
"minLength": 1
},
"default": [],
"maxItems": 1,
"description": "Up to one owned ReelsFarm audio URL used as a sound reference. Seedance models only; also add an image or video reference. Use 2-15 seconds (2-30 for seedance-2.5)."
},
"referenceImageUrls": {
"type": "array",
"items": {
"type": "string",
"maxLength": 4000,
"minLength": 1
},
"default": [],
"maxItems": 3,
"description": "Up to three owned ReelsFarm image URLs that guide the subject, product, scene, or style."
},
"referenceVideoUrls": {
"type": "array",
"items": {
"type": "string",
"maxLength": 4000,
"minLength": 1
},
"default": [],
"maxItems": 1,
"description": "Up to one owned ReelsFarm video URL used as a motion or style reference. Seedance models only. Use 2-15 seconds (2-30 for seedance-2.5). It is billed for its length plus the clip length, at a lower per-second rate."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"properties": {
"id": {},
"jobs": {},
"kind": {},
"asset": {},
"draft": {},
"error": {},
"jobId": {},
"total": {},
"video": {},
"avatar": {},
"cached": {},
"dryRun": {},
"failed": {},
"prompt": {},
"result": {},
"status": {},
"deleted": {},
"product": {},
"purgeAt": {},
"summary": {},
"trashId": {},
"updated": {},
"executed": {},
"nextStep": {},
"provider": {},
"restored": {},
"toolName": {},
"character": {},
"completed": {},
"createdAt": {},
"deletedAt": {},
"expiresAt": {},
"operation": {},
"slideshow": {},
"actionType": {},
"automation": {},
"policyCode": {},
"sourceTool": {},
"creditsCost": {},
"operationId": {},
"slideshowId": {},
"assetCreated": {},
"purgeDeferred": {},
"resultMessage": {},
"scheduledPost": {},
"confirmationId": {},
"connectionMode": {},
"conversationId": {},
"creditEstimate": {},
"executionState": {},
"policyDecision": {},
"confirmationTool": {},
"parentGenerationId": {}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description46/100
Prepare an AI Clone motion-control job.
Describe the concrete operation and its scope instead of restating the tool name.
Inputs79/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
avatarUrl
Authorized ReelsFarm avatar URL returned by a completed ReelsFarm avatar job or selected from ReelsFarm. Do not substitute a client-native generated image or a product upload URL.
Clear enough to supply this argument.
motionVideoUrl
Public HTTPS URL or authorized ReelsFarm URL of the motion-reference video.
Clear enough to supply this argument.
prompt
Natural-language instructions for the requested content generation.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
mode
Which records or behavior to use.
Resolve the mismatch between this description and its schema constraints.
characterOrientation
Preferred character framing or orientation for the generated scene.
Explain the meaning of this value, not just its name.
enableVoiceConversion
When true, convert the motion video voice with the selected ElevenLabs voice.
Explain what happens when this optional value is omitted.
voiceAudioUrl
Public HTTPS URL or authorized ReelsFarm URL of the source voice audio.
Explain what happens when this optional value is omitted.
voiceId
ElevenLabs shared voice identifier returned by reelsfarm_list_ai_clone_voices.
Clear enough to supply this argument.
voiceModelId
ElevenLabs speech-to-speech model identifier. Omit it to use the configured default.
Clear enough to supply this argument.
removeBackgroundNoise
When true, ask ElevenLabs to reduce background noise during voice conversion.
Clear enough to supply this argument.
idempotencyKey
Stable key for this action, reused only on retries. Required in Creator and Autopilot.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
dryRun
Validate only: nothing is saved, charged or queued.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description71/100
Prepare AI text generation for slideshow slides, with optional Max mode visual references. Set design for a designed Look (tweet, imessage, notebook, magazine) or auto; designed slides come back with a design object instead of text items.
The description explains the capability, when to use it, and what to expect.
Inputs88/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
prompt
Natural-language instructions for the requested content generation.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
slideshowType
Content strategy used to generate or revise slideshow text.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
slideCount
Requested number of generated slideshow slides, from 1 through 20.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
productContextId
UUID of the saved ReelsFarm product context. Omit it when no saved context applies.
Clear enough to supply this argument.
maxMode
When true, enable the higher-quality slideshow generation mode and allow visualContext.
Explain what happens when this optional value is omitted.
effort
Effort preset, as in the dashboard: light, low, medium, high, or extra_high. Higher effort uses more visual references (0, 2, 5, 10, or 20) and more model time; extra_high also reviews the rendered text layout. Omit it for the legacy behavior, which allows up to five visual references.
Clear enough to supply this argument.
visualContext › items › order
Zero-based position.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
visualContext › items › imageUrl
Public HTTPS URL or authorized ReelsFarm URL of the source image.
Clear enough to supply this argument.
visualContext › items › aspectRatio
Aspect ratio of this slide image. Text layout checks assume 1:1 when it is omitted.
Clear enough to supply this argument.
format
A proven slideshow format the copy follows: help-me-choose (Numbered options of one kind; viewers vote for a number in the comments., 6 slides); numbered-product-last (A list worth saving, with the product as the last item., 6 slides); rated-picks (Personal favourites, each with an honest rating; viewers add theirs., 6 slides); problem-math-steps (A specific problem, what it really costs, then the steps to fix it., 6 slides). It sets the slideshow type and, when slideCount is left out, the slide count. Omit it to let the AI pick the structure.
Clear enough to supply this argument.
design
The Look. tweet: every slide is a post on X over the blurred photo. imessage: one text conversation that grows slide by slide, with no photos (no visualContext needed). notebook: torn grid paper with numbered points. magazine: a magazine cover on slide 1 (use a photo of a person), then photo slides. auto: ReelsFarm picks a look only when the prompt asks for one or plainly is one, otherwise classic. classic or omitted: photo slides with text items. Designed slides come back with a design object and no text items.
Clear enough to supply this argument.
idempotencyKey
Stable key for this action, reused only on retries. Required in Creator and Autopilot.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
dryRun
Validate only: nothing is saved, charged or queued.
{
"name": "reelsfarm_prepare_generate_slideshow_text",
"title": "Prepare Slideshow Text Generation",
"description": "Prepare AI text generation for slideshow slides, with optional Max mode visual references. Set design for a designed Look (tweet, imessage, notebook, magazine) or auto; designed slides come back with a design object instead of text items.",
"inputSchema": {
"type": "object",
"required": [
"prompt"
],
"properties": {
"design": {
"enum": [
"auto",
"classic",
"tweet",
"imessage",
"notebook",
"magazine"
],
"type": "string",
"description": "The Look. tweet: every slide is a post on X over the blurred photo. imessage: one text conversation that grows slide by slide, with no photos (no visualContext needed). notebook: torn grid paper with numbered points. magazine: a magazine cover on slide 1 (use a photo of a person), then photo slides. auto: ReelsFarm picks a look only when the prompt asks for one or plainly is one, otherwise classic. classic or omitted: photo slides with text items. Designed slides come back with a design object and no text items."
},
"dryRun": {
"type": "boolean",
"description": "Validate only: nothing is saved, charged or queued."
},
"effort": {
"enum": [
"light",
"low",
"medium",
"high",
"extra_high"
],
"type": "string",
"description": "Effort preset, as in the dashboard: light, low, medium, high, or extra_high. Higher effort uses more visual references (0, 2, 5, 10, or 20) and more model time; extra_high also reviews the rendered text layout. Omit it for the legacy behavior, which allows up to five visual references."
},
"format": {
"enum": [
"help-me-choose",
"numbered-product-last",
"rated-picks",
"problem-math-steps"
],
"type": "string",
"description": "A proven slideshow format the copy follows: help-me-choose (Numbered options of one kind; viewers vote for a number in the comments., 6 slides); numbered-product-last (A list worth saving, with the product as the last item., 6 slides); rated-picks (Personal favourites, each with an honest rating; viewers add theirs., 6 slides); problem-math-steps (A specific problem, what it really costs, then the steps to fix it., 6 slides). It sets the slideshow type and, when slideCount is left out, the slide count. Omit it to let the AI pick the structure."
},
"prompt": {
"type": "string",
"minLength": 1,
"description": "Natural-language instructions for the requested content generation."
},
"maxMode": {
"type": "boolean",
"description": "When true, enable the higher-quality slideshow generation mode and allow visualContext."
},
"slideCount": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "Requested number of generated slideshow slides, from 1 through 20."
},
"slideshowType": {
"enum": [
"EDUCATIONAL",
"PROMOTIONAL",
"STORYTELLING",
"LIFESTYLE",
"REVIEW"
],
"type": "string",
"description": "Content strategy used to generate or revise slideshow text."
},
"visualContext": {
"type": "array",
"items": {
"type": "object",
"required": [
"order",
"imageUrl"
],
"properties": {
"order": {
"type": "integer",
"maximum": 19,
"minimum": 0,
"description": "Zero-based position."
},
"imageUrl": {
"type": "string",
"maxLength": 2048,
"minLength": 1,
"description": "Public HTTPS URL or authorized ReelsFarm URL of the source image."
},
"aspectRatio": {
"enum": [
"4:5",
"9:16",
"3:4",
"1:1"
],
"type": "string",
"description": "Aspect ratio of this slide image. Text layout checks assume 1:1 when it is omitted."
}
},
"additionalProperties": false
},
"maxItems": 20,
"description": "Ordered slide images used as visual references. maxMode must be true. Send up to five without effort, or up to 20 with effort."
},
"idempotencyKey": {
"type": "string",
"pattern": "^[A-Za-z0-9._:-]+$",
"maxLength": 200,
"minLength": 8,
"description": "Stable key for this action, reused only on retries. Required in Creator and Autopilot."
},
"productContextId": {
"type": "string",
"format": "uuid",
"description": "UUID of the saved ReelsFarm product context. Omit it when no saved context applies."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"properties": {
"id": {},
"jobs": {},
"kind": {},
"asset": {},
"draft": {},
"error": {},
"jobId": {},
"total": {},
"video": {},
"avatar": {},
"cached": {},
"dryRun": {},
"failed": {},
"prompt": {},
"result": {},
"status": {},
"deleted": {},
"product": {},
"purgeAt": {},
"summary": {},
"trashId": {},
"updated": {},
"executed": {},
"nextStep": {},
"provider": {},
"restored": {},
"toolName": {},
"character": {},
"completed": {},
"createdAt": {},
"deletedAt": {},
"expiresAt": {},
"operation": {},
"slideshow": {},
"actionType": {},
"automation": {},
"policyCode": {},
"sourceTool": {},
"creditsCost": {},
"operationId": {},
"slideshowId": {},
"assetCreated": {},
"purgeDeferred": {},
"resultMessage": {},
"scheduledPost": {},
"confirmationId": {},
"connectionMode": {},
"conversationId": {},
"creditEstimate": {},
"executionState": {},
"policyDecision": {},
"confirmationTool": {},
"parentGenerationId": {}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description68/100
Prepare a conversational revision of existing slideshow text and text presentation. The result keeps a complete slide state and can use optional Max mode visual references.
Describe the concrete operation and its scope instead of restating the tool name.
Inputs93/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
instruction
Natural-language revision instruction applied to the existing content.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
slideshowType
Content strategy used to generate or revise slideshow text.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
productContextId
UUID of the saved ReelsFarm product context. Omit it when no saved context applies.
Clear enough to supply this argument.
slides › items › order
Zero-based position.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
slides › items › textItems › items › text
Text rendered on the slideshow or used by the content workflow.
Clear enough to supply this argument.
slides › items › textItems › items › fontSize
CSS pixel font size used to render the slideshow text.
Clear enough to supply this argument.
slides › items › textItems › items › textStyle
ReelsFarm visual style applied to the slideshow text.
Clear enough to supply this argument.
slides › items › textItems › items › textPosition
Vertical position of the caption or slideshow text.
Clear enough to supply this argument.
slides › items › textItems › items › textAlign
Horizontal alignment of the slideshow text.
Clear enough to supply this argument.
slides › items › textItems › items › textType
Semantic role of the slideshow text: title or body.
Clear enough to supply this argument.
slides › items › textItems › items › fontWeight
Numeric font weight. Use 500 for medium text or 700 for bold text.
TikTok text font, such as classic, elegance, retro, typewriter, neon or handwriting. Omit it for Classic.
Clear enough to supply this argument.
slides › items › textItems › items › textEffect
TikTok text mode: none, outline, background or translucent. When set, it and textColor replace textStyle.
Clear enough to supply this argument.
slides › items › textItems › items › textColor
Hex colour such as #ea403f: the text colour for none, the outline colour for outline, the box colour otherwise.
Clear enough to supply this argument.
slides › items › textItems › items › lineWidthEm
Longest line in em (multiples of the font size), from 4 to 40. Omit it: the width then follows the text. Set it only to copy a reference slideshow.
Clear enough to supply this argument.
slides › items › textItems › items › textX
Optional exact position: the horizontal centre of the text column, from 0 (left edge) to 1 (right edge). Only used with textY; 0.5 when omitted.
Clear enough to supply this argument.
slides › items › textItems › items › textY
Optional exact position: the vertical centre of the text column, from 0 (top) to 1 (bottom). When set it replaces textPosition. Items with the same textX and textY stack in one column.
Clear enough to supply this argument.
slides › items › design
The slide's designed look, from reelsfarm_get_slideshow, unchanged. A revision rewrites a design's words instead of its text items.
Resolve the mismatch between this description and its schema constraints.
maxMode
When true, enable the higher-quality slideshow generation mode and allow visualContext.
Clear enough to supply this argument.
effort
Effort preset, as in the dashboard: light, low, medium, high, or extra_high. Higher effort uses more visual references (0, 2, 5, 10, or 20) and more model time; extra_high also reviews the rendered text layout. Omit it for the legacy behavior, which allows up to five visual references.
Clear enough to supply this argument.
visualContext › items › order
Zero-based position.
Clear enough to supply this argument.
visualContext › items › imageUrl
Public HTTPS URL or authorized ReelsFarm URL of the source image.
Clear enough to supply this argument.
visualContext › items › aspectRatio
Aspect ratio of this slide image. Text layout checks assume 1:1 when it is omitted.
Clear enough to supply this argument.
idempotencyKey
Stable key for this action, reused only on retries. Required in Creator and Autopilot.
Clear enough to supply this argument.
dryRun
Validate only: nothing is saved, charged or queued.
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "SLIDESHOW_REVISION",
"description": "ReelsFarm media or generation kind used to filter the result."
},
"jobId": {
"type": "string",
"description": "ID of the ReelsFarm job."
},
"dryRun": {
"type": "boolean",
"description": "Validate only: nothing is saved, charged or queued."
},
"status": {
"enum": [
"PENDING",
"PROCESSING",
"COMPLETED",
"FAILED"
],
"type": "string",
"description": "ReelsFarm lifecycle status used for the requested resource or filter."
},
"summary": {
"type": "string",
"description": "Short explanation of the changes made by a slideshow revision."
},
"executed": {
"type": "boolean",
"description": "True when ReelsFarm executed the action instead of preparing a confirmation."
},
"nextStep": {
"type": "string",
"description": "Short instruction for continuing the prepared workflow."
},
"provider": {
"type": "string",
"const": "reelsfarm",
"description": "Service that executed or prepared this action. A value of reelsfarm is required before attributing a result to ReelsFarm."
},
"toolName": {
"type": "string",
"description": "Exact public MCP tool associated with this prepared action or result."
},
"expiresAt": {
"type": "string",
"description": "ISO 8601 date and time when this prepared action expires."
},
"operation": {
"type": "object",
"description": "Durable MCP operation state and result data.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"actionType": {
"type": "string",
"description": "Stable ReelsFarm action category used for policy and operation tracking."
},
"policyCode": {
"type": "string",
"description": "Stable code that explains the server authorization decision."
},
"sourceTool": {
"type": "string",
"description": "Public ReelsFarm MCP tool responsible for this execution state."
},
"creditsCost": {
"type": "number",
"description": "Actual number of credits charged for the operation."
},
"operationId": {
"type": "string",
"description": "UUID of the ReelsFarm MCP operation to inspect."
},
"assetCreated": {
"type": "boolean",
"description": "True only when this response contains a completed media asset created by ReelsFarm."
},
"resultMessage": {
"type": "string",
"description": "Human-readable rule for accurately presenting this ReelsFarm result."
},
"confirmationId": {
"type": "string",
"description": "Short-lived ReelsFarm confirmation identifier returned by a prepared action."
},
"connectionMode": {
"enum": [
"REVIEW",
"CREATOR",
"AUTOPILOT"
],
"type": "string",
"description": "Effective Review, Creator, or Autopilot mode for this action."
},
"creditEstimate": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Estimated credit cost, or null when the cost cannot be fixed in advance."
},
"executionState": {
"enum": [
"NOT_STARTED",
"PREPARED",
"ENQUEUED",
"PROCESSING",
"COMPLETED",
"FAILED"
],
"type": "string",
"description": "Authoritative ReelsFarm execution state. Only COMPLETED can support a completion claim."
},
"policyDecision": {
"enum": [
"ALLOW",
"REQUIRE_CONFIRMATION",
"DENY",
"REQUIRE_DASHBOARD"
],
"type": "string",
"description": "Server authorization decision applied to this action."
},
"confirmationTool": {
"type": "string",
"description": "The public tool that confirms only this prepared operation after explicit user approval."
}
},
"additionalProperties": false
}
Original tool metadata
{
"name": "reelsfarm_prepare_revise_slideshow_text",
"title": "Prepare Slideshow Text Revision",
"description": "Prepare a conversational revision of existing slideshow text and text presentation. The result keeps a complete slide state and can use optional Max mode visual references.",
"inputSchema": {
"type": "object",
"required": [
"instruction",
"slides"
],
"properties": {
"dryRun": {
"type": "boolean",
"description": "Validate only: nothing is saved, charged or queued."
},
"effort": {
"enum": [
"light",
"low",
"medium",
"high",
"extra_high"
],
"type": "string",
"description": "Effort preset, as in the dashboard: light, low, medium, high, or extra_high. Higher effort uses more visual references (0, 2, 5, 10, or 20) and more model time; extra_high also reviews the rendered text layout. Omit it for the legacy behavior, which allows up to five visual references."
},
"slides": {
"type": "array",
"items": {
"type": "object",
"required": [
"order",
"textItems"
],
"properties": {
"order": {
"type": "integer",
"maximum": 19,
"minimum": 0,
"description": "Zero-based position."
},
"design": {
"anyOf": [
{
"type": "object"
},
{
"type": "null"
}
],
"description": "The slide's designed look, from reelsfarm_get_slideshow, unchanged. A revision rewrites a design's words instead of its text items."
},
"textItems": {
"type": "array",
"items": {
"type": "object",
"required": [
"text",
"fontSize",
"textStyle",
"textPosition",
"textAlign"
],
"properties": {
"text": {
"type": "string",
"maxLength": 1000,
"description": "Text rendered on the slideshow or used by the content workflow."
},
"textX": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Optional exact position: the horizontal centre of the text column, from 0 (left edge) to 1 (right edge). Only used with textY; 0.5 when omitted."
},
"textY": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Optional exact position: the vertical centre of the text column, from 0 (top) to 1 (bottom). When set it replaces textPosition. Items with the same textX and textY stack in one column."
},
"fontSize": {
"enum": [
"10px",
"12px",
"14px",
"16px",
"18px",
"20px",
"24px",
"28px",
"32px"
],
"type": "string",
"description": "CSS pixel font size used to render the slideshow text."
},
"textFont": {
"enum": [
"classic",
"elegance",
"retro",
"vintage",
"typewriter",
"comic",
"bold",
"serif",
"neon",
"handwriting",
"freehand",
"heavy",
"luxury",
"arcade",
"curiouscat",
"oblique",
"serene",
"telegraph",
"paintstroke",
"slab",
"phantom",
"postcard",
"script",
"technic"
],
"type": "string",
"description": "TikTok text font, such as classic, elegance, retro, typewriter, neon or handwriting. Omit it for Classic."
},
"textType": {
"enum": [
"title",
"body"
],
"type": "string",
"description": "Semantic role of the slideshow text: title or body."
},
"textAlign": {
"enum": [
"left",
"center",
"right"
],
"type": "string",
"description": "Horizontal alignment of the slideshow text."
},
"textColor": {
"type": "string",
"pattern": "^#[0-9a-f]{6}$",
"description": "Hex colour such as #ea403f: the text colour for none, the outline colour for outline, the box colour otherwise."
},
"textStyle": {
"enum": [
"outline",
"solid",
"shadow",
"neon",
"tiktok",
"white",
"black",
"yellow",
"pink",
"whiteBubble",
"blackBubble"
],
"type": "string",
"description": "ReelsFarm visual style applied to the slideshow text."
},
"fontWeight": {
"anyOf": [
{
"type": "number",
"const": 500
},
{
"type": "number",
"const": 700
}
],
"description": "Numeric font weight. Use 500 for medium text or 700 for bold text."
},
"textEffect": {
"enum": [
"none",
"outline",
"background",
"translucent"
],
"type": "string",
"description": "TikTok text mode: none, outline, background or translucent. When set, it and textColor replace textStyle."
},
"lineWidthEm": {
"type": "number",
"maximum": 40,
"minimum": 4,
"description": "Longest line in em (multiples of the font size), from 4 to 40. Omit it: the width then follows the text. Set it only to copy a reference slideshow."
},
"textPosition": {
"enum": [
"top",
"middle",
"bottom"
],
"type": "string",
"description": "Vertical position of the caption or slideshow text."
},
"textTransform": {
"enum": [
"uppercase",
"none"
],
"type": "string",
"description": "Text casing rule. Use uppercase or none."
}
},
"additionalProperties": false
},
"maxItems": 6,
"description": "Ordered text items drawn on this slide. One is usual; use up to six."
}
},
"additionalProperties": false
},
"maxItems": 20,
"minItems": 1,
"description": "Ordered slideshow slide definitions. Follow the nested slide schema and array limits."
},
"maxMode": {
"type": "boolean",
"description": "When true, enable the higher-quality slideshow generation mode and allow visualContext."
},
"instruction": {
"type": "string",
"minLength": 1,
"description": "Natural-language revision instruction applied to the existing content."
},
"slideshowType": {
"enum": [
"EDUCATIONAL",
"PROMOTIONAL",
"STORYTELLING",
"LIFESTYLE",
"REVIEW"
],
"type": "string",
"description": "Content strategy used to generate or revise slideshow text."
},
"visualContext": {
"type": "array",
"items": {
"type": "object",
"required": [
"order",
"imageUrl"
],
"properties": {
"order": {
"type": "integer",
"maximum": 19,
"minimum": 0,
"description": "Zero-based position."
},
"imageUrl": {
"type": "string",
"maxLength": 2048,
"minLength": 1,
"description": "Public HTTPS URL or authorized ReelsFarm URL of the source image."
},
"aspectRatio": {
"enum": [
"4:5",
"9:16",
"3:4",
"1:1"
],
"type": "string",
"description": "Aspect ratio of this slide image. Text layout checks assume 1:1 when it is omitted."
}
},
"additionalProperties": false
},
"maxItems": 20,
"description": "Ordered slide images used as visual references. maxMode must be true. Send up to five without effort, or up to 20 with effort."
},
"idempotencyKey": {
"type": "string",
"pattern": "^[A-Za-z0-9._:-]+$",
"maxLength": 200,
"minLength": 8,
"description": "Stable key for this action, reused only on retries. Required in Creator and Autopilot."
},
"productContextId": {
"type": "string",
"format": "uuid",
"description": "UUID of the saved ReelsFarm product context. Omit it when no saved context applies."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "SLIDESHOW_REVISION",
"description": "ReelsFarm media or generation kind used to filter the result."
},
"jobId": {
"type": "string",
"description": "ID of the ReelsFarm job."
},
"dryRun": {
"type": "boolean",
"description": "Validate only: nothing is saved, charged or queued."
},
"status": {
"enum": [
"PENDING",
"PROCESSING",
"COMPLETED",
"FAILED"
],
"type": "string",
"description": "ReelsFarm lifecycle status used for the requested resource or filter."
},
"summary": {
"type": "string",
"description": "Short explanation of the changes made by a slideshow revision."
},
"executed": {
"type": "boolean",
"description": "True when ReelsFarm executed the action instead of preparing a confirmation."
},
"nextStep": {
"type": "string",
"description": "Short instruction for continuing the prepared workflow."
},
"provider": {
"type": "string",
"const": "reelsfarm",
"description": "Service that executed or prepared this action. A value of reelsfarm is required before attributing a result to ReelsFarm."
},
"toolName": {
"type": "string",
"description": "Exact public MCP tool associated with this prepared action or result."
},
"expiresAt": {
"type": "string",
"description": "ISO 8601 date and time when this prepared action expires."
},
"operation": {
"type": "object",
"description": "Durable MCP operation state and result data.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"actionType": {
"type": "string",
"description": "Stable ReelsFarm action category used for policy and operation tracking."
},
"policyCode": {
"type": "string",
"description": "Stable code that explains the server authorization decision."
},
"sourceTool": {
"type": "string",
"description": "Public ReelsFarm MCP tool responsible for this execution state."
},
"creditsCost": {
"type": "number",
"description": "Actual number of credits charged for the operation."
},
"operationId": {
"type": "string",
"description": "UUID of the ReelsFarm MCP operation to inspect."
},
"assetCreated": {
"type": "boolean",
"description": "True only when this response contains a completed media asset created by ReelsFarm."
},
"resultMessage": {
"type": "string",
"description": "Human-readable rule for accurately presenting this ReelsFarm result."
},
"confirmationId": {
"type": "string",
"description": "Short-lived ReelsFarm confirmation identifier returned by a prepared action."
},
"connectionMode": {
"enum": [
"REVIEW",
"CREATOR",
"AUTOPILOT"
],
"type": "string",
"description": "Effective Review, Creator, or Autopilot mode for this action."
},
"creditEstimate": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Estimated credit cost, or null when the cost cannot be fixed in advance."
},
"executionState": {
"enum": [
"NOT_STARTED",
"PREPARED",
"ENQUEUED",
"PROCESSING",
"COMPLETED",
"FAILED"
],
"type": "string",
"description": "Authoritative ReelsFarm execution state. Only COMPLETED can support a completion claim."
},
"policyDecision": {
"enum": [
"ALLOW",
"REQUIRE_CONFIRMATION",
"DENY",
"REQUIRE_DASHBOARD"
],
"type": "string",
"description": "Server authorization decision applied to this action."
},
"confirmationTool": {
"type": "string",
"description": "The public tool that confirms only this prepared operation after explicit user approval."
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}
}
TikTok text font, such as classic, elegance, retro, typewriter, neon or handwriting. Omit it for Classic.
Clear enough to supply this argument.
slides › items › textItems › items › textEffect
TikTok text mode: none, outline, background or translucent. When set, it and textColor replace textStyle.
Clear enough to supply this argument.
slides › items › textItems › items › textColor
Hex colour such as #ea403f: the text colour for none, the outline colour for outline, the box colour otherwise.
Clear enough to supply this argument.
slides › items › textItems › items › lineWidthEm
Longest line in em (multiples of the font size), from 4 to 40. Omit it: the width then follows the text. Set it only to copy a reference slideshow.
Clear enough to supply this argument.
slides › items › textItems › items › textX
Optional exact position: the horizontal centre of the text column, from 0 (left edge) to 1 (right edge). Only used with textY; 0.5 when omitted.
Clear enough to supply this argument.
slides › items › textItems › items › textY
Optional exact position: the vertical centre of the text column, from 0 (top) to 1 (bottom). When set it replaces textPosition. Items with the same textX and textY stack in one column.
Clear enough to supply this argument.
slides › items › imageOpacity
Image opacity percentage from 0 through 100.
Clear enough to supply this argument.
slides › items › design
A design to draw instead of the saved one, shaped like a slide design from reelsfarm_get_slideshow, or null for a classic slide. Omit it to draw the saved design. Like textItems here, it changes the export only, not the saved slide.
Clear enough to supply this argument.
idempotencyKey
Stable key for this action, reused only on retries. Required in Creator and Autopilot.
Clear enough to supply this argument.
dryRun
Validate only: nothing is saved, charged or queued.
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "SLIDESHOW_EXPORT",
"description": "ReelsFarm media or generation kind used to filter the result."
},
"jobId": {
"type": "string",
"description": "ID of the ReelsFarm job."
},
"dryRun": {
"type": "boolean",
"description": "Validate only: nothing is saved, charged or queued."
},
"status": {
"enum": [
"PENDING",
"PROCESSING",
"COMPLETED",
"FAILED"
],
"type": "string",
"description": "ReelsFarm lifecycle status used for the requested resource or filter."
},
"summary": {
"type": "string",
"description": "Short explanation of the changes made by a slideshow revision."
},
"executed": {
"type": "boolean",
"description": "True when ReelsFarm executed the action instead of preparing a confirmation."
},
"nextStep": {
"type": "string",
"description": "Short instruction for continuing the prepared workflow."
},
"provider": {
"type": "string",
"const": "reelsfarm",
"description": "Service that executed or prepared this action. A value of reelsfarm is required before attributing a result to ReelsFarm."
},
"toolName": {
"type": "string",
"description": "Exact public MCP tool associated with this prepared action or result."
},
"expiresAt": {
"type": "string",
"description": "ISO 8601 date and time when this prepared action expires."
},
"operation": {
"type": "object",
"description": "Durable MCP operation state and result data.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"actionType": {
"type": "string",
"description": "Stable ReelsFarm action category used for policy and operation tracking."
},
"policyCode": {
"type": "string",
"description": "Stable code that explains the server authorization decision."
},
"sourceTool": {
"type": "string",
"description": "Public ReelsFarm MCP tool responsible for this execution state."
},
"creditsCost": {
"type": "number",
"description": "Actual number of credits charged for the operation."
},
"operationId": {
"type": "string",
"description": "UUID of the ReelsFarm MCP operation to inspect."
},
"assetCreated": {
"type": "boolean",
"description": "True only when this response contains a completed media asset created by ReelsFarm."
},
"resultMessage": {
"type": "string",
"description": "Human-readable rule for accurately presenting this ReelsFarm result."
},
"confirmationId": {
"type": "string",
"description": "Short-lived ReelsFarm confirmation identifier returned by a prepared action."
},
"connectionMode": {
"enum": [
"REVIEW",
"CREATOR",
"AUTOPILOT"
],
"type": "string",
"description": "Effective Review, Creator, or Autopilot mode for this action."
},
"creditEstimate": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Estimated credit cost, or null when the cost cannot be fixed in advance."
},
"executionState": {
"enum": [
"NOT_STARTED",
"PREPARED",
"ENQUEUED",
"PROCESSING",
"COMPLETED",
"FAILED"
],
"type": "string",
"description": "Authoritative ReelsFarm execution state. Only COMPLETED can support a completion claim."
},
"policyDecision": {
"enum": [
"ALLOW",
"REQUIRE_CONFIRMATION",
"DENY",
"REQUIRE_DASHBOARD"
],
"type": "string",
"description": "Server authorization decision applied to this action."
},
"confirmationTool": {
"type": "string",
"description": "The public tool that confirms only this prepared operation after explicit user approval."
}
},
"additionalProperties": false
}
Original tool metadata
{
"name": "reelsfarm_prepare_finalize_slideshow",
"title": "Prepare Slideshow Finalization",
"description": "Prepare rendering/upload of finalized slideshow slide images.",
"inputSchema": {
"type": "object",
"required": [
"slideshowId"
],
"properties": {
"dryRun": {
"type": "boolean",
"description": "Validate only: nothing is saved, charged or queued."
},
"slides": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"order",
"aspectRatio",
"textItems"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "ID of the ReelsFarm item."
},
"order": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-based position."
},
"design": {
"anyOf": [
{
"type": "object"
},
{
"type": "null"
}
],
"description": "A design to draw instead of the saved one, shaped like a slide design from reelsfarm_get_slideshow, or null for a classic slide. Omit it to draw the saved design. Like textItems here, it changes the export only, not the saved slide."
},
"textItems": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"text",
"fontSize",
"textSize",
"textStyle",
"textPosition"
],
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "ID of the ReelsFarm item."
},
"text": {
"type": "string",
"maxLength": 5000,
"description": "Text rendered on the slideshow or used by the content workflow."
},
"textX": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Optional exact position: the horizontal centre of the text column, from 0 (left edge) to 1 (right edge). Only used with textY; 0.5 when omitted."
},
"textY": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Optional exact position: the vertical centre of the text column, from 0 (top) to 1 (bottom). When set it replaces textPosition. Items with the same textX and textY stack in one column."
},
"fontSize": {
"type": "string",
"minLength": 1,
"description": "CSS pixel font size used to render the slideshow text."
},
"textFont": {
"enum": [
"classic",
"elegance",
"retro",
"vintage",
"typewriter",
"comic",
"bold",
"serif",
"neon",
"handwriting",
"freehand",
"heavy",
"luxury",
"arcade",
"curiouscat",
"oblique",
"serene",
"telegraph",
"paintstroke",
"slab",
"phantom",
"postcard",
"script",
"technic"
],
"type": "string",
"description": "TikTok text font, such as classic, elegance, retro, typewriter, neon or handwriting. Omit it for Classic."
},
"textSize": {
"type": "object",
"required": [
"width",
"height"
],
"properties": {
"width": {
"type": "number",
"minimum": 0,
"description": "Measured text width in pixels. Use a non-negative finite number."
},
"height": {
"type": "number",
"minimum": 0,
"description": "Measured text height in pixels. Use a non-negative finite number."
}
},
"description": "Measured text width and height used to reproduce the slideshow layout.",
"additionalProperties": false
},
"textType": {
"enum": [
"title",
"body"
],
"type": "string",
"description": "Semantic role of the slideshow text: title or body."
},
"textAlign": {
"enum": [
"left",
"center",
"right"
],
"type": "string",
"description": "Horizontal alignment of the slideshow text."
},
"textColor": {
"type": "string",
"pattern": "^#[0-9a-f]{6}$",
"description": "Hex colour such as #ea403f: the text colour for none, the outline colour for outline, the box colour otherwise."
},
"textStyle": {
"enum": [
"outline",
"solid",
"shadow",
"neon",
"tiktok",
"white",
"black",
"yellow",
"pink",
"whiteBubble",
"blackBubble"
],
"type": "string",
"description": "ReelsFarm visual style applied to the slideshow text."
},
"fontWeight": {
"anyOf": [
{
"type": "number",
"const": 500
},
{
"type": "number",
"const": 700
}
],
"description": "Numeric font weight. Use 500 for medium text or 700 for bold text."
},
"textEffect": {
"enum": [
"none",
"outline",
"background",
"translucent"
],
"type": "string",
"description": "TikTok text mode: none, outline, background or translucent. When set, it and textColor replace textStyle."
},
"lineWidthEm": {
"type": "number",
"maximum": 40,
"minimum": 4,
"description": "Longest line in em (multiples of the font size), from 4 to 40. Omit it: the width then follows the text. Set it only to copy a reference slideshow."
},
"textPosition": {
"enum": [
"top",
"middle",
"bottom"
],
"type": "string",
"description": "Vertical position of the caption or slideshow text."
},
"textTransform": {
"enum": [
"uppercase",
"none"
],
"type": "string",
"description": "Text casing rule. Use uppercase or none."
}
},
"additionalProperties": false
},
"description": "Ordered text items drawn on this slide. One is usual; use up to six."
},
"aspectRatio": {
"enum": [
"4:5",
"9:16",
"3:4",
"1:1"
],
"type": "string",
"description": "Width-to-height ratio."
},
"imageOpacity": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Image opacity percentage from 0 through 100."
}
},
"additionalProperties": false
},
"minItems": 1,
"description": "Ordered slideshow slide definitions. Follow the nested slide schema and array limits."
},
"slideshowId": {
"type": "string",
"minLength": 1,
"description": "UUID of the user-owned ReelsFarm slideshow."
},
"idempotencyKey": {
"type": "string",
"pattern": "^[A-Za-z0-9._:-]+$",
"maxLength": 200,
"minLength": 8,
"description": "Stable key for this action, reused only on retries. Required in Creator and Autopilot."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "SLIDESHOW_EXPORT",
"description": "ReelsFarm media or generation kind used to filter the result."
},
"jobId": {
"type": "string",
"description": "ID of the ReelsFarm job."
},
"dryRun": {
"type": "boolean",
"description": "Validate only: nothing is saved, charged or queued."
},
"status": {
"enum": [
"PENDING",
"PROCESSING",
"COMPLETED",
"FAILED"
],
"type": "string",
"description": "ReelsFarm lifecycle status used for the requested resource or filter."
},
"summary": {
"type": "string",
"description": "Short explanation of the changes made by a slideshow revision."
},
"executed": {
"type": "boolean",
"description": "True when ReelsFarm executed the action instead of preparing a confirmation."
},
"nextStep": {
"type": "string",
"description": "Short instruction for continuing the prepared workflow."
},
"provider": {
"type": "string",
"const": "reelsfarm",
"description": "Service that executed or prepared this action. A value of reelsfarm is required before attributing a result to ReelsFarm."
},
"toolName": {
"type": "string",
"description": "Exact public MCP tool associated with this prepared action or result."
},
"expiresAt": {
"type": "string",
"description": "ISO 8601 date and time when this prepared action expires."
},
"operation": {
"type": "object",
"description": "Durable MCP operation state and result data.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"actionType": {
"type": "string",
"description": "Stable ReelsFarm action category used for policy and operation tracking."
},
"policyCode": {
"type": "string",
"description": "Stable code that explains the server authorization decision."
},
"sourceTool": {
"type": "string",
"description": "Public ReelsFarm MCP tool responsible for this execution state."
},
"creditsCost": {
"type": "number",
"description": "Actual number of credits charged for the operation."
},
"operationId": {
"type": "string",
"description": "UUID of the ReelsFarm MCP operation to inspect."
},
"assetCreated": {
"type": "boolean",
"description": "True only when this response contains a completed media asset created by ReelsFarm."
},
"resultMessage": {
"type": "string",
"description": "Human-readable rule for accurately presenting this ReelsFarm result."
},
"confirmationId": {
"type": "string",
"description": "Short-lived ReelsFarm confirmation identifier returned by a prepared action."
},
"connectionMode": {
"enum": [
"REVIEW",
"CREATOR",
"AUTOPILOT"
],
"type": "string",
"description": "Effective Review, Creator, or Autopilot mode for this action."
},
"creditEstimate": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Estimated credit cost, or null when the cost cannot be fixed in advance."
},
"executionState": {
"enum": [
"NOT_STARTED",
"PREPARED",
"ENQUEUED",
"PROCESSING",
"COMPLETED",
"FAILED"
],
"type": "string",
"description": "Authoritative ReelsFarm execution state. Only COMPLETED can support a completion claim."
},
"policyDecision": {
"enum": [
"ALLOW",
"REQUIRE_CONFIRMATION",
"DENY",
"REQUIRE_DASHBOARD"
],
"type": "string",
"description": "Server authorization decision applied to this action."
},
"confirmationTool": {
"type": "string",
"description": "The public tool that confirms only this prepared operation after explicit user approval."
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description92/100
Prepare edits to a SCHEDULED post before it publishes: caption, time, timezone, and the publishing settings of each destination, such as TikTok delivery, privacy, and disclosures. Omitted fields keep their saved values. The media and the destination accounts cannot change; delete the post and schedule it again for that. Settings changes run the same checks as scheduling, including publishing preflight. Edits fail once the post has started publishing. The described operation can have destructive or irreversible effects, including overwriting saved data.
The description explains the capability, when to use it, and what to expect.
Inputs88/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
id
ID of the ReelsFarm item.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
scheduledFor
Target publication date and time in ISO 8601 format.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
timezone
Internet Assigned Numbers Authority timezone, such as Europe/Tirane.
Explain what happens when this optional value is omitted.
caption
New shared caption. It also removes the captionOverride of every destination that platforms does not set in the same request.
Clear enough to supply this argument.
platforms › items › platform
Social platform for this destination account.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
platforms › items › connectionId
UUID returned by reelsfarm_list_connected_accounts.
Clear enough to supply this argument.
platforms › items › captionOverride
Caption used only for this destination account.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
platforms › items › tiktokPublishMode
TikTok direct-publish or inbox-draft delivery mode.
Clear enough to supply this argument.
platforms › items › tiktokPrivacyLevel
TikTok privacy level. Omit it for TikTok draft uploads.
Clear enough to supply this argument.
platforms › items › tiktokTitle
TikTok post title or description.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
platforms › items › tiktokAutoAddMusic
Allow TikTok to add recommended music to a photo post.
Explain what happens when this optional value is omitted.
platforms › items › tiktokIsAigc
Declare whether a TikTok video contains artificial intelligence-generated content.
{
"name": "reelsfarm_prepare_update_scheduled_post",
"title": "Prepare Scheduled Post Update",
"description": "Prepare edits to a SCHEDULED post before it publishes: caption, time, timezone, and the publishing settings of each destination, such as TikTok delivery, privacy, and disclosures. Omitted fields keep their saved values. The media and the destination accounts cannot change; delete the post and schedule it again for that. Settings changes run the same checks as scheduling, including publishing preflight. Edits fail once the post has started publishing. The described operation can have destructive or irreversible effects, including overwriting saved data.",
"inputSchema": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "ID of the ReelsFarm item."
},
"dryRun": {
"type": "boolean",
"description": "Validate only: nothing is saved, charged or queued."
},
"caption": {
"type": "string",
"description": "New shared caption. It also removes the captionOverride of every destination that platforms does not set in the same request."
},
"timezone": {
"type": "string",
"description": "Internet Assigned Numbers Authority timezone, such as Europe/Tirane."
},
"platforms": {
"type": "array",
"items": {
"type": "object",
"required": [
"platform",
"connectionId"
],
"properties": {
"platform": {
"enum": [
"TIKTOK",
"INSTAGRAM",
"YOUTUBE",
"FACEBOOK"
],
"type": "string",
"description": "Social platform for this destination account."
},
"tiktokTitle": {
"type": "string",
"maxLength": 2200,
"description": "TikTok post title or description."
},
"connectionId": {
"type": "string",
"format": "uuid",
"description": "UUID returned by reelsfarm_list_connected_accounts."
},
"tiktokIsAigc": {
"type": "boolean",
"description": "Declare whether a TikTok video contains artificial intelligence-generated content."
},
"youtubeTitle": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "YouTube Short title."
},
"captionOverride": {
"type": "string",
"maxLength": 4000,
"description": "Caption used only for this destination account."
},
"tiktokAllowDuet": {
"type": "boolean",
"description": "Allow TikTok duet creation for a video post."
},
"instagramTestReel": {
"type": "boolean",
"description": "Publish an Instagram video as a trial Reel."
},
"tiktokAllowStitch": {
"type": "boolean",
"description": "Allow TikTok stitch creation for a video post."
},
"tiktokPublishMode": {
"enum": [
"DIRECT",
"DRAFT"
],
"type": "string",
"description": "TikTok direct-publish or inbox-draft delivery mode."
},
"facebookVisibility": {
"enum": [
"PUBLIC",
"PRIVATE",
"DRAFT"
],
"type": "string",
"description": "Facebook visibility supported by the selected integration provider."
},
"tiktokAllowComment": {
"type": "boolean",
"description": "Allow comments on the TikTok post."
},
"tiktokAutoAddMusic": {
"type": "boolean",
"description": "Allow TikTok to add recommended music to a photo post."
},
"tiktokBrandOrganic": {
"type": "boolean",
"description": "Declare that the TikTok post promotes the user's own brand."
},
"tiktokPrivacyLevel": {
"enum": [
"SELF_ONLY",
"PUBLIC_TO_EVERYONE",
"FOLLOWER_OF_CREATOR",
"MUTUAL_FOLLOW_FRIENDS"
],
"type": "string",
"description": "TikTok privacy level. Omit it for TikTok draft uploads."
},
"youtubeMadeForKids": {
"type": "boolean",
"description": "Declare whether the YouTube Short is made for children."
},
"instagramVisibility": {
"enum": [
"PUBLIC",
"PRIVATE",
"DRAFT"
],
"type": "string",
"description": "Instagram visibility supported by the selected integration provider."
},
"instagramShareToFeed": {
"type": "boolean",
"description": "Show an Instagram Reel in the profile grid as well as the Reels tab. Defaults to false for new native Instagram video posts."
},
"tiktokBrandedContent": {
"type": "boolean",
"description": "Declare that the TikTok post contains third-party branded content."
},
"youtubePrivacyStatus": {
"enum": [
"PRIVATE",
"PUBLIC",
"UNLISTED"
],
"type": "string",
"description": "YouTube publication privacy."
},
"tiktokPhotoCoverIndex": {
"type": "integer",
"maximum": 19,
"minimum": 0,
"description": "Zero-based TikTok photo cover index."
},
"youtubeNotifySubscribers": {
"type": "boolean",
"description": "Notify channel subscribers about the YouTube Short."
},
"tiktokVideoCoverTimestampMs": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "TikTok video cover position in milliseconds."
},
"youtubeContainsSyntheticMedia": {
"type": "boolean",
"description": "Declare realistic altered or synthetic media in the YouTube Short."
},
"tiktokCommercialContentEnabled": {
"type": "boolean",
"description": "Declare that TikTok commercial-content controls are enabled."
},
"youtubeHasPaidProductPlacement": {
"type": "boolean",
"description": "Declare paid product placement in the YouTube Short."
}
},
"additionalProperties": false
},
"maxItems": 20,
"minItems": 1,
"description": "Settings to change for existing destinations. Name each destination by platform and connectionId, which is accountId in reelsfarm_list_scheduled_posts. Omitted fields keep their saved values, shown in that row's settings. An empty captionOverride removes it. Switching TikTok from DRAFT to DIRECT needs tiktokPrivacyLevel, and for video tiktokIsAigc."
},
"scheduledFor": {
"type": "string",
"description": "Target publication date and time in ISO 8601 format."
},
"idempotencyKey": {
"type": "string",
"pattern": "^[A-Za-z0-9._:-]+$",
"maxLength": 200,
"minLength": 8,
"description": "Stable key for this action, reused only on retries. Required in Creator and Autopilot."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"properties": {
"id": {},
"jobs": {},
"kind": {},
"asset": {},
"draft": {},
"error": {},
"jobId": {},
"total": {},
"video": {},
"avatar": {},
"cached": {},
"dryRun": {},
"failed": {},
"prompt": {},
"result": {},
"status": {},
"deleted": {},
"product": {},
"purgeAt": {},
"summary": {},
"trashId": {},
"updated": {},
"executed": {},
"nextStep": {},
"provider": {},
"restored": {},
"toolName": {},
"character": {},
"completed": {},
"createdAt": {},
"deletedAt": {},
"expiresAt": {},
"operation": {},
"slideshow": {},
"actionType": {},
"automation": {},
"policyCode": {},
"sourceTool": {},
"creditsCost": {},
"operationId": {},
"slideshowId": {},
"assetCreated": {},
"purgeDeferred": {},
"resultMessage": {},
"scheduledPost": {},
"confirmationId": {},
"connectionMode": {},
"conversationId": {},
"creditEstimate": {},
"executionState": {},
"policyDecision": {},
"confirmationTool": {},
"parentGenerationId": {}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description78/100
Run the action that reelsfarm_bulk_import_media prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change.
The description explains the capability, when to use it, and what to expect.
Inputs93/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_bulk_import_media.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description78/100
Run the action that reelsfarm_create_product_upload_sessions prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change.
The description explains the capability, when to use it, and what to expect.
Inputs94/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_create_product_upload_sessions.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description78/100
Run the action that reelsfarm_import_media_from_url prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change.
The description explains the capability, when to use it, and what to expect.
Inputs96/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_import_media_from_url.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description77/100
Run the action that reelsfarm_start_bulk_import_media prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change.
The description explains the capability, when to use it, and what to expect.
Inputs93/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_start_bulk_import_media.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description82/100
Run the action that reelsfarm_rename_asset prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change. The described operation can have destructive or irreversible effects, including overwriting saved data.
The description explains the capability, when to use it, and what to expect.
Inputs91/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_rename_asset.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description77/100
Run the action that reelsfarm_create_product_context prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change.
The description explains the capability, when to use it, and what to expect.
Inputs94/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_create_product_context.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description77/100
Run the action that reelsfarm_update_product_context prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change.
The description explains the capability, when to use it, and what to expect.
Inputs92/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_update_product_context.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description78/100
Run the action that reelsfarm_save_slide_photos prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change.
The description explains the capability, when to use it, and what to expect.
Inputs94/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_save_slide_photos.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description78/100
Run the action that reelsfarm_save_slideshow_format prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change.
The description explains the capability, when to use it, and what to expect.
Inputs93/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_save_slideshow_format.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description79/100
Run the action that reelsfarm_exclude_slideshow_batch_item prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change.
The description explains the capability, when to use it, and what to expect.
Inputs94/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_exclude_slideshow_batch_item.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description80/100
Run the action that reelsfarm_archive_slideshow_format prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change.
The description explains the capability, when to use it, and what to expect.
Inputs94/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_archive_slideshow_format.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description79/100
Run the action that reelsfarm_create_media_collection prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change.
The description explains the capability, when to use it, and what to expect.
Inputs93/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_create_media_collection.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description79/100
Run the action that reelsfarm_rename_media_collection prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change.
The description explains the capability, when to use it, and what to expect.
Inputs93/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_rename_media_collection.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description79/100
Run the action that reelsfarm_update_media_collection_memberships prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change.
The description explains the capability, when to use it, and what to expect.
Inputs93/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_update_media_collection_memberships.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description79/100
Run the action that reelsfarm_create_slideshow prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change.
The description explains the capability, when to use it, and what to expect.
Inputs94/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_create_slideshow.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description78/100
Run the action that reelsfarm_duplicate_avatar prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change.
The description explains the capability, when to use it, and what to expect.
Inputs93/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_duplicate_avatar.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description78/100
Run the action that reelsfarm_duplicate_slideshow prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change.
The description explains the capability, when to use it, and what to expect.
Inputs93/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_duplicate_slideshow.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description78/100
Run the action that reelsfarm_duplicate_video prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change.
The description explains the capability, when to use it, and what to expect.
Inputs91/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_duplicate_video.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description79/100
Run the action that reelsfarm_restore_trash_item prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change.
The description explains the capability, when to use it, and what to expect.
Inputs92/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_restore_trash_item.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description76/100
Run the action that reelsfarm_restore_all_trash_items prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change.
Explain mutations, irreversible effects, or prerequisites that matter before calling this tool.
Inputs93/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_restore_all_trash_items.
Shorten the title to an action and subject; move usage details into the description.
Description82/100
Run the action that reelsfarm_save_draft prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change. The described operation can have destructive or irreversible effects, including overwriting saved data.
The description explains the capability, when to use it, and what to expect.
Inputs88/100
Input documentation gives an agent enough context to populate the arguments.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description81/100
Run the action that reelsfarm_update_character prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change. The described operation can have destructive or irreversible effects, including overwriting saved data.
The description explains the capability, when to use it, and what to expect.
Inputs93/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_update_character.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description83/100
Run the action that reelsfarm_update_slideshow prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change. The described operation can have destructive or irreversible effects, including overwriting saved data.
The description explains the capability, when to use it, and what to expect.
Inputs91/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_update_slideshow.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description83/100
Run the action that reelsfarm_delete_avatar prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change. The described operation can have destructive or irreversible effects, including overwriting saved data.
The description explains the capability, when to use it, and what to expect.
Inputs90/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_delete_avatar.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description84/100
Run the action that reelsfarm_delete_gallery_image prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change. The described operation can have destructive or irreversible effects, including overwriting saved data.
The description explains the capability, when to use it, and what to expect.
Inputs92/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_delete_gallery_image.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description82/100
Run the action that reelsfarm_delete_slideshow prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change. The described operation can have destructive or irreversible effects, including overwriting saved data.
The description explains the capability, when to use it, and what to expect.
Inputs88/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_delete_slideshow.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description84/100
Run the action that reelsfarm_delete_video prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change. The described operation can have destructive or irreversible effects, including overwriting saved data.
The description explains the capability, when to use it, and what to expect.
Inputs92/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_delete_video.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description81/100
Run the action that reelsfarm_cancel_scheduled_post prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change. The described operation can have destructive or irreversible effects, including overwriting saved data.
The description explains the capability, when to use it, and what to expect.
Inputs92/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_cancel_scheduled_post.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description81/100
Run the action that reelsfarm_cancel_hook_clip_import prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change. The described operation can have destructive or irreversible effects, including overwriting saved data.
The description explains the capability, when to use it, and what to expect.
Inputs88/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_cancel_hook_clip_import.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description82/100
Run the action that reelsfarm_delete_media_collection prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change. The described operation can have destructive or irreversible effects, including overwriting saved data.
The description explains the capability, when to use it, and what to expect.
Inputs89/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_delete_media_collection.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description80/100
Run the action that reelsfarm_prepare_ai_clone_job prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change.
The description explains the capability, when to use it, and what to expect.
Inputs95/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_prepare_ai_clone_job.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description80/100
Run the action that reelsfarm_prepare_batch_generate_avatars prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change.
The description explains the capability, when to use it, and what to expect.
Inputs95/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_prepare_batch_generate_avatars.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description77/100
Run the action that reelsfarm_prepare_finalize_slideshow prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change.
Explain mutations, irreversible effects, or prerequisites that matter before calling this tool.
Inputs93/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_prepare_finalize_slideshow.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description79/100
Run the action that reelsfarm_prepare_export_slideshow_video prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change.
The description explains the capability, when to use it, and what to expect.
Inputs96/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_prepare_export_slideshow_video.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description79/100
Run the action that reelsfarm_prepare_generate_avatar prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change.
The description explains the capability, when to use it, and what to expect.
Inputs95/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_prepare_generate_avatar.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description80/100
Run the action that reelsfarm_prepare_generate_hook prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change.
The description explains the capability, when to use it, and what to expect.
Inputs93/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_prepare_generate_hook.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description79/100
Run the action that reelsfarm_prepare_generate_video prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change.
The description explains the capability, when to use it, and what to expect.
Inputs96/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_prepare_generate_video.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description79/100
Run the action that reelsfarm_prepare_import_hook_clips prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change.
The description explains the capability, when to use it, and what to expect.
Inputs95/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_prepare_import_hook_clips.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description79/100
Run the action that reelsfarm_prepare_generate_product_scene prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change.
The description explains the capability, when to use it, and what to expect.
Inputs95/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_prepare_generate_product_scene.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description78/100
Run the action that reelsfarm_prepare_save_character prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change.
The description explains the capability, when to use it, and what to expect.
Inputs95/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_prepare_save_character.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description78/100
Run the action that reelsfarm_prepare_generate_slideshow_text prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change.
The description explains the capability, when to use it, and what to expect.
Inputs94/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_prepare_generate_slideshow_text.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description78/100
Run the action that reelsfarm_prepare_revise_slideshow_text prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change.
The description explains the capability, when to use it, and what to expect.
Inputs95/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_prepare_revise_slideshow_text.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description75/100
Run the action that reelsfarm_prepare_recreate_slideshow prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change.
The description explains the capability, when to use it, and what to expect.
Inputs95/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_prepare_recreate_slideshow.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description78/100
Run the action that reelsfarm_prepare_create_slideshow_batch prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change.
The description explains the capability, when to use it, and what to expect.
Inputs95/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_prepare_create_slideshow_batch.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description81/100
Run the action that reelsfarm_prepare_retry_slideshow_batch_item prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change.
The description explains the capability, when to use it, and what to expect.
Inputs96/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_prepare_retry_slideshow_batch_item.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description78/100
Run the action that reelsfarm_prepare_generate_ugc_video prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change.
The description explains the capability, when to use it, and what to expect.
Inputs94/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_prepare_generate_ugc_video.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description78/100
Run the action that reelsfarm_prepare_batch_publish prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change.
Explain mutations, irreversible effects, or prerequisites that matter before calling this tool.
Inputs94/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_prepare_batch_publish.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description78/100
Run the action that reelsfarm_prepare_publish_now prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change.
Explain mutations, irreversible effects, or prerequisites that matter before calling this tool.
Inputs95/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_prepare_publish_now.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description81/100
Run the action that reelsfarm_prepare_schedule_post prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change.
Explain mutations, irreversible effects, or prerequisites that matter before calling this tool.
Inputs97/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_prepare_schedule_post.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description83/100
Run the action that reelsfarm_prepare_update_scheduled_post prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change. The described operation can have destructive or irreversible effects, including overwriting saved data.
The description explains the capability, when to use it, and what to expect.
Inputs95/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_prepare_update_scheduled_post.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description80/100
Run the action that reelsfarm_prepare_create_automation prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change.
The description explains the capability, when to use it, and what to expect.
Inputs95/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_prepare_create_automation.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description84/100
Run the action that reelsfarm_prepare_update_automation prepared, once the user approves it. Takes only its confirmationId; the prepared arguments cannot change. The described operation can have destructive or irreversible effects, including overwriting saved data.
The description explains the capability, when to use it, and what to expect.
Inputs93/100
Input documentation gives an agent enough context to populate the arguments.
confirmationId
confirmationId returned by reelsfarm_prepare_update_automation.
ReelsFarm setup, tools, quality score, publishing readiness, and alternatives.
How do I add ReelsFarm to Claude, ChatGPT, or Cursor?
Add ReelsFarm to Claude, ChatGPT, or Cursor by connecting its remote MCP URL in each client's MCP settings. In Claude, add a custom connector. In ChatGPT, add an MCP app. In Cursor, add an MCP server under Settings. The MCP URL is https://mcp.reelsfarm.com/mcp.
Is ReelsFarm MCP ready for ChatGPT and Claude?
As of November 10, 2026, ReelsFarm scores 100/100 on Manufact's MCP publishing checklist. The scan meets ChatGPT publishing checks and meets Claude publishing checks. Passing these checks does not guarantee marketplace approval.
How clear is ReelsFarm's MCP tool documentation?
As of November 10, 2026, ReelsFarm scores 80/100 in Manufact's review of tool titles, descriptions, input and output schemas, and behavior annotations. The review covers 177 of 177 discovered tools. The quality score measures documentation clarity; runtime behavior and marketplace readiness require separate checks.
What are the best alternatives to ReelsFarm?
As of November 10, 2026, alternatives to ReelsFarm in design-creative on the Manufact MCP leaderboard include Dayfaro, Vectorize: logo to SVG, MotionVid, Reel Breakdown, and VideoGen.
How can ReelsFarm improve its MCP documentation?
reelsfarm_list_media_collections is the lowest-scoring reviewed tool at 64/100. Declare the result fields and their types in the output schema. Open its review for feedback and a copyable fix prompt, then rerun the documentation review after updating your tool metadata.
Not your MCP?
Review any public or OAuth MCP server for protocol compatibility, tool documentation, and ChatGPT and Claude publishing readiness. No account required.