Magic Hour
REMOTE · MCP.MAGICHOUR.AI
Create and edit images and video, generate music, and retrieve existing audio projects.
Available components
Last scanned (19 hours ago)
Scores higher than 81% of remote servers
Reachable. Last reached 4 Nov 2026.
Category Design and Media
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 Security94
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. View diagnostics → Pass
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
- The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents. View diagnostics → Partial
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability71
- 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 12683 tokens (~248/item across 51 items; 49 tools + 2 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 Management12
- Stability check failed: schema churn in the 29 days we've observed: 37 tool removals, 0 breaking changes, 0 auth/transport breaks, 42 additions. See how to fix → Fail
Tool Coverage94
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 80% of tool parameters carry a description.Partial
- Structured output schemas are declared (82% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 4 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 51 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
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.
- 3 Nov 26 0
- The server rewrote its instructions, which are the text every model session reads security
- New tool “upload_chatgpt_image” functional
- 2 Nov 26 0
- “create_video_from_image” reworded the description of “audio” cosmetic
- “create_video_from_image” reworded the description of “end_seconds” cosmetic
- “create_video_from_image” reworded the description of “resolution” cosmetic
- “create_video_from_text” reworded the description of “aspect_ratio” cosmetic
- “create_video_from_text” reworded the description of “audio” cosmetic
- “create_video_from_text” reworded the description of “end_seconds” cosmetic
- “create_video_from_text” reworded the description of “references” cosmetic
- “create_video_from_text” reworded the description of “resolution” cosmetic
- “edit_video” reworded the description of “end_seconds” cosmetic
- “edit_video” reworded the description of “model” cosmetic
- “edit_video” reworded the description of “resolution” cosmetic
11 cosmetic changes on this day. Switch on “Show cosmetic changes” to see them.
- 31 Oct 26 −11
- A breaking change shipped without a version bump: still 0.1.0 ▼ security
- Tool “face_swap_create_video” was removed ▼ security
- Tool “account_retrieve” was removed ▼ security
- Tool “ai_clothes_changer_create_image” was removed ▼ security
- Tool “ai_face_editor_edit_image” was removed ▼ security
- Tool “ai_gif_generator_create_image” was removed ▼ security
- Tool “ai_headshot_generator_create_image” was removed ▼ security
- Tool “ai_image_editor_create_image” was removed ▼ security
- Tool “ai_image_generator_create_image” was removed ▼ security
- Tool “ai_image_upscaler_create_image” was removed ▼ security
- Tool “ai_meme_generator_create_image” was removed ▼ security
- Tool “ai_music_generator_create_audio” was removed ▼ security
- Tool “ai_qr_code_generator_create_image” was removed ▼ security
- Tool “ai_talking_photo_create_talking_photo” was removed ▼ security
- Tool “ai_ugc_ad_create_video” was removed ▼ security
- Tool “ai_video_editor_create_video” was removed ▼ security
- Tool “ai_video_translator_create_video” was removed ▼ security
- Tool “ai_video_upscaler_create_video” was removed ▼ security
- Tool “animation_create_video” was removed ▼ security
- Tool “audio_projects_delete” was removed ▼ security
- Tool “audio_projects_retrieve_details” was removed ▼ security
- Tool “audio_to_video_create_video” was removed ▼ security
- Tool “auto_subtitle_generator_create_video” was removed ▼ security
- Tool “body_swap_create_image” was removed ▼ security
- Tool “character_replace_create_video” was removed ▼ security
- Tool “face_detection_detect_faces” was removed ▼ security
- Tool “face_detection_retrieve_details” was removed ▼ security
- Tool “face_swap_photo_create_image” was removed ▼ security
- Tool “head_swap_create_image” was removed ▼ security
- Tool “image_background_remover_create_image” was removed ▼ security
- Tool “image_projects_delete” was removed ▼ security
- Tool “image_projects_retrieve_details” was removed ▼ security
- Tool “image_to_video_create_video” was removed ▼ security
- Tool “lip_sync_create_video” was removed ▼ security
- Tool “photo_colorizer_create_image” was removed ▼ security
- Tool “saved_items_list” was removed ▼ security
- Tool “text_to_video_create_video” was removed ▼ security
- Tool “video_assets_generate_presigned_url” was removed ▼ security
- Tool “video_projects_delete” was removed ▼ security
- Tool “video_projects_retrieve_details” was removed ▼ security
- Tool “video_to_video_create_video” was removed ▼ security
- Tool “workflow_guide_retrieve” was removed ▼ security
- The server rewrote its instructions, which are the text every model session reads security
- New tool “delete_audio_project”, which the server declares destructive security
- New tool “delete_image_project”, which the server declares destructive security
- New tool “delete_video_project”, which the server declares destructive security
- Tool “fetch_audio_download” rewrote its description, which is the text the model reads security
- Tool “fetch_image_download” rewrote its description, which is the text the model reads security
- Tool “fetch_video_download” rewrote its description, which is the text the model reads security
- Tool “ping” rewrote its description, which is the text the model reads security
- Tool “wait_for_audio_project” rewrote its description, which is the text the model reads security
- Tool “wait_for_image_project” rewrote its description, which is the text the model reads security
- Tool “wait_for_video_project” rewrote its description, which is the text the model reads security
- Schema quality: 385 → 247 ▲ functional
- New tool “add_subtitles_to_video” functional
- New tool “change_clothes_in_photo” functional
- New tool “colorize_photo” functional
- New tool “create_animation” functional
- New tool “create_gif_or_short_video” functional
- New tool “create_lip_sync_video” functional
- New tool “create_meme” functional
- New tool “create_qr_code” functional
- New tool “create_spoken_ad_video” functional
- New tool “create_talking_photo” functional
- New tool “create_video_from_audio” functional
- New tool “create_video_from_image” functional
- New tool “create_video_from_text” functional
- New tool “detect_faces” functional
- New tool “edit_face_in_photo” functional
- New tool “edit_image” functional
- New tool “edit_video” functional
- New tool “generate_headshot” functional
- New tool “generate_image” functional
- New tool “generate_music” functional
- New tool “get_account_info” functional
- New tool “get_audio_project” functional
- New tool “get_face_detection_results” functional
- New tool “get_image_project” functional
- New tool “get_upload_urls” functional
- New tool “get_video_project” functional
- New tool “get_workflow_guide” functional
- New tool “list_saved_items” functional
- New tool “place_person_in_scene” functional
- New tool “remove_image_background” functional
- New tool “replace_character_in_video” functional
- New tool “restyle_video” functional
- New tool “swap_face_in_photo” functional
- New tool “swap_face_in_video” functional
- New tool “swap_head_in_photo” functional
- New tool “translate_video” functional
- New tool “upscale_image” functional
- New tool “upscale_video” functional
- 30 Oct 26 0
- Tool “video_assets_generate_presigned_url” rewrote its description, which is the text the model reads security
- “ai_ugc_ad_create_video” reworded the description of “script” cosmetic
- 26 Oct 26 0
- “ai_talking_photo_create_talking_photo” reworded the description of “end_seconds” cosmetic
- “ai_talking_photo_create_talking_photo” reworded the description of “start_seconds” cosmetic
- “ai_video_editor_create_video” reworded the description of “end_seconds” cosmetic
- “character_replace_create_video” reworded the description of “model” cosmetic
4 cosmetic changes on this day. Switch on “Show cosmetic changes” to see them.
- 25 Oct 26 0
- The server rewrote its instructions, which are the text every model session reads security
- Tool “video_to_video_create_video” rewrote its description, which is the text the model reads security
- Tool “video_to_video_create_video” changed its title: Video-to-Video → Restyle an existing video segment cosmetic
- 23 Oct 26 0
- Tool “ai_video_editor_create_video” rewrote its description, which is the text the model reads security
- Tool “ai_video_translator_create_video” rewrote its description, which is the text the model reads security
- Tool “audio_to_video_create_video” rewrote its description, which is the text the model reads security
- Tool “character_replace_create_video” rewrote its description, which is the text the model reads security
- Tool “face_swap_create_video” rewrote its description, which is the text the model reads security
- Tool “video_to_video_create_video” rewrote its description, which is the text the model reads security
- New tool “ai_music_generator_create_audio” functional
- New tool “ai_video_upscaler_create_video” functional
- “ai_talking_photo_create_talking_photo” added an optional parameter “resolution” cosmetic
- “ai_ugc_ad_create_video” reworded the description of “script” cosmetic
- “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 “references” cosmetic
- “text_to_video_create_video” reworded the description of “resolution” cosmetic
- “ai_talking_photo_create_talking_photo” dropped the optional parameter “max_resolution” cosmetic
- Tool “character_replace_create_video” changed its title: Character Replace → Replace or animate a character using video and a reference image cosmetic
- Tool “face_swap_create_video” changed its title: Face Swap Video → Swap faces in an existing video cosmetic
- 22 Oct 26 0
- The server rewrote its instructions, which are the text every model session reads security
- Tool “ai_image_editor_create_image” rewrote its description, which is the text the model reads security
- Tool “ai_talking_photo_create_talking_photo” rewrote its description, which is the text the model reads security
- Tool “image_to_video_create_video” rewrote its description, which is the text the model reads security
- Tool “lip_sync_create_video” rewrote its description, which is the text the model reads security
- Tool “text_to_video_create_video” rewrote its description, which is the text the model reads security
- Tool “ai_image_editor_create_image” changed its title: AI Image Editor → Edit supplied images cosmetic
- Tool “ai_talking_photo_create_talking_photo” changed its title: AI Talking Photo → Make a still portrait speak from audio cosmetic
- Tool “image_to_video_create_video” changed its title: Image-to-Video → Animate a supplied image into video cosmetic
- Tool “lip_sync_create_video” changed its title: Lip Sync → Lip-sync existing video to replacement audio cosmetic
- Tool “text_to_video_create_video” changed its title: Text-to-Video → Generate video from text cosmetic
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 4 Nov 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 | 1814, 3799 | 8, 8 | Verified |
| magichour.ai. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On tool calls |
| HTTP status | 200 |
WWW-Authenticate challenge Bearer resource_metadata="https://mcp.magichour.ai/.well-known/oauth-protected-resource"
Bearer resource_metadata="https://mcp.magichour.ai/.well-known/oauth-protected-resource" | Header | Value |
|---|---|
| strict-transport-security | max-age=63072000 |
Protected resource metadata
| Document | https://mcp.magichour.ai/.well-known/oauth-protected-resource |
|---|---|
| Retrieved | Yes |
| Resource | https://mcp.magichour.ai |
| Authorisation server | https://magichour.ai |
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/ |
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 →
add_subtitles_to_video Add subtitles to video ~266
Adds automatically generated subtitles to a supplied video segment using a subtitle preset or custom text styling. Starts a background job that costs credits; returns a project id for wait_for_video_project.
| Name | Type | Req | Description |
|---|---|---|---|
| assets | object | yes | Provide the assets for auto subtitle generator |
| end_seconds | number | yes | End time of your clip (seconds). Must be greater than start_seconds. |
| name | string | – | Give your video a custom name for easy identification. |
| start_seconds | number | yes | Start time of your clip (seconds). Must be ≥ 0. |
| style | object | yes | Style 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… |
| Name | Type | Req | Description |
|---|---|---|---|
| credits_charged | integer | yes | The 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… |
| id | string | yes | Unique 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.
change_clothes_in_photo Change clothes in photo ~105
Use only with the user's own likeness or content they are authorized to use. Do not use for impersonation, deception, sexual content, or content involving minors. Changes clothing in a person photo using a supplied garment reference image. Costs 25 credits. Starts a background job; returns a project id for wait_for_image_project.
| Name | Type | Req | Description |
|---|---|---|---|
| assets | object | yes | Provide the assets for clothes changer |
| name | string | – | Give your image a custom name for easy identification. |
| Name | Type | Req | Description |
|---|---|---|---|
| credits_charged | integer | yes | The 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… |
| id | string | yes | Unique 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.
colorize_photo Colorize photo ~64
Colorizes a black-and-white or faded photo. Costs 10 credits; returns a project id for wait_for_image_project.
| Name | Type | Req | Description |
|---|---|---|---|
| assets | object | yes | Provide the assets for photo colorization |
| name | string | – | Give your image a custom name for easy identification. |
| Name | Type | Req | Description |
|---|---|---|---|
| credits_charged | integer | yes | The 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… |
| id | string | yes | Unique 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.
create_animation Create animation ~215
Creates a stylized animated video with art and camera settings, using a custom prompt or an audio-derived prompt mode. Can use an initial image and audio. Credits depend on frame rate and duration; returns a project id for wait_for_video_project.
| Name | Type | Req | Description |
|---|---|---|---|
| assets | object | yes | Provide the assets for animation. |
| end_seconds | number | yes | This value determines the duration of the output video. |
| fps | number | yes | The desire output video frame rate |
| height | integer | yes | The 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 |
| name | string | – | Give your video a custom name for easy identification. |
| style | object | yes | Defines the style of the output video |
| width | integer | yes | The 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 |
| Name | Type | Req | Description |
|---|---|---|---|
| credits_charged | integer | yes | The 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… |
| id | string | yes | Unique 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.
create_gif_or_short_video Create GIF or short video ~90
Generates a short animation from a text prompt, with GIF, MP4 or WebM output. Costs 50 credits. Starts a background job; returns a project id for wait_for_image_project.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | – | Give your gif a custom name for easy identification. |
| output_format | string | – | The output file format for the generated animation. |
| style | object | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| credits_charged | integer | yes | The 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… |
| id | string | yes | Unique 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.
create_lip_sync_video Create lip sync video ~260
Use only with the user's own likeness or content they are authorized to use. Do not use for impersonation, deception, sexual content, or content involving minors. Adjusts an existing video's lip movements to match supplied replacement audio. For a still portrait plus audio, use create_talking_photo. Starts a background job that costs credits; returns a project id for wait_for_video_project.
| Name | Type | Req | Description |
|---|---|---|---|
| assets | object | yes | Provide the assets for lip-sync. For video, The `video_source` field determines whether `video_file_path` or `youtube_url` field is used |
| end_seconds | number | yes | End time of your clip (seconds). Must be greater than start_seconds. |
| max_fps_limit | number | – | Defines 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… |
| name | string | – | Give your video a custom name for easy identification. |
| start_seconds | number | yes | Start time of your clip (seconds). Must be ≥ 0. |
| style | object | – | Attributes used to dictate the style of the output |
| Name | Type | Req | Description |
|---|---|---|---|
| credits_charged | integer | yes | The 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… |
| id | string | yes | Unique 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.
create_meme Create meme ~58
Creates a meme from a topic and template selection. Costs 10 credits. Starts a background job; returns a project id for wait_for_image_project.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | – | The name of the meme. |
| style | object | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| credits_charged | integer | yes | The 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… |
| id | string | yes | Unique 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.
create_qr_code Create QR code ~85
Creates a stylized QR code from supplied text or a URL and an art-style description. Currently costs 0 credits. Starts a background job; returns a project id for wait_for_image_project.
| Name | Type | Req | Description |
|---|---|---|---|
| content | string | yes | The content of the QR code. |
| name | string | – | Give your image a custom name for easy identification. |
| style | object | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| credits_charged | integer | yes | The 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… |
| id | string | yes | Unique 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.
create_spoken_ad_video Create spoken ad video ~420
Creates a creator-style spoken ad video from a prepared image and a text script. Use when the image is ready and the dialogue should be generated from text. Starts a background job that costs credits; returns a project id for wait_for_video_project.
| Name | Type | Req | Description |
|---|---|---|---|
| assets | object | yes | – |
| end_seconds | number | yes | Video duration in seconds. Supported values by model: * kling-3.0: 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 seconds. * ltx-2.5: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 6… |
| model | string | – | Defaults to kling-3.0 on paid plans and ltx-2.5 on free plans. |
| resolution | string | – | Defaults to 720p on paid plans and 480p on free plans. Unsupported model/resolution combinations and resolutions unavailable for your plan are rejected. |
| script | string | yes | The words the actor should speak. Character limits apply after trimming: * kling-3.0: 2304 characters. * ltx-2.5: 1804 characters. * veo3.1: 2500 characters. LTX and Kling dialogue wrappers count tow… |
| Name | Type | Req | Description |
|---|---|---|---|
| credits_charged | integer | yes | The 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… |
| id | string | yes | Unique 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.
create_talking_photo Create talking photo ~249
Use only with the user's own likeness or content they are authorized to use. Do not use for impersonation, deception, sexual content, or content involving minors. Animates a still portrait so it speaks an existing audio recording. Use with a portrait photo and an audio file; text alone is not accepted and this tool does not synthesize speech. Starts a background job that costs credits; returns a project id for wait_for_video_project.
| Name | Type | Req | Description |
|---|---|---|---|
| assets | object | yes | Provide the assets for creating a talking photo |
| end_seconds | number | yes | The end time of the input audio in seconds. Maximum clip length depends on style.generation_mode: realistic 300s, prompted 60s. |
| name | string | – | Give your video a custom name for easy identification. |
| resolution | string | – | Output preset. Overrides `max_resolution`. Defaults to 480p in prompted mode; realistic mode uses the mapped plan maximum. |
| start_seconds | number | yes | The start time of the input audio in seconds. Maximum clip length depends on style.generation_mode: realistic 300s, prompted 60s. |
| style | object | – | Attributes used to dictate the style of the output |
| Name | Type | Req | Description |
|---|---|---|---|
| credits_charged | integer | yes | The 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… |
| id | string | yes | Unique 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.
create_video_from_audio Create video from audio ~168
Generates an audio-guided video from a supplied audio track, with an optional starting image and visual prompt. Starts a background job that costs credits; returns a project id for wait_for_video_project.
| Name | Type | Req | Description |
|---|---|---|---|
| assets | object | yes | Provide the audio file and an optional reference image. |
| end_seconds | number | yes | End time of your clip (seconds). Must be greater than start_seconds. |
| name | string | – | Give your video a custom name for easy identification. |
| resolution | string | – | Output video resolution. Defaults to `720p` on paid tiers and `480p` on free tiers. |
| start_seconds | number | – | Start time of your clip (seconds). Must be ≥ 0. |
| style | object | – | Attributes used to dictate the style of the output |
| Name | Type | Req | Description |
|---|---|---|---|
| credits_charged | integer | yes | The 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… |
| id | string | yes | Unique 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.
create_video_from_image Create video from image ~1,308
Animates a supplied image into a video using motion instructions and available model options. Starts a background job that costs credits; returns a project id for wait_for_video_project.
| Name | Type | Req | Description |
|---|---|---|---|
| assets | object | yes | Provide the assets for image-to-video. |
| audio | boolean | – | Whether 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`**:… |
| end_seconds | number | yes | The total duration of the output video in seconds. Supported durations depend on the chosen model: * **`gemini-omni-1.1`**: any integer from 3 to 10 * **`kling-2.6`**: 5, 10 * **`kling-3.0`**: any i… |
| model | string | – | The video generation model. With `default`, paid tiers use `kling-3.0` and Free uses `ltx-2.5`. Duration, resolution, audio and reference support depend on the selected model. Deprecated model values… |
| name | string | – | Give your video a custom name for easy identification. |
| resolution | string | – | Controls 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. * *… |
| style | object | – | Attributed used to dictate the style of the output |
| Name | Type | Req | Description |
|---|---|---|---|
| credits_charged | integer | yes | The 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… |
| id | string | yes | Unique 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.
create_video_from_text Create video from text ~2,001
Generates a video from a text prompt, with optional supported reference inputs and model settings. To animate an existing starting image, use create_video_from_image. Starts a background job that costs credits; returns a project id for wait_for_video_project.
| Name | Type | Req | Description |
|---|---|---|---|
| aspect_ratio | string | – | Provide `aspect_ratio` to set the video’s aspect ratio. Determines 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. *… |
| audio | boolean | – | Whether 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`**:… |
| end_seconds | number | yes | The total duration of the output video in seconds. Supported durations depend on the chosen model: * **`gemini-omni-1.1`**: any integer from 3 to 10 * **`kling-2.6`**: 5, 10 * **`kling-3.0`**: any i… |
| model | string | – | The video generation model. With `default`, paid tiers use `kling-3.0` and Free uses `ltx-2.5`. Duration, resolution, audio and reference support depend on the selected model. Deprecated model values… |
| name | string | – | Give your video a custom name for easy identification. |
| references | array | – | Reference media for video generation. Name references without @ and refer to them as @name in style.prompt. Maximum 10 references total. Supported models and reference media: * **`gemini-omni-1.1`**… |
| resolution | string | – | Controls 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. * *… |
| style | object | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| credits_charged | integer | yes | The 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… |
| id | string | yes | Unique 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.
delete_audio_project Delete audio project ~59
Deletes the audio project and attempts to delete its completed output. Cannot be undone; confirm with the user first.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Unique 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.
delete_image_project Delete image project ~59
Deletes the image project and attempts to delete its completed output. Cannot be undone; confirm with the user first.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Unique 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.
delete_video_project Delete video project ~59
Deletes the video project and attempts to delete its completed output. Cannot be undone; confirm with the user first.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Unique 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.
detect_faces Detect faces ~140
Starts an asynchronous face-detection task for a supplied image or video and returns its id and charge information. Use before a selected-face swap, then retrieve its status and detected faces with get_face_detection_results. Current API documentation describes detection as free; pricing may change.
| Name | Type | Req | Description |
|---|---|---|---|
| assets | object | yes | Provide the assets for face detection |
| confidence_score | number | – | Confidence 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… |
| Name | Type | Req | Description |
|---|---|---|---|
| credits_charged | integer | yes | The credits charged for the task. |
| id | string | yes | The 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.
edit_face_in_photo Edit face in photo ~95
Adjusts facial expression, pose and gaze in a supplied photo using numeric controls. Costs 1 credit per edit; output size depends on the subscription tier. Starts a background job; returns a project id for wait_for_image_project.
| Name | Type | Req | Description |
|---|---|---|---|
| assets | object | yes | Provide the assets for face editor |
| name | string | – | Give your image a custom name for easy identification. |
| style | object | yes | Face editing parameters |
| Name | Type | Req | Description |
|---|---|---|---|
| credits_charged | integer | yes | The 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… |
| id | string | yes | Unique 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.
edit_image Edit image ~1,397
Edits one or more supplied images using a text prompt. For prompt-only creation use generate_image. Costs credits; returns a project id for wait_for_image_project. Model eligibility depends on the account plan; the default model is not available on every plan.
| Name | Type | Req | Description |
|---|---|---|---|
| aspect_ratio | string | – | The aspect ratio of the output image(s). If not specified, defaults to `auto`. |
| assets | object | yes | Provide the assets for image edit |
| image_count | number | – | Number of images to generate. Maximum varies by model. Defaults to 1 if not specified. |
| model | string | – | The AI model to use for image editing. Each model has different capabilities and costs. **Models:** - `default` - Uses the server-selected default model, which may change over time. - `flux-2-klein`… |
| name | string | – | Give your image a custom name for easy identification. |
| resolution | string | – | Maximum 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… |
| style | object | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| credits_charged | integer | yes | The 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… |
| id | string | yes | Unique 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.
edit_video Edit video ~359
Edits the appearance or content of a supplied video segment using a text prompt. Use with a source video, the requested changes and the clip end time. Starts a background job that costs credits; returns a project id for wait_for_video_project.
| Name | Type | Req | Description |
|---|---|---|---|
| assets | object | yes | Provide the assets for video editing. |
| end_seconds | number | yes | End time of your clip in seconds. Must be greater than `start_seconds`. Allowed duration depends on model: `gemini-omni-1.1`: 3-10s, `wan-3.0`: 2-15s, `ltx-2.5`: 0.5-60s (30s at 1080p). |
| model | string | – | Editing model. Defaults to LTX 2.5 for free tier and `gemini-omni-1.1` for paid. `wan-3.0` requires a paid tier. `gemini-omni` is deprecated; use `gemini-omni-1.1` instead. |
| name | string | – | Give your video a custom name for easy identification. |
| resolution | string | – | Output resolution. Defaults to `480p` for free tier and `720p` for paid. Supported per model: `gemini-omni-1.1`: 720p, 1080p; `wan-3.0`: 480p, 720p, 1080p; `ltx-2.5`: 480p, 720p, 1080p. |
| start_seconds | number | – | Start time of your clip (seconds). Must be ≥ 0. |
| style | object | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| credits_charged | integer | yes | The 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… |
| id | string | yes | Unique 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.
fetch_audio_download Fetch Audio Download ~86
Fetch a completed project's audio as inline MCP audio content for compatible clients. Use the exact signed download URL, including query parameters. Requires HTTPS at the configured Magic Hour media host. Read-only; limited to 8 MiB, or a smaller requested max_bytes. Use the signed URL directly for larger files.
| Name | Type | Req | Description |
|---|---|---|---|
| download_url | string | yes | – |
| max_bytes | integer | – | – |
No output schema declared.
No examples provided.
fetch_image_download Fetch Image Download ~86
Fetch a completed project's image as inline MCP image content for compatible clients. Use the exact signed download URL, including query parameters. Requires HTTPS at the configured Magic Hour media host. Read-only; limited to 8 MiB, or a smaller requested max_bytes. Use the signed URL directly for larger files.
| Name | Type | Req | Description |
|---|---|---|---|
| download_url | string | yes | – |
| max_bytes | integer | – | – |
No output schema declared.
No examples provided.
fetch_video_download Fetch Video Download ~87
Fetch a completed project's video as an embedded MCP binary resource for compatible clients. Use the exact signed download URL, including query parameters. Requires HTTPS at the configured Magic Hour media host. Read-only; limited to 8 MiB, or a smaller requested max_bytes. Use the signed URL directly for larger files.
| Name | Type | Req | Description |
|---|---|---|---|
| download_url | string | yes | – |
| max_bytes | integer | – | – |
No output schema declared.
No examples provided.
generate_headshot Generate headshot ~84
Creates a headshot from a supplied photo containing one detectable face, with optional appearance instructions. Costs 50 credits. Starts a background job; returns a project id for wait_for_image_project.
| Name | Type | Req | Description |
|---|---|---|---|
| assets | object | yes | Provide the assets for headshot photo |
| name | string | – | Give your image a custom name for easy identification. |
| style | object | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| credits_charged | integer | yes | The 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… |
| id | string | yes | Unique 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.
generate_image Generate image ~1,478
Generates one or more images from a text prompt, with model, output size and image count options. Costs credits; returns a project id for wait_for_image_project.
| Name | Type | Req | Description |
|---|---|---|---|
| aspect_ratio | string | – | The aspect ratio of the output image(s). If not specified, defaults to `1:1` (square). |
| image_count | integer | yes | Number of images to generate. Maximum varies by model. |
| model | string | – | The AI model to use for image generation. Each model has different capabilities and costs. **Models:** - `default` - Uses the server-selected default model, which may change over time. - `flux-2-kle… |
| name | string | – | Give your image a custom name for easy identification. |
| resolution | string | – | Maximum 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… |
| style | object | yes | The art style to use for image generation. |
| Name | Type | Req | Description |
|---|---|---|---|
| credits_charged | integer | yes | The 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… |
| id | string | yes | Unique 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.
generate_music Generate music ~87
Generates music from a description, with optional custom lyrics or instrumental-only output. Costs 1 credit per requested second; returns a project id for wait_for_audio_project.
| Name | Type | Req | Description |
|---|---|---|---|
| duration | integer | yes | Requested track duration in seconds, from 15 to 300. Determines credits charged. |
| name | string | – | Give your audio a custom name for easy identification. |
| style | object | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| credits_charged | integer | yes | The 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… |
| id | string | yes | Unique 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.
get_account_info Get account info ~46
Returns credit balance and subscription details for the connected account. Use to inspect account information before generation. Read-only; this is not a request-specific cost quote or model-eligibility check.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| credits | integer | yes | Credits currently available to spend. Includes subscription credits and any purchased credit packs. |
| string|null | yes | Email address of the account. | |
| id | string | yes | Unique ID of the account that owns the API key. |
| subscription | object|null | yes | Details 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… |
| tier | string | yes | Subscription tier in effect for the account. `free` if there is no active subscription, including while a subscription is `past_due`. |
No examples provided.
get_audio_project Get audio project ~67
Returns an audio project's status and, once complete, its download URLs. Use to check progress with the id from an audio create tool. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Unique ID of the audio project. This value is returned by all of the POST APIs that create an audio. |
| Name | Type | Req | Description |
|---|---|---|---|
| created_at | string | yes | – |
| credits_charged | integer | yes | The 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… |
| downloads | array | yes | – |
| enabled | boolean | yes | Whether this resource is active. If false, it is deleted. |
| error | object|null | yes | In the case of an error, this object will contain the error encountered during video render |
| id | string | yes | Unique 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. |
| name | string|null | yes | The name of the audio. |
| status | string | yes | The 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… |
| type | string | yes | The 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.
get_face_detection_results Get face detection results ~92
Returns a face-detection job's status and detected faces. Use with the id from detect_faces to inspect progress and choose face mappings before a selected-face swap. Read-only; faces may populate while processing.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The id of the task. This value is returned by the [face detection API](https://docs.magichour.ai/api-reference/files/face-detection#response-id). |
| Name | Type | Req | Description |
|---|---|---|---|
| credits_charged | integer | yes | The credits charged for the task. |
| faces | array | yes | The faces detected in the image or video. The list is populated as faces are detected. |
| id | string | yes | The id of the task. This value is returned by the [face detection API](https://docs.magichour.ai/api-reference/files/face-detection#response-id). |
| status | string | yes | The status of the detection. |
No examples provided.
get_image_project Get image project ~67
Returns an image project's status and, once complete, its download URLs. Use to check progress with the id from an image create tool. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Unique ID of the image project. This value is returned by all of the POST APIs that create an image. |
| Name | Type | Req | Description |
|---|---|---|---|
| created_at | string | yes | – |
| credits_charged | integer | yes | The 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… |
| downloads | array | yes | – |
| enabled | boolean | yes | Whether this resource is active. If false, it is deleted. |
| error | object|null | yes | In the case of an error, this object will contain the error encountered during video render |
| id | string | yes | Unique 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_count | integer | yes | Number of images generated |
| name | string|null | yes | The name of the image. |
| status | string | yes | The 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… |
| type | string | yes | The 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.
get_upload_urls Get upload URLs ~90
Creates presigned upload URL and file-path pairs for local media. Use when a generation needs a file the user has locally: upload raw bytes to the returned upload_url, then pass its file_path to the create tool. Does not upload file bytes or start a generation.
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | yes | The list of assets to upload. The response array will match the order of items in the request body. |
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | yes | The 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.
get_video_project Get video project ~67
Returns a video project's status and, once complete, its download URLs. Use to check progress with the id from a video create tool. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Unique ID of the video project. This value is returned by all of the POST APIs that create a video. |
| Name | Type | Req | Description |
|---|---|---|---|
| created_at | string | yes | – |
| credits_charged | integer | yes | The 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… |
| downloads | array | yes | – |
| enabled | boolean | yes | Whether this resource is active. If false, it is deleted. |
| end_seconds | number | yes | End time of your clip (seconds). Must be greater than start_seconds. |
| error | object|null | yes | In the case of an error, this object will contain the error encountered during video render |
| fps | number | yes | Frame rate of the video. If the status is not 'complete', the frame rate is an estimate and will be adjusted when the video completes. |
| height | integer | yes | The height of the final output video. A value of -1 indicates the height can be ignored. |
| id | string | yes | Unique 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. |
| name | string|null | yes | The name of the video. |
| start_seconds | number | yes | Start time of your clip (seconds). Must be ≥ 0. |
| status | string | yes | The 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… |
| type | string | yes | The 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… |
| width | integer | yes | The width of the final output video. A value of -1 indicates the width can be ignored. |
No examples provided.
get_workflow_guide Choose a media workflow ~60
Returns required inputs, ordered steps, example requests and review criteria for eight supported Magic Hour workflows. Use when planning a generation, not to run one. Requires authentication but does not check account eligibility or spend credits.
| Name | Type | Req | Description |
|---|---|---|---|
| workflow | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
list_saved_items List saved items ~114
Lists the account's active saved characters, references, voice recordings, moodboards and brand kits, newest first. Reusable paths are in each item's assets[].file_path; temporary signed URLs support preview/download. Read-only; pass next_cursor as cursor for the next page.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | Opaque pagination cursor from the previous response's next_cursor. |
| limit | integer | – | Maximum number of saved items to return. Defaults to 20. |
| type | string | – | Only return saved items of this type. |
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | yes | – |
| next_cursor | string|null | yes | Cursor for the next page, or null when there are no more saved items. |
No examples provided.
ping Ping ~38
Checks that the Magic Hour server is reachable. Use for connectivity troubleshooting; it does not validate API credentials or account access. Makes no media or project changes.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
place_person_in_scene Place person in scene ~126
Use only with the user's own likeness or content they are authorized to use. Do not use for impersonation, deception, sexual content, or content involving minors. Places a person from one supplied photo into a supplied scene image. Cost depends on resolution (from 50 credits at 640px); returns a project id for wait_for_image_project.
| Name | Type | Req | Description |
|---|---|---|---|
| assets | object | yes | Person image and scene image for body swap |
| name | string | – | Give your image a custom name for easy identification. |
| resolution | string | yes | Output resolution. Determines credits charged for the run. |
| Name | Type | Req | Description |
|---|---|---|---|
| credits_charged | integer | yes | The 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… |
| id | string | yes | Unique 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.
remove_image_background Remove image background ~72
Removes an image's background, optionally replacing it with another supplied image. Costs 5 credits. Starts a background job; returns a project id for wait_for_image_project.
| Name | Type | Req | Description |
|---|---|---|---|
| assets | object | yes | Provide the assets for background removal |
| name | string | – | Give your image a custom name for easy identification. |
| Name | Type | Req | Description |
|---|---|---|---|
| credits_charged | integer | yes | The 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… |
| id | string | yes | Unique 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.
replace_character_in_video Replace character in video ~395
Use only with the user's own likeness or content they are authorized to use. Do not use for impersonation, deception, sexual content, or content involving minors. Replaces a subject in a video with a character from a reference image, or transfers the video's motion onto that character. Starts a background job that costs credits; returns a project id for wait_for_video_project.
| Name | Type | Req | Description |
|---|---|---|---|
| assets | object | yes | Source video and reference character image for the job. |
| end_seconds | number | yes | End time of your clip (seconds). Must be greater than start_seconds. |
| model | string | – | Model to use. Defaults to `wan-animate`. * **`wan-animate`**: 480p, 720p. Supports `points` subject selection. * **`kling-3.0`**: 720p, 1080p. Clips of 3–10 seconds in `replace` mode or 3–30 seconds… |
| name | string | – | Give your video a custom name for easy identification. |
| resolution | string | – | Output video resolution. Must be supported by `model`. Defaults to the lowest resolution available on your plan for that model. |
| start_seconds | number | – | Start time of your clip (seconds). Must be ≥ 0. |
| style | object | – | Optional style controls for replace vs animate mode and subject selection. |
| Name | Type | Req | Description |
|---|---|---|---|
| credits_charged | integer | yes | The 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… |
| id | string | yes | Unique 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.
restyle_video Restyle video ~223
Restyles an existing video clip with an art-style preset or a custom prompt. Supports v1/v2 presets, not v3. Starts a background job that costs credits; returns a project id for wait_for_video_project.
| Name | Type | Req | Description |
|---|---|---|---|
| assets | object | yes | Provide the assets for video-to-video. For video, The `video_source` field determines whether `video_file_path` or `youtube_url` field is used |
| end_seconds | number | yes | End time of your clip (seconds). Must be greater than start_seconds. |
| fps_resolution | string | – | Determines whether the resulting video will have the same frame per second as the original video, or half. * `FULL` - the result video will have the same FPS as the input video * `HALF` - the result… |
| name | string | – | Give your video a custom name for easy identification. |
| start_seconds | number | yes | Start time of your clip (seconds). Must be ≥ 0. |
| style | object | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| credits_charged | integer | yes | The 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… |
| id | string | yes | Unique 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.
swap_face_in_photo Swap face in photo ~110
Use only with the user's own likeness or content they are authorized to use. Do not use for impersonation, deception, sexual content, or content involving minors. Swaps faces in a supplied photo using a source face image or selected face mappings. Costs 10 credits; output size depends on subscription. Returns a project id for wait_for_image_project.
| Name | Type | Req | Description |
|---|---|---|---|
| assets | object | yes | Provide the assets for face swap photo |
| name | string | – | Give your image a custom name for easy identification. |
| Name | Type | Req | Description |
|---|---|---|---|
| credits_charged | integer | yes | The 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… |
| id | string | yes | Unique 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.
swap_face_in_video Swap face in video ~193
Use only with the user's own likeness or content they are authorized to use. Do not use for impersonation, deception, sexual content, or content involving minors. Swaps faces in an existing video: all faces with a reference image, or selected faces using detect_faces results. Starts a background job that costs credits; returns a project id for wait_for_video_project.
| Name | Type | Req | Description |
|---|---|---|---|
| assets | object | yes | Provide the assets for face swap. For video, The `video_source` field determines whether `video_file_path` or `youtube_url` field is used |
| end_seconds | number | yes | End time of your clip (seconds). Must be greater than start_seconds. |
| name | string | – | Give your video a custom name for easy identification. |
| start_seconds | number | yes | Start time of your clip (seconds). Must be ≥ 0. |
| style | object | – | Style of the face swap video. |
| Name | Type | Req | Description |
|---|---|---|---|
| credits_charged | integer | yes | The 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… |
| id | string | yes | Unique 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.
swap_head_in_photo Swap head in photo ~159
Use only with the user's own likeness or content they are authorized to use. Do not use for impersonation, deception, sexual content, or content involving minors. Swaps a head from a supplied image onto a supplied body image. Costs 10 credits; returns a project id for wait_for_image_project.
| Name | Type | Req | Description |
|---|---|---|---|
| assets | object | yes | Provide the body and head images for head swap |
| max_resolution | integer | – | Constrains 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… |
| name | string | – | Give your image a custom name for easy identification. |
| Name | Type | Req | Description |
|---|---|---|---|
| credits_charged | integer | yes | The 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… |
| id | string | yes | Unique 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.
translate_video Translate video ~167
Translates speech in a supplied video segment into a supported target language. Starts a background job that costs credits; returns a project id for wait_for_video_project.
| Name | Type | Req | Description |
|---|---|---|---|
| assets | object | yes | Source video for the translation job. |
| end_seconds | number | yes | End time of your clip (seconds). Must be greater than start_seconds. The clip must be 1-30 seconds long. |
| name | string | – | Give your video a custom name for easy identification. |
| resolution | string | – | Output video resolution. Defaults to 480p. 720p and 1080p require a paid plan. |
| start_seconds | number | – | Start time of your clip (seconds). Must be ≥ 0. |
| target_language | string | yes | Language to translate the video's speech into. |
| Name | Type | Req | Description |
|---|---|---|---|
| credits_charged | integer | yes | The 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… |
| id | string | yes | Unique 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.
upload_chatgpt_image Upload attached image ~97
Uploads a PNG, JPEG or WebP image attached in ChatGPT to the connected Magic Hour account. Use this for native ChatGPT photo attachments instead of asking the chat's file runtime to PUT bytes to get_upload_urls. Pass the returned file_path to the existing image or video generation tool. Accepts one image up to 20 MiB. Does not generate media or spend generation credits.
| Name | Type | Req | Description |
|---|---|---|---|
| image | object | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
upscale_image Upscale image ~153
Upscales a supplied image 2x or 4x. Cost depends on scale and mode (25-200 credits); returns a project id for wait_for_image_project.
| Name | Type | Req | Description |
|---|---|---|---|
| assets | object | yes | Provide the assets for upscaling |
| name | string | – | Give your image a custom name for easy identification. |
| scale_factor | number | yes | How much to scale the image. Must be either 2 or 4. Note: 4x upscale is only available on Creator, Pro, or Business tier. |
| style | object | – | Style settings for the upscale. Use `mode` (`"preserve"`, `"balanced"`, or `"creative"`). Defaults to `"balanced"`. |
| Name | Type | Req | Description |
|---|---|---|---|
| credits_charged | integer | yes | The 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… |
| id | string | yes | Unique 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.
upscale_video Upscale video ~166
Upscales a supplied video segment to a selected output resolution while preserving its aspect ratio. Starts a background job that costs credits; returns a project id for wait_for_video_project.
| Name | Type | Req | Description |
|---|---|---|---|
| assets | object | yes | Source video for the upscale job. |
| end_seconds | number | yes | End time of your clip (seconds). Must be greater than start_seconds. |
| name | string | – | Give your video a custom name for easy identification. |
| resolution | string | yes | Output resolution. `720p` and `1080p` set the output's short side, `2k` and `4k` its long side; the aspect ratio is kept. Requires a paid plan. |
| start_seconds | number | – | Start time of your clip (seconds). Must be ≥ 0. |
| Name | Type | Req | Description |
|---|---|---|---|
| credits_charged | integer | yes | The 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… |
| id | string | yes | Unique 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.
wait_for_audio_project Wait for Audio Project ~139
Polls an audio project until it completes, errors, is canceled or times out. Use with the id returned by an audio create tool. Read-only; returns the project and download URLs, with optional inline audio previews sharing an 8 MiB total limit. After a timeout, resume with the same id rather than creating another generation. Use signed download URLs exactly as returned.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
| include_inline_downloads | boolean | – | – |
| max_bytes_per_download | integer | – | – |
| max_inline_downloads | integer | – | – |
| poll_interval_seconds | number | – | – |
| timeout_seconds | number | – | – |
No output schema declared.
No examples provided.
wait_for_image_project Wait for Image Project ~139
Polls an image project until it completes, errors, is canceled or times out. Use with the id returned by an image create tool. Read-only; returns the project and download URLs, with optional inline image previews sharing an 8 MiB total limit. After a timeout, resume with the same id rather than creating another generation. Use signed download URLs exactly as returned.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
| include_inline_downloads | boolean | – | – |
| max_bytes_per_download | integer | – | – |
| max_inline_downloads | integer | – | – |
| poll_interval_seconds | number | – | – |
| timeout_seconds | number | – | – |
No output schema declared.
No examples provided.
wait_for_video_project Wait for Video Project ~120
Polls a video project until it completes, errors, is canceled or times out. Use with the id returned by a video create tool. Read-only; returns download URLs when complete. After a timeout, resume with the same id rather than creating another generation. Use signed download URLs exactly as returned. Does not inline video content.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
| include_inline_downloads | boolean | – | – |
| max_inline_downloads | integer | – | – |
| poll_interval_seconds | number | – | – |
| timeout_seconds | number | – | – |
No output schema declared.
No examples provided.
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
claude mcp add --transport http magichourhq-magic-hour 'https://mcp.magichour.ai/'
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 and video, generate music, and retrieve existing audio projects. This page covers its hosted endpoint (https://mcp.magichour.ai/).
Is the Magic Hour MCP server safe to use?
Magic Hour scores 80 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 49 tools: get_workflow_guide, upload_chatgpt_image, ping, wait_for_video_project, wait_for_image_project, and 44 more. Their descriptions and schemas cost roughly 12,265 tokens of context every time the server is loaded.
Does the Magic Hour MCP server require authentication?
Yes. Magic Hour asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.
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 4 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.