Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Magic Hour

REMOTE · MCP.MAGICHOUR.AI · SCANNED SEP 20

Create and edit images, videos, and audio through Magic Hour's hosted Streamable HTTP MCP server.

Available components

+3 this week 73 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security63
Transport & Reachability100
Schema Quality & AI Usability70
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 25080 tokens (~545/item across 46 items; 45 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management64
  • Stability check failed: schema churn in the 20 days we've observed: 1 tool removals, 0 breaking changes, 0 auth/transport breaks, 2 additions. See how to fix → Fail
Tool Coverage95
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 84% of tool parameters carry a description.Partial
  • Structured output schemas are declared (80% of tools); any adoption earns full credit.Pass
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 4 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "video_projects_delete" implies "delete" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 47 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
  • Supports UI / widget rendering.Pass
Install

How do I install the Magic Hour MCP server?

Magic Hour is a hosted endpoint at https://mcp.magichour.ai/, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · mcp.magichour.ai

# add to Claude Code
claude mcp add --transport http magichourhq-magic-hour 'https://mcp.magichour.ai/'
// .cursor/mcp.json
{
  "mcpServers": {
    "magichourhq-magic-hour": {
      "url": "https://mcp.magichour.ai/"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "magichourhq-magic-hour": {
      "type": "http",
      "url": "https://mcp.magichour.ai/"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.magichourhq-magic-hour]
url = "https://mcp.magichour.ai/"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "magichourhq-magic-hour": {
      "type": "remote",
      "url": "https://mcp.magichour.ai/",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add magichourhq-magic-hour --url 'https://mcp.magichour.ai/' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  magichourhq-magic-hour:
    url: "https://mcp.magichour.ai/"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "magichourhq-magic-hour": {
      "Transport": "http",
      "Url": "https://mcp.magichour.ai/"
    }
  }
}
# add to Vellum
assistant mcp add magichourhq-magic-hour -t streamable-http -u 'https://mcp.magichour.ai/'
// mcp.json
{
  "mcpServers": {
    "magichourhq-magic-hour": {
      "type": "http",
      "url": "https://mcp.magichour.ai/"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 20 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 61 to 64.

  • 19 Sept 26 0
    • New tool “saved_items_list” functional
    • “image_to_video_create_video” reworded the description of “audio” cosmetic
    • “image_to_video_create_video” reworded the description of “end_seconds” cosmetic
    • “image_to_video_create_video” reworded the description of “model” cosmetic
    • “image_to_video_create_video” reworded the description of “resolution” cosmetic
    • “text_to_video_create_video” reworded the description of “aspect_ratio” cosmetic
    • “text_to_video_create_video” reworded the description of “audio” cosmetic
    • “text_to_video_create_video” reworded the description of “end_seconds” cosmetic
    • “text_to_video_create_video” reworded the description of “model” cosmetic
    • “text_to_video_create_video” reworded the description of “resolution” cosmetic
  • 18 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 54 to 57.

  • 17 Sept 26 0
    • “ai_image_editor_create_image” reworded the description of “model” cosmetic
    • “ai_image_editor_create_image” reworded the description of “resolution” cosmetic
    • “ai_image_generator_create_image” reworded the description of “model” cosmetic
    • “ai_image_generator_create_image” reworded the description of “resolution” cosmetic

    4 cosmetic changes on this day. Switch on “Show cosmetic changes” to see them.

  • 16 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 47 to 51.

  • 13 Sept 26 +1
    • The server rewrote its instructions, which are the text every model session reads security
  • 12 Sept 26 0
    • Schema quality: 406 → 540 functional
    • Tool coverage: 79% → 84% functional
    • “account_retrieve” added an optional parameter “context” cosmetic
    • “ai_clothes_changer_create_image” added an optional parameter “context” cosmetic
    • “ai_face_editor_edit_image” added an optional parameter “context” cosmetic
    • “ai_gif_generator_create_image” added an optional parameter “context” cosmetic
    • “ai_headshot_generator_create_image” added an optional parameter “context” cosmetic
    • “ai_image_editor_create_image” added an optional parameter “context” cosmetic
    • “ai_image_generator_create_image” added an optional parameter “context” cosmetic
    • “ai_image_upscaler_create_image” added an optional parameter “context” cosmetic
    • “ai_meme_generator_create_image” added an optional parameter “context” cosmetic
    • “ai_qr_code_generator_create_image” added an optional parameter “context” cosmetic
    • “ai_talking_photo_create_talking_photo” added an optional parameter “context” cosmetic
    • “ai_video_editor_create_video” added an optional parameter “context” cosmetic
    • “ai_voice_cloner_create_audio” added an optional parameter “context” cosmetic
    • “ai_voice_generator_create_audio” added an optional parameter “context” cosmetic
    • “animation_create_video” added an optional parameter “context” cosmetic
    • “audio_projects_delete” added an optional parameter “context” cosmetic
    • “audio_projects_retrieve_details” added an optional parameter “context” cosmetic
    • “audio_to_video_create_video” added an optional parameter “context” cosmetic
    • “auto_subtitle_generator_create_video” added an optional parameter “context” cosmetic
    • “body_swap_create_image” added an optional parameter “context” cosmetic
    • “character_replace_create_video” added an optional parameter “context” cosmetic
    • “face_detection_detect_faces” added an optional parameter “context” cosmetic
    • “face_detection_retrieve_details” added an optional parameter “context” cosmetic
    • “face_swap_create_video” added an optional parameter “context” cosmetic
    • “face_swap_photo_create_image” added an optional parameter “context” cosmetic
    • “fetch_audio_download” added an optional parameter “context” cosmetic
    • “fetch_image_download” added an optional parameter “context” cosmetic
    • “fetch_video_download” added an optional parameter “context” cosmetic
    • “head_swap_create_image” added an optional parameter “context” cosmetic
    • “image_background_remover_create_image” added an optional parameter “context” cosmetic
    • “image_projects_delete” added an optional parameter “context” cosmetic
    • “image_projects_retrieve_details” added an optional parameter “context” cosmetic
    • “image_to_video_create_video” added an optional parameter “context” cosmetic
    • “lip_sync_create_video” added an optional parameter “context” cosmetic
    • “photo_colorizer_create_image” added an optional parameter “context” cosmetic
    • “ping” added an optional parameter “context” cosmetic
    • “text_to_video_create_video” added an optional parameter “context” cosmetic
    • “video_assets_generate_presigned_url” added an optional parameter “context” cosmetic
    • “video_projects_delete” added an optional parameter “context” cosmetic
    • “video_projects_retrieve_details” added an optional parameter “context” cosmetic
    • “video_to_video_create_video” added an optional parameter “context” cosmetic
    • “wait_for_audio_project” added an optional parameter “context” cosmetic
    • “wait_for_image_project” added an optional parameter “context” cosmetic
    • “wait_for_video_project” added an optional parameter “context” cosmetic
    • “ai_image_editor_create_image” reworded the description of “model” cosmetic
    • “ai_image_editor_create_image” reworded the description of “resolution” cosmetic
    • “ai_image_generator_create_image” reworded the description of “model” cosmetic
    • “ai_image_generator_create_image” reworded the description of “resolution” cosmetic
  • 11 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 31 to 34.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Sept 2026 · Probed https://mcp.magichour.ai/

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=mcp.magichour.ai CN=YR2,O=Let's Encrypt,C=US 15 Sept 2026 14 Dec 2026 RSA 2048 SHA256-RSA 6aa235fe3d5f0055b5768ea1fcbdd2d8535
SANs: mcp.magichour.ai
CN=YR2,O=Let's Encrypt,C=US (CA) CN=Root YR,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 RSA 2048 SHA256-RSA 4ebd24947e24d394802d84a52fd5b319
CN=Root YR,O=ISRG,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 RSA 4096 SHA256-RSA f24b6d17f9d9ad7cb1c9fea78782699f

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of mcp.magichour.ai. Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
ai. present 3799 8 Verified
magichour.ai. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Header Value
strict-transport-security max-age=63072000

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://mcp.magichour.ai/ Verified 200
http (plaintext) http://mcp.magichour.ai/ HTTPS enforced 308 https://mcp.magichour.ai/
MCP tools · 45 exposed · ~24,788 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
account_retrieve ~159

Get the current credit balance and subscription details of the account that owns the API key.

NameTypeReqDescription
contextstringExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,…
NameTypeReqDescription
creditsintegeryesCredits currently available to spend. Includes subscription credits and any purchased credit packs.
emailstring|nullyesEmail address of the account.
idstringyesUnique ID of the account that owns the API key.
subscriptionobject|nullyesDetails of the account's subscription plan. `null` if the account has no subscription, e.g. a free account, an account that only purchased credit packs, or an account on usage-based API pricing. Ref…
tierstringyesSubscription tier in effect for the account. `free` if there is no active subscription, including while a subscription is `past_due`.

No examples provided.

ai_clothes_changer_create_image ~380

Change outfits in photos in seconds with just a photo reference. Each photo costs 25 credits. MCP guidance: - This starts an async image generation job and returns `id` plus `credits_charged` immediately. If the user wants the finished result, call the `wait_for_image_project` helper with the returned id, or poll the matching `GET /v1/image-projects/{id}` endpoint until status is `complete`, `error`, or `canceled`. Completed projects include `downloads` with direct URLs. The custom wait helper also returns `exact_download_urls` separately from expiration metadata. - For `*_file_path` values, prefer an existing Magic Hour file path or a `file_path` returned by the upload-URL endpoint after the file bytes are uploaded. Direct public media URLs may work when they are stable, fetchable, and return raw file bytes, but hotlinked URLs can fail; when in doubt, use the presigned upload flow first and pass the returned `file_path`.

NameTypeReqDescription
assetsobjectyesProvide the assets for clothes changer
contextstringExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,…
namestringGive your image a custom name for easy identification.
NameTypeReqDescription
credits_chargedintegeryesThe amount of credits deducted from your account to generate the image. We charge credits right when the request is made. If an error occurred while generating the image(s), credits will be refunde…
idstringyesUnique ID of the image. Use it with the [Get image Project API](https://docs.magichour.ai/api-reference/image-projects/get-image-details) to fetch status and downloads.

No examples provided.

ai_face_editor_edit_image ~419

Edit facial features of an image using AI. Each edit costs 1 frame. The height/width of the output image depends on your subscription. Please refer to our [pricing](https://magichour.ai/pricing) page for more details MCP guidance: - This starts an async image generation job and returns `id` plus `credits_charged` immediately. If the user wants the finished result, call the `wait_for_image_project` helper with the returned id, or poll the matching `GET /v1/image-projects/{id}` endpoint until status is `complete`, `error`, or `canceled`. Completed projects include `downloads` with direct URLs. The custom wait helper also returns `exact_download_urls` separately from expiration metadata. - For `*_file_path` values, prefer an existing Magic Hour file path or a `file_path` returned by the upload-URL endpoint after the file bytes are uploaded. Direct public media URLs may work when they are stable, fetchable, and return raw file bytes, but hotlinked URLs can fail; when in doubt, use the presigned upload flow first and pass the returned `file_path`.

NameTypeReqDescription
assetsobjectyesProvide the assets for face editor
contextstringExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,…
namestringGive your image a custom name for easy identification.
styleobjectyesFace editing parameters
NameTypeReqDescription
credits_chargedintegeryesThe amount of credits deducted from your account to generate the image. We charge credits right when the request is made. If an error occurred while generating the image(s), credits will be refunde…
idstringyesUnique ID of the image. Use it with the [Get image Project API](https://docs.magichour.ai/api-reference/image-projects/get-image-details) to fetch status and downloads.

No examples provided.

ai_gif_generator_create_image ~300

Create an AI GIF. Each GIF costs 50 credits. MCP guidance: - This starts an async image generation job and returns `id` plus `credits_charged` immediately. If the user wants the finished result, call the `wait_for_image_project` helper with the returned id, or poll the matching `GET /v1/image-projects/{id}` endpoint until status is `complete`, `error`, or `canceled`. Completed projects include `downloads` with direct URLs. The custom wait helper also returns `exact_download_urls` separately from expiration metadata.

NameTypeReqDescription
contextstringExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,…
namestringGive your gif a custom name for easy identification.
output_formatstringThe output file format for the generated animation.
styleobjectyes
NameTypeReqDescription
credits_chargedintegeryesThe amount of credits deducted from your account to generate the image. We charge credits right when the request is made. If an error occurred while generating the image(s), credits will be refunde…
idstringyesUnique ID of the image. Use it with the [Get image Project API](https://docs.magichour.ai/api-reference/image-projects/get-image-details) to fetch status and downloads.

No examples provided.

ai_headshot_generator_create_image ~382

Create an AI headshot. Each headshot costs 50 credits. MCP guidance: - This starts an async image generation job and returns `id` plus `credits_charged` immediately. If the user wants the finished result, call the `wait_for_image_project` helper with the returned id, or poll the matching `GET /v1/image-projects/{id}` endpoint until status is `complete`, `error`, or `canceled`. Completed projects include `downloads` with direct URLs. The custom wait helper also returns `exact_download_urls` separately from expiration metadata. - For `*_file_path` values, prefer an existing Magic Hour file path or a `file_path` returned by the upload-URL endpoint after the file bytes are uploaded. Direct public media URLs may work when they are stable, fetchable, and return raw file bytes, but hotlinked URLs can fail; when in doubt, use the presigned upload flow first and pass the returned `file_path`.

NameTypeReqDescription
assetsobjectyesProvide the assets for headshot photo
contextstringExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,…
namestringGive your image a custom name for easy identification.
styleobject
NameTypeReqDescription
credits_chargedintegeryesThe amount of credits deducted from your account to generate the image. We charge credits right when the request is made. If an error occurred while generating the image(s), credits will be refunde…
idstringyesUnique ID of the image. Use it with the [Get image Project API](https://docs.magichour.ai/api-reference/image-projects/get-image-details) to fetch status and downloads.

No examples provided.

ai_image_editor_create_image ~1,520

Edit images with AI. MCP guidance: - This starts an async image generation job and returns `id` plus `credits_charged` immediately. If the user wants the finished result, call the `wait_for_image_project` helper with the returned id, or poll the matching `GET /v1/image-projects/{id}` endpoint until status is `complete`, `error`, or `canceled`. Completed projects include `downloads` with direct URLs. The custom wait helper also returns `exact_download_urls` separately from expiration metadata. - For `*_file_path` values, prefer an existing Magic Hour file path or a `file_path` returned by the upload-URL endpoint after the file bytes are uploaded. Direct public media URLs may work when they are stable, fetchable, and return raw file bytes, but hotlinked URLs can fail; when in doubt, use the presigned upload flow first and pass the returned `file_path`.

NameTypeReqDescription
aspect_ratiostringThe aspect ratio of the output image(s). If not specified, defaults to `auto`.
assetsobjectyesProvide the assets for image edit
contextstringExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,…
image_countnumberNumber of images to generate. Maximum varies by model. Defaults to 1 if not specified.
modelstringThe AI model to use for image editing. Each model has different capabilities and costs. **Models:** - `default` - Use the model we recommend, which will change over time. This is recommended unless…
namestringGive your image a custom name for easy identification.
resolutionstringMaximum resolution (longest edge) for the output image. **Options:** - `640px` — up to 640px - `1k` — up to 1024px - `2k` — up to 2048px - `4k` — up to 4096px - `auto` — **Deprecated.** Mapped serve…
styleobjectyes
NameTypeReqDescription
credits_chargedintegeryesThe amount of credits deducted from your account to generate the image. We charge credits right when the request is made. If an error occurred while generating the image(s), credits will be refunde…
idstringyesUnique ID of the image. Use it with the [Get image Project API](https://docs.magichour.ai/api-reference/image-projects/get-image-details) to fetch status and downloads.

No examples provided.

ai_image_generator_create_image ~1,528

Create an AI image with advanced model selection and quality controls. MCP guidance: - This starts an async image generation job and returns `id` plus `credits_charged` immediately. If the user wants the finished result, call the `wait_for_image_project` helper with the returned id, or poll the matching `GET /v1/image-projects/{id}` endpoint until status is `complete`, `error`, or `canceled`. Completed projects include `downloads` with direct URLs. The custom wait helper also returns `exact_download_urls` separately from expiration metadata.

NameTypeReqDescription
aspect_ratiostringThe aspect ratio of the output image(s). If not specified, defaults to `1:1` (square).
contextstringExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,…
image_countintegeryesNumber of images to generate. Maximum varies by model.
modelstringThe AI model to use for image generation. Each model has different capabilities and costs. **Models:** - `default` - Use the model we recommend, which will change over time. This is recommended unle…
namestringGive your image a custom name for easy identification.
resolutionstringMaximum resolution (longest edge) for the output image. **Options:** - `640px` — up to 640px - `1k` — up to 1024px - `2k` — up to 2048px - `4k` — up to 4096px - `auto` — **Deprecated.** Mapped serve…
styleobjectyesThe art style to use for image generation.
NameTypeReqDescription
credits_chargedintegeryesThe amount of credits deducted from your account to generate the image. We charge credits right when the request is made. If an error occurred while generating the image(s), credits will be refunde…
idstringyesUnique ID of the image. Use it with the [Get image Project API](https://docs.magichour.ai/api-reference/image-projects/get-image-details) to fetch status and downloads.

No examples provided.

ai_image_upscaler_create_image ~483

Upscale your image using AI. Each 2x upscale costs 50 credits for balanced/creative modes, and 25 credits for preserve. 4x upscale costs 200 and 100 credits respectively. MCP guidance: - This starts an async image generation job and returns `id` plus `credits_charged` immediately. If the user wants the finished result, call the `wait_for_image_project` helper with the returned id, or poll the matching `GET /v1/image-projects/{id}` endpoint until status is `complete`, `error`, or `canceled`. Completed projects include `downloads` with direct URLs. The custom wait helper also returns `exact_download_urls` separately from expiration metadata. - For `*_file_path` values, prefer an existing Magic Hour file path or a `file_path` returned by the upload-URL endpoint after the file bytes are uploaded. Direct public media URLs may work when they are stable, fetchable, and return raw file bytes, but hotlinked URLs can fail; when in doubt, use the presigned upload flow first and pass the returned `file_path`.

NameTypeReqDescription
assetsobjectyesProvide the assets for upscaling
contextstringExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,…
namestringGive your image a custom name for easy identification.
scale_factornumberyesHow much to scale the image. Must be either 2 or 4. Note: 4x upscale is only available on Creator, Pro, or Business tier.
styleobjectStyle settings for the upscale. Use `mode` (`"preserve"`, `"balanced"`, or `"creative"`). Defaults to `"balanced"`.
NameTypeReqDescription
credits_chargedintegeryesThe amount of credits deducted from your account to generate the image. We charge credits right when the request is made. If an error occurred while generating the image(s), credits will be refunde…
idstringyesUnique ID of the image. Use it with the [Get image Project API](https://docs.magichour.ai/api-reference/image-projects/get-image-details) to fetch status and downloads.

No examples provided.

ai_meme_generator_create_image ~281

Create an AI generated meme. Each meme costs 10 credits. MCP guidance: - This starts an async image generation job and returns `id` plus `credits_charged` immediately. If the user wants the finished result, call the `wait_for_image_project` helper with the returned id, or poll the matching `GET /v1/image-projects/{id}` endpoint until status is `complete`, `error`, or `canceled`. Completed projects include `downloads` with direct URLs. The custom wait helper also returns `exact_download_urls` separately from expiration metadata.

NameTypeReqDescription
contextstringExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,…
namestringThe name of the meme.
styleobjectyes
NameTypeReqDescription
credits_chargedintegeryesThe amount of credits deducted from your account to generate the image. We charge credits right when the request is made. If an error occurred while generating the image(s), credits will be refunde…
idstringyesUnique ID of the image. Use it with the [Get image Project API](https://docs.magichour.ai/api-reference/image-projects/get-image-details) to fetch status and downloads.

No examples provided.

ai_qr_code_generator_create_image ~300

Create an AI QR code. Each QR code costs 0 credits. MCP guidance: - This starts an async image generation job and returns `id` plus `credits_charged` immediately. If the user wants the finished result, call the `wait_for_image_project` helper with the returned id, or poll the matching `GET /v1/image-projects/{id}` endpoint until status is `complete`, `error`, or `canceled`. Completed projects include `downloads` with direct URLs. The custom wait helper also returns `exact_download_urls` separately from expiration metadata.

NameTypeReqDescription
contentstringyesThe content of the QR code.
contextstringExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,…
namestringGive your image a custom name for easy identification.
styleobjectyes
NameTypeReqDescription
credits_chargedintegeryesThe amount of credits deducted from your account to generate the image. We charge credits right when the request is made. If an error occurred while generating the image(s), credits will be refunde…
idstringyesUnique ID of the image. Use it with the [Get image Project API](https://docs.magichour.ai/api-reference/image-projects/get-image-details) to fetch status and downloads.

No examples provided.

ai_talking_photo_create_talking_photo ~516

Create a talking photo from an image and audio or text input. MCP guidance: - This starts an async video generation job and returns `id` plus `credits_charged` immediately. If the user wants the finished result, call the `wait_for_video_project` helper with the returned id, or poll the matching `GET /v1/video-projects/{id}` endpoint until status is `complete`, `error`, or `canceled`. Completed projects include `downloads` with direct URLs. The custom wait helper also returns `exact_download_urls` separately from expiration metadata. - For `*_file_path` values, prefer an existing Magic Hour file path or a `file_path` returned by the upload-URL endpoint after the file bytes are uploaded. Direct public media URLs may work when they are stable, fetchable, and return raw file bytes, but hotlinked URLs can fail; when in doubt, use the presigned upload flow first and pass the returned `file_path`.

NameTypeReqDescription
assetsobjectyesProvide the assets for creating a talking photo
contextstringExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,…
end_secondsnumberyesThe end time of the input audio in seconds. Maximum clip length depends on style.generation_mode: realistic 300s, prompted 45s.
max_resolutionintegerConstrains the larger dimension (height or width) of the output video. Allows you to set a lower resolution than your plan's maximum if desired. The value is capped by your plan's max resolution.
namestringGive your image a custom name for easy identification.
start_secondsnumberyesThe start time of the input audio in seconds. Maximum clip length depends on style.generation_mode: realistic 300s, prompted 45s.
styleobjectAttributes used to dictate the style of the output
NameTypeReqDescription
credits_chargedintegeryesThe amount of credits deducted from your account to generate the video. If the status is not 'complete', this value is an estimate and may be adjusted upon completion based on the actual FPS of the o…
idstringyesUnique ID of the video. Use it with the [Get video Project API](https://docs.magichour.ai/api-reference/video-projects/get-video-details) to fetch status and downloads.

No examples provided.

ai_video_editor_create_video ~895

**What this API does** Create the same Video Editor you can make in the browser, but programmatically, so you can automate it, run it at scale, or connect it to your own app or workflow. **Good for** - Automation and batch processing - Adding video editor into apps, pipelines, or tools **How it works (3 steps)** 1) Upload your inputs (video, image, or audio) with [Generate Upload URLs](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls) and copy the `file_path`. 2) Send a request to create a video editor job with the basic fields. 3) Check the job status until it's `complete`, then download the result from `downloads`. **Key options** - Inputs: usually a file, sometimes a YouTube link, depending on project type - Resolution: free users are limited to 576px; higher plans unlock HD and larger sizes - Extra fields: e.g. `face_swap_mode`, `start_seconds`/`end_seconds`, or a text prompt **Cost** Credits are only charged for the frames that actually render. You'll see an estimate when the job is queued, and the final total after it's done. For detailed examples, see the [product page](https://magichour.ai/products/ai-video-editor). MCP guidance: - This starts an async video generation job and returns `id` plus `credits_charged` immediately. If the user wants the finished result, call the `wait_for_video_project` helper with the returned id, or poll the matching `GET /v1/video-projects/{id}` endpoint until status is `complete`, `error`, or `canceled`. Completed projects include `downloads` with direct URLs. The custom wait helper also returns `exact_download_urls` separately from expiration metadata. - For `*_file_path` values, prefer an existing Magic Hour file path or a `file_path` returned by the upload-URL endpoint after the file bytes are uploaded. Direct public media URLs may work when they are stable, fetchable, and return raw file bytes, but hotlinked URLs can fail; when in doubt, use the presigned upload flow first…

NameTypeReqDescription
assetsobjectyesProvide the assets for video editing.
contextstringExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,…
end_secondsnumberyesEnd time of your clip in seconds. Must be greater than `start_seconds`. Minimum duration depends on model: `gemini-omni-1.1`: 3s, `ltx-2.3`: 0.5s. Maximum duration depends on model: `gemini-omni-1.1`…
modelstringEditing model. Defaults to `ltx-2.3` for free tier and `gemini-omni-1.1` for paid. `gemini-omni` is deprecated; use `gemini-omni-1.1` instead.
namestringGive your video a custom name for easy identification.
resolutionstringOutput resolution. Defaults to `480p` for free tier and `720p` for paid. `gemini-omni-1.1` and deprecated `gemini-omni` support 720p and 1080p; LTX-2.3 supports 480p, 720p, and 1080p.
start_secondsnumberStart time of your clip (seconds). Must be ≥ 0.
styleobjectyes
NameTypeReqDescription
credits_chargedintegeryesThe amount of credits deducted from your account to generate the video. If the status is not 'complete', this value is an estimate and may be adjusted upon completion based on the actual FPS of the o…
idstringyesUnique ID of the video. Use it with the [Get video Project API](https://docs.magichour.ai/api-reference/video-projects/get-video-details) to fetch status and downloads.

No examples provided.

ai_voice_cloner_create_audio ~402

Clone a voice from an audio sample and generate speech. * Each character costs 0.1 credits. * The cost is rounded up to the nearest whole number MCP guidance: - This starts an async audio generation job and returns `id` plus `credits_charged` immediately. If the user wants the finished result, call the `wait_for_audio_project` helper with the returned id, or poll the matching `GET /v1/audio-projects/{id}` endpoint until status is `complete`, `error`, or `canceled`. Completed projects include `downloads` with direct URLs. The custom wait helper also returns `exact_download_urls` separately from expiration metadata. - For `*_file_path` values, prefer an existing Magic Hour file path or a `file_path` returned by the upload-URL endpoint after the file bytes are uploaded. Direct public media URLs may work when they are stable, fetchable, and return raw file bytes, but hotlinked URLs can fail; when in doubt, use the presigned upload flow first and pass the returned `file_path`.

NameTypeReqDescription
assetsobjectyesProvide the assets for voice cloning.
contextstringExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,…
namestringGive your audio a custom name for easy identification.
styleobjectyes
NameTypeReqDescription
credits_chargedintegeryesThe amount of credits deducted from your account to generate the audio. We charge credits right when the request is made. If an error occurred while generating the audio, credits will be refunded a…
idstringyesUnique ID of the audio. Use it with the [Get audio Project API](https://docs.magichour.ai/api-reference/audio-projects/get-audio-details) to fetch status and downloads.

No examples provided.

ai_voice_generator_create_audio ~302

Generate speech from text. Each character costs 0.1 credits. The cost is rounded up to the nearest whole number. MCP guidance: - This starts an async audio generation job and returns `id` plus `credits_charged` immediately. If the user wants the finished result, call the `wait_for_audio_project` helper with the returned id, or poll the matching `GET /v1/audio-projects/{id}` endpoint until status is `complete`, `error`, or `canceled`. Completed projects include `downloads` with direct URLs. The custom wait helper also returns `exact_download_urls` separately from expiration metadata.

NameTypeReqDescription
contextstringExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,…
namestringGive your audio a custom name for easy identification.
styleobjectyesThe content used to generate speech.
NameTypeReqDescription
credits_chargedintegeryesThe amount of credits deducted from your account to generate the audio. We charge credits right when the request is made. If an error occurred while generating the audio, credits will be refunded a…
idstringyesUnique ID of the audio. Use it with the [Get audio Project API](https://docs.magichour.ai/api-reference/audio-projects/get-audio-details) to fetch status and downloads.

No examples provided.

animation_create_video ~510

Create a Animation video. The estimated frame cost is calculated based on the `fps` and `end_seconds` input. MCP guidance: - This starts an async video generation job and returns `id` plus `credits_charged` immediately. If the user wants the finished result, call the `wait_for_video_project` helper with the returned id, or poll the matching `GET /v1/video-projects/{id}` endpoint until status is `complete`, `error`, or `canceled`. Completed projects include `downloads` with direct URLs. The custom wait helper also returns `exact_download_urls` separately from expiration metadata. - For `*_file_path` values, prefer an existing Magic Hour file path or a `file_path` returned by the upload-URL endpoint after the file bytes are uploaded. Direct public media URLs may work when they are stable, fetchable, and return raw file bytes, but hotlinked URLs can fail; when in doubt, use the presigned upload flow first and pass the returned `file_path`.

NameTypeReqDescription
assetsobjectyesProvide the assets for animation.
contextstringExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,…
end_secondsnumberyesThis value determines the duration of the output video.
fpsnumberyesThe desire output video frame rate
heightintegeryesThe height of the final output video. The maximum height depends on your subscription. Please refer to our [pricing page](https://magichour.ai/pricing) for more details
namestringGive your video a custom name for easy identification.
styleobjectyesDefines the style of the output video
widthintegeryesThe width of the final output video. The maximum width depends on your subscription. Please refer to our [pricing page](https://magichour.ai/pricing) for more details
NameTypeReqDescription
credits_chargedintegeryesThe amount of credits deducted from your account to generate the video. If the status is not 'complete', this value is an estimate and may be adjusted upon completion based on the actual FPS of the o…
idstringyesUnique ID of the video. Use it with the [Get video Project API](https://docs.magichour.ai/api-reference/video-projects/get-video-details) to fetch status and downloads.

No examples provided.

audio_projects_delete ~191

Permanently delete the rendered audio file(s). This action is not reversible, please be sure before deleting.

NameTypeReqDescription
contextstringExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,…
idstringyesUnique ID of the audio project. This value is returned by all of the POST APIs that create an audio.

No output schema declared.

No examples provided.

audio_projects_retrieve_details ~340

Check the progress of a audio project. The `downloads` field is populated after a successful render. **Statuses** - `queued` — waiting to start - `rendering` — in progress - `complete` — ready; see `downloads` - `error` — a failure occurred (see `error`) - `canceled` — user canceled - `draft` — not used MCP guidance: - Use this after a create tool to poll job status. When status is `complete`, surface the `downloads` URLs to the user; if status is `error`, surface the error message. - Each `downloads[n].url` is already the full signed download URL. Use it exactly as returned. Do not shorten it, strip query parameters, or append `expires_at` onto the URL string.

NameTypeReqDescription
contextstringExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,…
idstringyesUnique ID of the audio project. This value is returned by all of the POST APIs that create an audio.
NameTypeReqDescription
created_atstringyes
credits_chargedintegeryesThe amount of credits deducted from your account to generate the audio. We charge credits right when the request is made. If an error occurred while generating the audio, credits will be refunded a…
downloadsarrayyes
enabledbooleanyesWhether this resource is active. If false, it is deleted.
errorobject|nullyesIn the case of an error, this object will contain the error encountered during video render
idstringyesUnique ID of the audio. Use it with the [Get audio Project API](https://docs.magichour.ai/api-reference/audio-projects/get-audio-details) to fetch status and downloads.
namestring|nullyesThe name of the audio.
statusstringyesThe status of the audio. - `draft` - the project was created but has not been submitted for rendering - `queued` - the job is waiting for an available server - `rendering` - the job is being process…
typestringyesThe type of the audio project. Possible values are AUDIO_TRANSLATOR, VOICE_GENERATOR, VOICE_CHANGER, VOICE_CLONER, VIDEO_TO_AUDIO, MUSIC_GENERATOR, SOUND_EFFECT_GENERATOR

No examples provided.

audio_to_video_create_video ~730

**What this API does** Create the same Audio To Video you can make in the browser, but programmatically, so you can automate it, run it at scale, or connect it to your own app or workflow. **Good for** - Automation and batch processing - Adding audio to video into apps, pipelines, or tools **How it works (3 steps)** 1) Upload your inputs (video, image, or audio) with [Generate Upload URLs](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls) and copy the `file_path`. 2) Send a request to create a audio to video job with the basic fields. 3) Check the job status until it's `complete`, then download the result from `downloads`. **Key options** - Inputs: usually a file, sometimes a YouTube link, depending on project type - Resolution: free users are limited to 576px; higher plans unlock HD and larger sizes - Extra fields: e.g. `face_swap_mode`, `start_seconds`/`end_seconds`, or a text prompt **Cost** Credits are only charged for the frames that actually render. You'll see an estimate when the job is queued, and the final total after it's done. For detailed examples, see the [product page](https://magichour.ai/products/audio-to-video). MCP guidance: - This starts an async video generation job and returns `id` plus `credits_charged` immediately. If the user wants the finished result, call the `wait_for_video_project` helper with the returned id, or poll the matching `GET /v1/video-projects/{id}` endpoint until status is `complete`, `error`, or `canceled`. Completed projects include `downloads` with direct URLs. The custom wait helper also returns `exact_download_urls` separately from expiration metadata. - For `*_file_path` values, prefer an existing Magic Hour file path or a `file_path` returned by the upload-URL endpoint after the file bytes are uploaded. Direct public media URLs may work when they are stable, fetchable, and return raw file bytes, but hotlinked URLs can fail; when in doubt, use the presigned upload flow…

NameTypeReqDescription
assetsobjectyesProvide the audio file and an optional reference image.
contextstringExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,…
end_secondsnumberyesEnd time of your clip (seconds). Must be greater than start_seconds.
namestringGive your video a custom name for easy identification.
resolutionstringOutput video resolution. Defaults to `720p` on paid tiers and `480p` on free tiers.
start_secondsnumberStart time of your clip (seconds). Must be ≥ 0.
styleobjectAttributes used to dictate the style of the output
NameTypeReqDescription
credits_chargedintegeryesThe amount of credits deducted from your account to generate the video. If the status is not 'complete', this value is an estimate and may be adjusted upon completion based on the actual FPS of the o…
idstringyesUnique ID of the video. Use it with the [Get video Project API](https://docs.magichour.ai/api-reference/video-projects/get-video-details) to fetch status and downloads.

No examples provided.

auto_subtitle_generator_create_video ~560

Automatically generate subtitles for your video in multiple languages. MCP guidance: - This starts an async video generation job and returns `id` plus `credits_charged` immediately. If the user wants the finished result, call the `wait_for_video_project` helper with the returned id, or poll the matching `GET /v1/video-projects/{id}` endpoint until status is `complete`, `error`, or `canceled`. Completed projects include `downloads` with direct URLs. The custom wait helper also returns `exact_download_urls` separately from expiration metadata. - For `*_file_path` values, prefer an existing Magic Hour file path or a `file_path` returned by the upload-URL endpoint after the file bytes are uploaded. Direct public media URLs may work when they are stable, fetchable, and return raw file bytes, but hotlinked URLs can fail; when in doubt, use the presigned upload flow first and pass the returned `file_path`.

NameTypeReqDescription
assetsobjectyesProvide the assets for auto subtitle generator
contextstringExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,…
end_secondsnumberyesEnd time of your clip (seconds). Must be greater than start_seconds.
namestringGive your video a custom name for easy identification.
start_secondsnumberyesStart time of your clip (seconds). Must be ≥ 0.
styleobjectyesStyle of the subtitle. At least one of `.style.template` or `.style.custom_config` must be provided. * If only `.style.template` is provided, default values for the template will be used. * If both…
NameTypeReqDescription
credits_chargedintegeryesThe amount of credits deducted from your account to generate the video. If the status is not 'complete', this value is an estimate and may be adjusted upon completion based on the actual FPS of the o…
idstringyesUnique ID of the video. Use it with the [Get video Project API](https://docs.magichour.ai/api-reference/video-projects/get-video-details) to fetch status and downloads.

No examples provided.

body_swap_create_image ~425

Swap a person into a scene image using Nano Banana 2 Lite (640px/1k) or Nano Banana 2 (2k/4k). Credits depend on `resolution` (from 50 credits at 640px upward). MCP guidance: - This starts an async image generation job and returns `id` plus `credits_charged` immediately. If the user wants the finished result, call the `wait_for_image_project` helper with the returned id, or poll the matching `GET /v1/image-projects/{id}` endpoint until status is `complete`, `error`, or `canceled`. Completed projects include `downloads` with direct URLs. The custom wait helper also returns `exact_download_urls` separately from expiration metadata. - For `*_file_path` values, prefer an existing Magic Hour file path or a `file_path` returned by the upload-URL endpoint after the file bytes are uploaded. Direct public media URLs may work when they are stable, fetchable, and return raw file bytes, but hotlinked URLs can fail; when in doubt, use the presigned upload flow first and pass the returned `file_path`.

NameTypeReqDescription
assetsobjectyesPerson image and scene image for body swap
contextstringExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,…
namestringGive your image a custom name for easy identification.
resolutionstringyesOutput resolution. Determines credits charged for the run.
NameTypeReqDescription
credits_chargedintegeryesThe amount of credits deducted from your account to generate the image. We charge credits right when the request is made. If an error occurred while generating the image(s), credits will be refunde…
idstringyesUnique ID of the image. Use it with the [Get image Project API](https://docs.magichour.ai/api-reference/image-projects/get-image-details) to fetch status and downloads.

No examples provided.

character_replace_create_video ~725

**What this API does** Create the same Character Replace you can make in the browser, but programmatically, so you can automate it, run it at scale, or connect it to your own app or workflow. **Good for** - Automation and batch processing - Adding character replace into apps, pipelines, or tools **How it works (3 steps)** 1) Upload your inputs (video, image, or audio) with [Generate Upload URLs](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls) and copy the `file_path`. 2) Send a request to create a character replace job with the basic fields. 3) Check the job status until it's `complete`, then download the result from `downloads`. **Key options** - Inputs: usually a file, sometimes a YouTube link, depending on project type - Resolution: free users are limited to 576px; higher plans unlock HD and larger sizes - Extra fields: e.g. `face_swap_mode`, `start_seconds`/`end_seconds`, or a text prompt **Cost** Credits are only charged for the frames that actually render. You'll see an estimate when the job is queued, and the final total after it's done. For detailed examples, see the [product page](https://magichour.ai/products/character-replace). MCP guidance: - This starts an async video generation job and returns `id` plus `credits_charged` immediately. If the user wants the finished result, call the `wait_for_video_project` helper with the returned id, or poll the matching `GET /v1/video-projects/{id}` endpoint until status is `complete`, `error`, or `canceled`. Completed projects include `downloads` with direct URLs. The custom wait helper also returns `exact_download_urls` separately from expiration metadata. - For `*_file_path` values, prefer an existing Magic Hour file path or a `file_path` returned by the upload-URL endpoint after the file bytes are uploaded. Direct public media URLs may work when they are stable, fetchable, and return raw file bytes, but hotlinked URLs can fail; when in doubt, use the presigned…

NameTypeReqDescription
assetsobjectyesSource video and reference character image for the job.
contextstringExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,…
end_secondsnumberyesEnd time of your clip (seconds). Must be greater than start_seconds.
namestringGive your video a custom name for easy identification.
resolutionstringOutput video resolution. Defaults to 480p, the lowest resolution available on your plan.
start_secondsnumberStart time of your clip (seconds). Must be ≥ 0.
styleobjectOptional style controls for replace vs animate mode and subject selection.
NameTypeReqDescription
credits_chargedintegeryesThe amount of credits deducted from your account to generate the video. If the status is not 'complete', this value is an estimate and may be adjusted upon completion based on the actual FPS of the o…
idstringyesUnique ID of the video. Use it with the [Get video Project API](https://docs.magichour.ai/api-reference/video-projects/get-video-details) to fetch status and downloads.

No examples provided.

face_detection_detect_faces ~446

Detect faces in an image or video. Use this API to get the list of faces detected in the image or video to use in the [face swap photo](https://docs.magichour.ai/api-reference/image-projects/face-swap-photo) or [face swap video](https://docs.magichour.ai/api-reference/video-projects/face-swap-video) API calls for multi-face swaps. Note: Face detection is free to use for the near future. Pricing may change in the future. MCP guidance: - This starts an async face-detection task and returns an `id`. Use the face-detection details endpoint with that id to retrieve detected faces before doing individual face swaps. - For `*_file_path` values, prefer an existing Magic Hour file path or a `file_path` returned by the upload-URL endpoint after the file bytes are uploaded. Direct public media URLs may work when they are stable, fetchable, and return raw file bytes, but hotlinked URLs can fail; when in doubt, use the presigned upload flow first and pass the returned `file_path`.

NameTypeReqDescription
assetsobjectyesProvide the assets for face detection
confidence_scorenumberConfidence threshold for filtering detected faces. * Higher values (e.g., 0.9) include only faces detected with high certainty, reducing false positives. * Lower values (e.g., 0.3) include more fac…
contextstringExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,…
NameTypeReqDescription
credits_chargedintegeryesThe credits charged for the task.
idstringyesThe id of the task. Use this value in the [get face detection details API](https://docs.magichour.ai/api-reference/files/get-face-detection-details) to get the details of the face detection task.

No examples provided.

face_detection_retrieve_details ~268

Get the details of a face detection task. Use this API to get the list of faces detected in the image or video to use in the [face swap photo](https://docs.magichour.ai/api-reference/image-projects/face-swap-photo) or [face swap video](https://docs.magichour.ai/api-reference/video-projects/face-swap-video) API calls for multi-face swaps.

NameTypeReqDescription
contextstringExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,…
idstringyesThe id of the task. This value is returned by the [face detection API](https://docs.magichour.ai/api-reference/files/face-detection#response-id).
NameTypeReqDescription
credits_chargedintegeryesThe credits charged for the task.
facesarrayyesThe faces detected in the image or video. The list is populated as faces are detected.
idstringyesThe id of the task. This value is returned by the [face detection API](https://docs.magichour.ai/api-reference/files/face-detection#response-id).
statusstringyesThe status of the detection.

No examples provided.

face_swap_create_video ~718

**What this API does** Create the same Face Swap you can make in the browser, but programmatically, so you can automate it, run it at scale, or connect it to your own app or workflow. **Good for** - Automation and batch processing - Adding face swap into apps, pipelines, or tools **How it works (3 steps)** 1) Upload your inputs (video, image, or audio) with [Generate Upload URLs](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls) and copy the `file_path`. 2) Send a request to create a face swap job with the basic fields. 3) Check the job status until it's `complete`, then download the result from `downloads`. **Key options** - Inputs: usually a file, sometimes a YouTube link, depending on project type - Resolution: free users are limited to 576px; higher plans unlock HD and larger sizes - Extra fields: e.g. `face_swap_mode`, `start_seconds`/`end_seconds`, or a text prompt **Cost** Credits are only charged for the frames that actually render. You'll see an estimate when the job is queued, and the final total after it's done. For detailed examples, see the [product page](https://magichour.ai/products/face-swap). MCP guidance: - This starts an async video generation job and returns `id` plus `credits_charged` immediately. If the user wants the finished result, call the `wait_for_video_project` helper with the returned id, or poll the matching `GET /v1/video-projects/{id}` endpoint until status is `complete`, `error`, or `canceled`. Completed projects include `downloads` with direct URLs. The custom wait helper also returns `exact_download_urls` separately from expiration metadata. - For `*_file_path` values, prefer an existing Magic Hour file path or a `file_path` returned by the upload-URL endpoint after the file bytes are uploaded. Direct public media URLs may work when they are stable, fetchable, and return raw file bytes, but hotlinked URLs can fail; when in doubt, use the presigned upload flow first and pass the r…

NameTypeReqDescription
assetsobjectyesProvide the assets for face swap. For video, The `video_source` field determines whether `video_file_path` or `youtube_url` field is used
contextstringExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,…
end_secondsnumberyesEnd time of your clip (seconds). Must be greater than start_seconds.
namestringGive your video a custom name for easy identification.
start_secondsnumberyesStart time of your clip (seconds). Must be ≥ 0.
styleobjectStyle of the face swap video.
NameTypeReqDescription
credits_chargedintegeryesThe amount of credits deducted from your account to generate the video. If the status is not 'complete', this value is an estimate and may be adjusted upon completion based on the actual FPS of the o…
idstringyesUnique ID of the video. Use it with the [Get video Project API](https://docs.magichour.ai/api-reference/video-projects/get-video-details) to fetch status and downloads.

No examples provided.

face_swap_photo_create_image ~407

Create a face swap photo. Each photo costs 10 credits. The height/width of the output image depends on your subscription. Please refer to our [pricing](https://magichour.ai/pricing) page for more details MCP guidance: - This starts an async image generation job and returns `id` plus `credits_charged` immediately. If the user wants the finished result, call the `wait_for_image_project` helper with the returned id, or poll the matching `GET /v1/image-projects/{id}` endpoint until status is `complete`, `error`, or `canceled`. Completed projects include `downloads` with direct URLs. The custom wait helper also returns `exact_download_urls` separately from expiration metadata. - For `*_file_path` values, prefer an existing Magic Hour file path or a `file_path` returned by the upload-URL endpoint after the file bytes are uploaded. Direct public media URLs may work when they are stable, fetchable, and return raw file bytes, but hotlinked URLs can fail; when in doubt, use the presigned upload flow first and pass the returned `file_path`.

NameTypeReqDescription
assetsobjectyesProvide the assets for face swap photo
contextstringExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,…
namestringGive your image a custom name for easy identification.
NameTypeReqDescription
credits_chargedintegeryesThe amount of credits deducted from your account to generate the image. We charge credits right when the request is made. If an error occurred while generating the image(s), credits will be refunde…
idstringyesUnique ID of the image. Use it with the [Get image Project API](https://docs.magichour.ai/api-reference/image-projects/get-image-details) to fetch status and downloads.

No examples provided.

fetch_audio_download ~216

Fetch a audio `downloads[n].url` from a completed audio project and return it as inline MCP audio content for compatible clients. Pass the exact full signed URL from `downloads[n].url` without trimming query parameters; `expires_at` is separate metadata, not part of the URL.

NameTypeReqDescription
contextstringExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,…
download_urlstringyes
max_bytesinteger

No output schema declared.

No examples provided.

fetch_image_download ~216

Fetch a image `downloads[n].url` from a completed image project and return it as inline MCP image content for compatible clients. Pass the exact full signed URL from `downloads[n].url` without trimming query parameters; `expires_at` is separate metadata, not part of the URL.

NameTypeReqDescription
contextstringExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,…
download_urlstringyes
max_bytesinteger

No output schema declared.

No examples provided.

fetch_video_download ~217

Fetch a video `downloads[n].url` from a completed video project and return it as an embedded MCP binary resource for compatible clients. Pass the exact full signed URL from `downloads[n].url` without trimming query parameters; `expires_at` is separate metadata, not part of the URL.

NameTypeReqDescription
contextstringExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,…
download_urlstringyes
max_bytesinteger

No output schema declared.

No examples provided.

head_swap_create_image ~454

Swap a head onto a body image. Each image costs 10 credits. Output resolution depends on your subscription; you may set `max_resolution` lower than your plan maximum if desired. MCP guidance: - This starts an async image generation job and returns `id` plus `credits_charged` immediately. If the user wants the finished result, call the `wait_for_image_project` helper with the returned id, or poll the matching `GET /v1/image-projects/{id}` endpoint until status is `complete`, `error`, or `canceled`. Completed projects include `downloads` with direct URLs. The custom wait helper also returns `exact_download_urls` separately from expiration metadata. - For `*_file_path` values, prefer an existing Magic Hour file path or a `file_path` returned by the upload-URL endpoint after the file bytes are uploaded. Direct public media URLs may work when they are stable, fetchable, and return raw file bytes, but hotlinked URLs can fail; when in doubt, use the presigned upload flow first and pass the returned `file_path`.

NameTypeReqDescription
assetsobjectyesProvide the body and head images for head swap
contextstringExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,…
max_resolutionintegerConstrains the larger dimension (height or width) of the output. Omit to use the maximum allowed for your plan (capped at 2048px). Values above your plan maximum are clamped down to your plan's maxim…
namestringGive your image a custom name for easy identification.
NameTypeReqDescription
credits_chargedintegeryesThe amount of credits deducted from your account to generate the image. We charge credits right when the request is made. If an error occurred while generating the image(s), credits will be refunde…
idstringyesUnique ID of the image. Use it with the [Get image Project API](https://docs.magichour.ai/api-reference/image-projects/get-image-details) to fetch status and downloads.

No examples provided.

image_background_remover_create_image ~372

Remove background from image. Each image costs 5 credits. MCP guidance: - This starts an async image generation job and returns `id` plus `credits_charged` immediately. If the user wants the finished result, call the `wait_for_image_project` helper with the returned id, or poll the matching `GET /v1/image-projects/{id}` endpoint until status is `complete`, `error`, or `canceled`. Completed projects include `downloads` with direct URLs. The custom wait helper also returns `exact_download_urls` separately from expiration metadata. - For `*_file_path` values, prefer an existing Magic Hour file path or a `file_path` returned by the upload-URL endpoint after the file bytes are uploaded. Direct public media URLs may work when they are stable, fetchable, and return raw file bytes, but hotlinked URLs can fail; when in doubt, use the presigned upload flow first and pass the returned `file_path`.

NameTypeReqDescription
assetsobjectyesProvide the assets for background removal
contextstringExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,…
namestringGive your image a custom name for easy identification.
NameTypeReqDescription
credits_chargedintegeryesThe amount of credits deducted from your account to generate the image. We charge credits right when the request is made. If an error occurred while generating the image(s), credits will be refunde…
idstringyesUnique ID of the image. Use it with the [Get image Project API](https://docs.magichour.ai/api-reference/image-projects/get-image-details) to fetch status and downloads.

No examples provided.

image_projects_delete ~190

Permanently delete the rendered image(s). This action is not reversible, please be sure before deleting.

NameTypeReqDescription
contextstringExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,…
idstringyesUnique ID of the image project. This value is returned by all of the POST APIs that create an image.

No output schema declared.

No examples provided.

image_projects_retrieve_details ~340

Check the progress of a image project. The `downloads` field is populated after a successful render. **Statuses** - `queued` — waiting to start - `rendering` — in progress - `complete` — ready; see `downloads` - `error` — a failure occurred (see `error`) - `canceled` — user canceled - `draft` — not used MCP guidance: - Use this after a create tool to poll job status. When status is `complete`, surface the `downloads` URLs to the user; if status is `error`, surface the error message. - Each `downloads[n].url` is already the full signed download URL. Use it exactly as returned. Do not shorten it, strip query parameters, or append `expires_at` onto the URL string.

NameTypeReqDescription
contextstringExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,…
idstringyesUnique ID of the image project. This value is returned by all of the POST APIs that create an image.
NameTypeReqDescription
created_atstringyes
credits_chargedintegeryesThe amount of credits deducted from your account to generate the image. We charge credits right when the request is made. If an error occurred while generating the image(s), credits will be refunde…
downloadsarrayyes
enabledbooleanyesWhether this resource is active. If false, it is deleted.
errorobject|nullyesIn the case of an error, this object will contain the error encountered during video render
idstringyesUnique ID of the image. Use it with the [Get image Project API](https://docs.magichour.ai/api-reference/image-projects/get-image-details) to fetch status and downloads.
image_countintegeryesNumber of images generated
namestring|nullyesThe name of the image.
statusstringyesThe status of the image. - `draft` - the project was created but has not been submitted for rendering - `queued` - the job is waiting for an available server - `rendering` - the job is being process…
typestringyesThe type of the image project. Possible values are FACE_EDITOR, AI_IMAGE_EDITOR, GENERATIVE_FILL, AI_SELFIE, AI_HEADSHOT, AI_INFLUENCER, AI_IMAGE, AI_MEME, CLOTHES_CHANGER, BACKGROUND_REMOVER, FACE_S…

No examples provided.

image_to_video_create_video ~2,544

**What this API does** Create the same Image To Video you can make in the browser, but programmatically, so you can automate it, run it at scale, or connect it to your own app or workflow. **Good for** - Automation and batch processing - Adding image to video into apps, pipelines, or tools **How it works (3 steps)** 1) Upload your inputs (video, image, or audio) with [Generate Upload URLs](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls) and copy the `file_path`. 2) Send a request to create a image to video job with the basic fields. 3) Check the job status until it's `complete`, then download the result from `downloads`. **Key options** - Inputs: usually a file, sometimes a YouTube link, depending on project type - Resolution: free users are limited to 576px; higher plans unlock HD and larger sizes - Extra fields: e.g. `face_swap_mode`, `start_seconds`/`end_seconds`, or a text prompt **Cost** Credits are only charged for the frames that actually render. You'll see an estimate when the job is queued, and the final total after it's done. For detailed examples, see the [product page](https://magichour.ai/products/image-to-video). MCP guidance: - This starts an async video generation job and returns `id` plus `credits_charged` immediately. If the user wants the finished result, call the `wait_for_video_project` helper with the returned id, or poll the matching `GET /v1/video-projects/{id}` endpoint until status is `complete`, `error`, or `canceled`. Completed projects include `downloads` with direct URLs. The custom wait helper also returns `exact_download_urls` separately from expiration metadata. - For `*_file_path` values, prefer an existing Magic Hour file path or a `file_path` returned by the upload-URL endpoint after the file bytes are uploaded. Direct public media URLs may work when they are stable, fetchable, and return raw file bytes, but hotlinked URLs can fail; when in doubt, use the presigned upload flow…

NameTypeReqDescription
assetsobjectyesProvide the assets for image-to-video. Sora 2 only supports images with an aspect ratio of `9:16` or `16:9`.
audiobooleanWhether to include audio in the video. Defaults to `false` if not specified. Audio support varies by model: * **`gemini-omni-1.1`**: Not supported * **`kling-2.6`**: Not supported * **`kling-3.0`**:…
contextstringExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,…
end_secondsnumberyesThe total duration of the output video in seconds. Supported durations depend on the chosen model: * **`gemini-omni-1.1`**: 3, 4, 5, 6, 7, 8, 9, 10 * **`kling-2.6`**: 5, 10 * **`kling-3.0`**: 3, 4,…
modelstringThe AI model to use for video generation. * `default`: uses our currently recommended model for general use. For paid tiers, defaults to `kling-3.0`. For free tiers, it defaults to `ltx-2.5`. * `gem…
namestringGive your video a custom name for easy identification.
resolutionstringControls the output video resolution. Defaults to `720p` on paid tiers and `480p` on free tiers. * **`gemini-omni-1.1`**: Supports 360p, 720p, 1080p, 4k. * **`kling-2.6`**: Supports 720p, 1080p. * *…
styleobjectAttributed used to dictate the style of the output
NameTypeReqDescription
credits_chargedintegeryesThe amount of credits deducted from your account to generate the video. If the status is not 'complete', this value is an estimate and may be adjusted upon completion based on the actual FPS of the o…
idstringyesUnique ID of the video. Use it with the [Get video Project API](https://docs.magichour.ai/api-reference/video-projects/get-video-details) to fetch status and downloads.

No examples provided.

lip_sync_create_video ~780

**What this API does** Create the same Lip Sync you can make in the browser, but programmatically, so you can automate it, run it at scale, or connect it to your own app or workflow. **Good for** - Automation and batch processing - Adding lip sync into apps, pipelines, or tools **How it works (3 steps)** 1) Upload your inputs (video, image, or audio) with [Generate Upload URLs](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls) and copy the `file_path`. 2) Send a request to create a lip sync job with the basic fields. 3) Check the job status until it's `complete`, then download the result from `downloads`. **Key options** - Inputs: usually a file, sometimes a YouTube link, depending on project type - Resolution: free users are limited to 576px; higher plans unlock HD and larger sizes - Extra fields: e.g. `face_swap_mode`, `start_seconds`/`end_seconds`, or a text prompt **Cost** Credits are only charged for the frames that actually render. You'll see an estimate when the job is queued, and the final total after it's done. For detailed examples, see the [product page](https://magichour.ai/products/lip-sync). MCP guidance: - This starts an async video generation job and returns `id` plus `credits_charged` immediately. If the user wants the finished result, call the `wait_for_video_project` helper with the returned id, or poll the matching `GET /v1/video-projects/{id}` endpoint until status is `complete`, `error`, or `canceled`. Completed projects include `downloads` with direct URLs. The custom wait helper also returns `exact_download_urls` separately from expiration metadata. - For `*_file_path` values, prefer an existing Magic Hour file path or a `file_path` returned by the upload-URL endpoint after the file bytes are uploaded. Direct public media URLs may work when they are stable, fetchable, and return raw file bytes, but hotlinked URLs can fail; when in doubt, use the presigned upload flow first and pass the retur…

NameTypeReqDescription
assetsobjectyesProvide the assets for lip-sync. For video, The `video_source` field determines whether `video_file_path` or `youtube_url` field is used
contextstringExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,…
end_secondsnumberyesEnd time of your clip (seconds). Must be greater than start_seconds.
max_fps_limitnumberDefines the maximum FPS (frames per second) for the output video. If the input video's FPS is lower than this limit, the output video will retain the input FPS. This is useful for reducing unnecessar…
namestringGive your video a custom name for easy identification.
start_secondsnumberyesStart time of your clip (seconds). Must be ≥ 0.
styleobjectAttributes used to dictate the style of the output
NameTypeReqDescription
credits_chargedintegeryesThe amount of credits deducted from your account to generate the video. If the status is not 'complete', this value is an estimate and may be adjusted upon completion based on the actual FPS of the o…
idstringyesUnique ID of the video. Use it with the [Get video Project API](https://docs.magichour.ai/api-reference/video-projects/get-video-details) to fetch status and downloads.

No examples provided.

photo_colorizer_create_image ~371

Colorize image. Each image costs 10 credits. MCP guidance: - This starts an async image generation job and returns `id` plus `credits_charged` immediately. If the user wants the finished result, call the `wait_for_image_project` helper with the returned id, or poll the matching `GET /v1/image-projects/{id}` endpoint until status is `complete`, `error`, or `canceled`. Completed projects include `downloads` with direct URLs. The custom wait helper also returns `exact_download_urls` separately from expiration metadata. - For `*_file_path` values, prefer an existing Magic Hour file path or a `file_path` returned by the upload-URL endpoint after the file bytes are uploaded. Direct public media URLs may work when they are stable, fetchable, and return raw file bytes, but hotlinked URLs can fail; when in doubt, use the presigned upload flow first and pass the returned `file_path`.

NameTypeReqDescription
assetsobjectyesProvide the assets for photo colorization
contextstringExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,…
namestringGive your image a custom name for easy identification.
NameTypeReqDescription
credits_chargedintegeryesThe amount of credits deducted from your account to generate the image. We charge credits right when the request is made. If an error occurred while generating the image(s), credits will be refunde…
idstringyesUnique ID of the image. Use it with the [Get image Project API](https://docs.magichour.ai/api-reference/image-projects/get-image-details) to fetch status and downloads.

No examples provided.

ping ~150

Check that the Magic Hour MCP server is reachable.

NameTypeReqDescription
contextstringExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,…
NameTypeReqDescription
resultstringyes

No examples provided.

saved_items_list ~267

Returns active saved items owned by the authenticated account, newest first. Each item includes every saved asset with a durable file_path for reuse in compatible generation APIs and a temporary signed URL for previewing or downloading. Filter by type to find characters, references, voices, moodboards, or brand kits. To fetch the next page, pass the response's next_cursor as cursor.

NameTypeReqDescription
contextstringExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,…
cursorstringOpaque pagination cursor from the previous response's next_cursor.
limitintegerMaximum number of saved items to return. Defaults to 20.
typestringOnly return saved items of this type.
NameTypeReqDescription
itemsarrayyes
next_cursorstring|nullyesCursor for the next page, or null when there are no more saved items.

No examples provided.

text_to_video_create_video ~2,828

**What this API does** Create the same Text To Video you can make in the browser, but programmatically, so you can automate it, run it at scale, or connect it to your own app or workflow. **Good for** - Automation and batch processing - Adding text to video into apps, pipelines, or tools **How it works (3 steps)** 1) Upload your inputs (video, image, or audio) with [Generate Upload URLs](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls) and copy the `file_path`. 2) Send a request to create a text to video job with the basic fields. 3) Check the job status until it's `complete`, then download the result from `downloads`. **Key options** - Inputs: usually a file, sometimes a YouTube link, depending on project type - Resolution: free users are limited to 576px; higher plans unlock HD and larger sizes - Extra fields: e.g. `face_swap_mode`, `start_seconds`/`end_seconds`, or a text prompt **Cost** Credits are only charged for the frames that actually render. You'll see an estimate when the job is queued, and the final total after it's done. For detailed examples, see the [product page](https://magichour.ai/products/text-to-video). MCP guidance: - This starts an async video generation job and returns `id` plus `credits_charged` immediately. If the user wants the finished result, call the `wait_for_video_project` helper with the returned id, or poll the matching `GET /v1/video-projects/{id}` endpoint until status is `complete`, `error`, or `canceled`. Completed projects include `downloads` with direct URLs. The custom wait helper also returns `exact_download_urls` separately from expiration metadata.

NameTypeReqDescription
aspect_ratiostringDetermines the aspect ratio of the output video. * **`gemini-omni-1.1`**: Supports 16:9, 9:16. * **`kling-2.6`**: Supports 9:16, 16:9, 1:1. * **`kling-3.0`**: Supports 9:16, 16:9, 1:1. * **`ltx-2.3`…
audiobooleanWhether to include audio in the video. Defaults to `false` if not specified. Audio support varies by model: * **`gemini-omni-1.1`**: Not supported * **`kling-2.6`**: Not supported * **`kling-3.0`**:…
contextstringExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,…
end_secondsnumberyesThe total duration of the output video in seconds. Supported durations depend on the chosen model: * **`gemini-omni-1.1`**: 3, 4, 5, 6, 7, 8, 9, 10 * **`kling-2.6`**: 5, 10 * **`kling-3.0`**: 3, 4,…
modelstringThe AI model to use for video generation. * `default`: uses our currently recommended model for general use. For paid tiers, defaults to `kling-3.0`. For free tiers, it defaults to `ltx-2.5`. * `gem…
namestringGive your video a custom name for easy identification.
resolutionstringControls the output video resolution. Defaults to `720p` on paid tiers and `480p` on free tiers. * **`gemini-omni-1.1`**: Supports 360p, 720p, 1080p, 4k. * **`kling-2.6`**: Supports 720p, 1080p. * *…
styleobjectyes
NameTypeReqDescription
credits_chargedintegeryesThe amount of credits deducted from your account to generate the video. If the status is not 'complete', this value is an estimate and may be adjusted upon completion based on the actual FPS of the o…
idstringyesUnique ID of the video. Use it with the [Get video Project API](https://docs.magichour.ai/api-reference/video-projects/get-video-details) to fetch status and downloads.

No examples provided.

video_assets_generate_presigned_url ~559

Generates a list of pre-signed upload URLs for the assets required. This API is only necessary if you want to upload to Magic Hour's storage. Refer to the [Input Files Guide](https://docs.magichour.ai/integration/inputs-and-outputs) for more details. The response array will match the order of items in the request body. **Valid file extensions per asset type**: - video: mp4, m4v, mov, webm - audio: mp3, wav, aac, flac, webm, weba, m4a, opus, ogg, oga, aiff, amr - image: png, jpg, jpeg, jfif, heic, heif, webp, avif, jp2, tiff, tif, bmp - gif: gif, webp, webm > Note: `gif` is only supported for face swap API `video_file_path` field. Once you receive an upload URL, send a `PUT` request to upload the file directly. Example: ``` curl -X PUT --data '@/path/to/file/video.mp4' \ https://videos.magichour.ai/api-assets/id/video.mp4?<auth params from the API response> ``` MCP guidance: - This only creates presigned upload URLs. For local files, upload the raw bytes to each returned `upload_url` outside the generation call, then pass the matching `file_path` into the create tool. - For `*_file_path` values, prefer an existing Magic Hour file path or a `file_path` returned by the upload-URL endpoint after the file bytes are uploaded. Direct public media URLs may work when they are stable, fetchable, and return raw file bytes, but hotlinked URLs can fail; when in doubt, use the presigned upload flow first and pass the returned `file_path`.

NameTypeReqDescription
contextstringExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,…
itemsarrayyesThe list of assets to upload. The response array will match the order of items in the request body.
NameTypeReqDescription
itemsarrayyesThe list of upload URLs and file paths for the assets. The response array will match the order of items in the request body. Refer to the [Input Files Guide](https://docs.magichour.ai/integration/inp…

No examples provided.

video_projects_delete ~189

Permanently delete the rendered video. This action is not reversible, please be sure before deleting.

NameTypeReqDescription
contextstringExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,…
idstringyesUnique ID of the video project. This value is returned by all of the POST APIs that create a video.

No output schema declared.

No examples provided.

video_projects_retrieve_details ~340

Check the progress of a video project. The `downloads` field is populated after a successful render. **Statuses** - `queued` — waiting to start - `rendering` — in progress - `complete` — ready; see `downloads` - `error` — a failure occurred (see `error`) - `canceled` — user canceled - `draft` — not used MCP guidance: - Use this after a create tool to poll job status. When status is `complete`, surface the `downloads` URLs to the user; if status is `error`, surface the error message. - Each `downloads[n].url` is already the full signed download URL. Use it exactly as returned. Do not shorten it, strip query parameters, or append `expires_at` onto the URL string.

NameTypeReqDescription
contextstringExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,…
idstringyesUnique ID of the video project. This value is returned by all of the POST APIs that create a video.
NameTypeReqDescription
created_atstringyes
credits_chargedintegeryesThe amount of credits deducted from your account to generate the video. If the status is not 'complete', this value is an estimate and may be adjusted upon completion based on the actual FPS of the o…
downloadsarrayyes
enabledbooleanyesWhether this resource is active. If false, it is deleted.
end_secondsnumberyesEnd time of your clip (seconds). Must be greater than start_seconds.
errorobject|nullyesIn the case of an error, this object will contain the error encountered during video render
fpsnumberyesFrame rate of the video. If the status is not 'complete', the frame rate is an estimate and will be adjusted when the video completes.
heightintegeryesThe height of the final output video. A value of -1 indicates the height can be ignored.
idstringyesUnique ID of the video. Use it with the [Get video Project API](https://docs.magichour.ai/api-reference/video-projects/get-video-details) to fetch status and downloads.
namestring|nullyesThe name of the video.
start_secondsnumberyesStart time of your clip (seconds). Must be ≥ 0.
statusstringyesThe status of the video. - `draft` - the project was created but has not been submitted for rendering - `queued` - the job is waiting for an available server - `rendering` - the job is being process…
typestringyesThe type of the video project. Possible values are ANIMATION, AUTO_SUBTITLE, VIDEO_TO_VIDEO, FACE_SWAP, TEXT_TO_VIDEO, IMAGE_TO_VIDEO, LIP_SYNC, TALKING_PHOTO, AVATAR, VIDEO_UPSCALER, VIDEO_EDITOR, C…
widthintegeryesThe width of the final output video. A value of -1 indicates the width can be ignored.

No examples provided.

Common questions

What is the Magic Hour MCP server?

Magic Hour is an MCP server listed in the public MCP registry as io.github.magichourhq/magic-hour. Create and edit images, videos, and audio through Magic Hour's hosted Streamable HTTP MCP server. This page covers its hosted endpoint (https://mcp.magichour.ai/).

Is the Magic Hour MCP server safe to use?

Magic Hour scores 73 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Magic Hour MCP server expose?

Magic Hour exposes 45 tools: ping, wait_for_video_project, wait_for_image_project, wait_for_audio_project, fetch_image_download, and 40 more. Their descriptions and schemas cost roughly 24,788 tokens of context every time the server is loaded.

Does the Magic Hour MCP server require authentication?

No. We connected to Magic Hour without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

Is the Magic Hour MCP server still maintained?

Magic Hour is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.