Fattly
This server lets AI assistants manage an AI media generation account: check credits, browse models, upload local images, and generate images, videos, and audio.
fattly_credits: View current credit balance (read-only).
fattly_list_models: List available image, video, and audio models with credit costs (read-only).
fattly_upload_image: Upload a local JPG/PNG/WEBP image and get a fal URL for use in edits or image-to-video (no credits charged).
fattly_generate_image: Create AI images from text prompts, with options for model, number of images, aspect ratio, and single- or multi-image editing/face-swap.
fattly_generate_video: Generate AI videos from a text prompt or start image, choosing model, duration, and aspect ratio; waits for the mp4 link.
fattly_generate_audio: Generate voiceovers (text-to-speech) or music clips, with voice selection and music length options.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Fattlygenerate an image of a peaceful forest stream"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
fattly — FATTLY CLI + MCP server
Generate AI images, video, voiceovers, music and UGC-style ads from your terminal — or straight from AI assistants like Claude, Cursor and VS Code via MCP.
50+ AI models in one account (Veo 3.1, Kling 3, Seedance, Nano Banana, GPT Image, ElevenLabs…) · pay with fattly.app credits that never expire.
MCP (Claude, Cursor, VS Code)
The package is an MCP server — it lets AI assistants generate media through your FATTLY account.
Option A — Hosted (no install, sign in with OAuth)
Connect your client to the hosted server. No npm, no key to paste — you approve access in the browser.
https://fattly.app/api/mcpIn Claude: Settings → Connectors → Add custom connector → paste the URL. Full setup guide: https://fattly.app/claude-mcp
Option B — Local (npx, with an API key)
On fattly.app open Dashboard → API keys and create a key.
Add this to your client's MCP config:
{
"mcpServers": {
"fattly": {
"command": "npx",
"args": ["-y", "fattly", "mcp"],
"env": {
"FATTLY_API_KEY": "gpx_live_YOUR_KEY"
}
}
}
}Installing with an AI agent (Cline, Claude Code, Cursor)? Point it at llms-install.md.
Tools
Tool | What it does | Spends credits |
| Current credit balance | no (read-only) |
| Models and their price in credits | no (read-only) |
| Upload a local photo → URL for edit / image-to-video models | no |
| Text-to-image and image editing (multi-image edits, face swap) | yes |
| Text-to-video and image-to-video; waits for the mp4 | yes |
| Voiceover (text-to-speech) or music | yes |
Every tool carries MCP annotations (readOnlyHint, destructiveHint, idempotentHint), so clients can ask before paid calls. Failed generations are refunded automatically. Content must be safe-for-work.
Related MCP server: mcp-media-engine
CLI
npm install -g fattly # Node.js 18+
fattly login # paste your gpx_live_… keyfattly credits
fattly models video
fattly generate "astronaut cat on Mars" --model nano-banana-2 --out cat.png
fattly video "ocean waves at sunset" --model kling-3-standard --out waves.mp4
fattly audio "Welcome to FATTLY" --voice Rachel --out voice.mp3
fattly audio "calm ambient" --music --seconds 30 --out music.mp3Configuration
Variable | Purpose |
| API key (alternative to |
| API address override (default |
The key saved by fattly login lives in ~/.fattly/config.json with owner-only permissions.
More
Website: https://fattly.app
More than the MCP tools (AI dubbing with lip-sync, virtual try-on, UGC ad studio) is available in the web app.
Issues: https://github.com/industriesfatty-spec/fattly-mcp/issues
MIT © Fattly
Available Tools
6 toolsfattly_creditsCheck credit balanceARead-onlyIdempotentInspect
Shows the current credit balance on the FATTLY account. Read-only and free — call it before an expensive generation to make sure the user has enough credits.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description reinforces this with 'Read-only and free' and adds practical context about credit costs for generations, which goes slightly beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. The core purpose is front-loaded, and the usage guidance is compact and actionable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple zero-parameter read-only tool, the description is largely complete. It explains what the tool does, that it is safe and free, and when to call it. It does not specify the exact return format, but that is not critical for this call pattern.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and schema coverage is 100%, so parameter semantics are trivially complete. Per baseline guidance for zero-parameter tools, a score of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Shows') and resource ('current credit balance on the FATTLY account'), making the tool's purpose immediately clear. It also distinguishes itself from sibling generation tools by focusing on account balance rather than media generation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent when to use this tool: before an expensive generation to verify sufficient credits. It does not mention explicit alternatives or when-not-to-use cases, but the context is clear and no sibling tool serves the same purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fattly_generate_audioGenerate a voiceover or musicAInspect
Generates AI audio: a voiceover (mode=speech) from text, or music (mode=music) from a description. Returns a link to the mp3 file. Spends credits (price in fattly_list_models → audio); refunded automatically if the generation fails.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | speech = voiceover, music = music. | |
| text | Yes | Text to read (speech) or a music description (music). | |
| voice | No | Voiceover voice, e.g. Rachel, Aria, George (speech only). | |
| seconds | No | Music length: 15, 30 or 60 (music only). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a mutating, non-idempotent operation (readOnlyHint=false, idempotentHint=false). The description adds important behavioral context beyond annotations: the tool spends credits, the price is queryable via fattly_list_models, and credits are refunded automatically on failure. It also discloses the returned mp3 link, providing useful operating context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with zero redundancy: the first establishes the core function and modes, the second the output, and the third the credit cost and refund behavior. Information is front-loaded and every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters, 2 required, full schema coverage, and no output schema, the description is complete: it explains what the tool does, the two modes, the return format, and the cost/refund behavior. An agent has enough context to select and invoke the tool correctly without additional missing details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description reinforces the meaning of mode and text ('voiceover from text' vs 'music from a description') but adds no new parameter semantics beyond what the schema already documents. The refund and mp3-link details concern behavior, not parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states a specific verb and resource: 'Generates AI audio', with two distinct modes (speech voiceover from text, music from a description) and a concrete output (link to mp3). This differentiates it from sibling generation tools like fattly_generate_image and fattly_generate_video.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context for when to use the tool: when audio is needed, with the mode parameter selecting voiceover vs music. It also references fattly_list_models for pricing and mentions a refund on failure. It does not explicitly name sibling alternatives, but the audio-only scope and mode explanation make the intended usage obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fattly_generate_imageGenerate an imageAInspect
Generates an AI image from a prompt (or edits uploaded images). Returns links to the finished images. Spends credits: model price × numImages (see fattly_list_models); fails with an error if the balance is too low, and credits are refunded automatically when a generation fails. Prompts must be safe-for-work.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Model id (default nano-banana-2). List: fattly_list_models. | |
| prompt | Yes | Description of the image to generate. | |
| numImages | No | Number of images 1–4 (default 1). | |
| aspectRatio | No | Aspect ratio, e.g. 1:1, 16:9, 9:16 (default 1:1). | |
| inputImageUrl | No | Optional single input image for editing / face-swap models — must be a fal URL. Get one by uploading a local photo with fattly_upload_image. | |
| inputImageUrls | No | Optional MULTIPLE input images (fal URLs) for multi-image edit models like nano-banana-2-edit / nano-banana-pro-edit. Typical swap use: image #1 = the scene/frame to keep (background, framing, lighting), image #2 = the subject/face to place into that scene. Get each URL from fattly_upload_image. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses credit spending, cost calculation, failure behavior when balance is too low, automatic refunds, and the safe-for-work constraint. Since annotations are all false and do not describe side effects, the description itself carries the full burden and does so well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no filler: the main action is front-loaded, followed by output format, cost/error behavior, and a safety constraint. Every sentence carries essential information for correctly invoking the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, output, cost, failure, refunds, safety, and edit workflows, and the schema fills in parameter details. With no output schema present, mentioning that links are returned is useful, though link format/details and whether generation is synchronous are not specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents all six parameters in detail, so the baseline is 3. The description adds value beyond the schema by explaining edit workflows, fal URL requirements, and the typical face-swap role of image #1 vs image #2, which the schema alone does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Generates an AI image') and expands scope to edits of uploaded images, immediately distinguishing itself from the video/audio generation siblings. It also says it returns links, making the core function unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear context is provided: the tool is for image generation from prompts or edits, with references to fattly_list_models for model choice and fattly_upload_image for obtaining fal URLs. It does not explicitly name generate_video/generate_audio as alternatives, but the media-specific wording makes the choice obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fattly_generate_videoGenerate a videoAInspect
Generates an AI video from a prompt (or from a start image). Takes a few minutes — the tool waits (up to 10 min) and returns a link to the mp4 file. Video is the most expensive operation: it spends the model's credit price (see fattly_list_models), so confirm the model and cost with the user first. Credits are refunded automatically if the generation fails.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Video model id (default kling-3-standard), e.g. kling-3-pro, veo-3-1, veo-3-1-fast, seedance-2-5, hailuo-3, ltx-2-5. Full list with prices: fattly_list_models. | |
| prompt | Yes | Description of the video scene. | |
| duration | No | Clip length in seconds (model dependent). | |
| aspectRatio | No | Aspect ratio, e.g. 16:9, 9:16, 1:1 (default 16:9). | |
| inputImageUrl | No | Optional start image for image-to-video — must be a fal URL. Get one by uploading a local photo with fattly_upload_image. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false (readOnlyHint false, destructiveHint false, etc.), so the description carries the burden of behavioral disclosure. It covers the wait time (up to 10 min), automatic credit refund on failure, cost implications, and the return format (link to mp4). This goes beyond the annotations and provides useful context, though it doesn't detail edge cases like timeout behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no waste. It leads with the core action, then the critical cost/wait warning, and ends with the refund policy. Every sentence earns its place and is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 5 parameters, no output schema, and all annotations false, the description covers the key behavioral aspects (wait, cost, refund, return link) and parameter prerequisites. It doesn't explain the output structure beyond a link, but since there is no output schema, that is acceptable. The only minor gap is not describing any potential error handling beyond refunds.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, giving a baseline of 3. The description adds meaningful context for the inputImageUrl parameter (must be a fal URL and how to obtain one) and reinforces model cost implications. While the schema already lists model examples, the description ties them to pricing via fattly_list_models, adding value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates an AI video from a prompt or start image, distinguishing it from siblings like generate_image, generate_audio, and upload_image. The verb 'generates' plus the resource 'AI video' is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly warns that video is the most expensive operation and instructs the agent to confirm model and cost with the user first, which is strong usage guidance. It also notes the waiting behavior and links to fattly_list_models for pricing, though it doesn't explicitly contrast with alternatives beyond that.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fattly_list_modelsList models and pricesARead-onlyIdempotentInspect
Returns available models and their cost in credits (images, video, audio). Read-only and free. Use before generating to pick the right model id and to tell the user what a generation will cost.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Optional category filter. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it readOnlyHint, idempotentHint, and destructiveHint false. The description adds that it is 'free', which is not in the annotations, and that it returns model ids and credit costs. This is useful behavioral context beyond the structured fields and does not contradict them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core return value, then usage guidance. Every clause earns its place with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity tool with one optional parameter and no output schema, the description covers what it returns, when to use it, and its cost. A minor gap is that it doesn't explicitly state that omitting the category returns all models, but that is inferable from the schema's 'optional filter' phrasing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single optional 'category' parameter is fully documented in the schema with an enum and description. The tool description loosely aligns with the enum values by listing 'images, video, audio', but it adds no new semantic detail beyond what the schema already provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Returns available models and their cost in credits'. It names the categories (images, video, audio) and explicitly positions itself as the pre-generation lookup tool, distinguishing it from generation siblings like fattly_generate_image and from fattly_credits which likely reports account balance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: 'Use before generating to pick the right model id and to tell the user what a generation will cost.' This tells when to call it, though it does not explicitly name alternatives or state when not to use it, stopping just short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fattly_upload_imageUpload a local imageAInspect
Uploads a local image file (JPG, PNG or WEBP) to FATTLY and returns a public fal URL. Use this to turn a photo on disk into an inputImageUrl for editing / face-swap / image-to-video models: pass the returned URL as inputImageUrl to fattly_generate_image or fattly_generate_video. No credits are charged for the upload.
| Name | Required | Description | Default |
|---|---|---|---|
| filePath | Yes | Absolute path to a local image file (JPG, PNG or WEBP), max 10 MB. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only report readOnly=false and destructive=false, so the description adds value by disclosing that no credits are charged and that a public URL is returned. This gives the agent useful behavioral and cost-related context beyond the generic annotation hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each earning its place: what the tool does, how to use the result, and a cost note. The core action is front-loaded without extraneous detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly explains the return value as a public fal URL and shows how it feeds into sibling tools. It is complete enough for a one-parameter upload utility, though it could briefly mention error behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents filePath with absolute path, allowed formats, and the 10 MB limit, so schema coverage is 100%. The description adds little parameter-specific meaning beyond framing the intent; it stays at the baseline of relying on the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description names the specific verb 'Uploads', the resource (local image file), and the result (public fal URL). It also clearly distinguishes the tool from sibling generation tools by explaining its role as a prerequisite for them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: use this tool to turn a local photo into an inputImageUrl for editing, face-swap, or image-to-video. It names the downstream tools but does not explicitly state when not to use it, so it stops short of a full when/when-not guide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
v0.1.2- Changed
fattly_generate_image1 field changed- changed
Input schema / properties / inputImageUrls / descriptionPrevious value: -"Optional MULTIPLE input images (fal URLs) for multi-image edit models like nano-banana-edit / nano-banana-pro-edit / seedream-v4-edit. Typical swap use: image #1 = the scene/frame to keep (background, framing, lighting), image #2 = the subject/face to place into that scene. Get each URL from fattly_upload_image."New value: +"Optional MULTIPLE input images (fal URLs) for multi-image edit models like nano-banana-2-edit / nano-banana-pro-edit. Typical swap use: image #1 = the scene/frame to keep (background, framing, lighting), image #2 = the subject/face to place into that scene. Get each URL from fattly_upload_image."
- Changed
fattly_generate_video1 field changed- changed
Input schema / properties / model / descriptionPrevious value: -"kling-3-standard | veo-3-1 | sora-2 (default kling-3-standard)."New value: +"Video model id (default kling-3-standard), e.g. kling-3-pro, veo-3-1, veo-3-1-fast, seedance-2-5, hailuo-3, ltx-2-5. Full list with prices: fattly_list_models."
6 tool updates
v0.1.0- First observed
fattly_credits - First observed
fattly_generate_audio - First observed
fattly_generate_image - First observed
fattly_generate_video - First observed
fattly_list_models - First observed
fattly_upload_image
TDQS
Scored across 6 tools
Each tool targets a distinct resource/action: credits, models, upload, image generation, video generation, audio generation. No two tools overlap in purpose; the generation tools are clearly separated by output modality.
All tools share the 'fattly_' prefix and use a consistent verb_noun pattern (list_models, upload_image, generate_image). The only minor deviation is 'fattly_credits' which is a noun rather than a verb_noun like 'get_credits' or 'check_credits'.
Six tools is well-scoped for a media generation server: one for account state, one for catalog/pricing, one for input preparation, and three for the core generation modalities. Each tool earns its place.
The core lifecycle is covered: check credits, list models, upload input, generate image/video/audio. Minor gaps exist (no tool to fetch a generation result by ID, no explicit cancel/delete), but the server's stated purpose of generating media is fully covered.
Maintenance
Related MCP Connectors
MCP server for Flux AI image generation
Generate AI images and videos from any compatible MCP client.
MCP server for Wan AI video generation
MCP server for Google Veo AI video generation
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server to use the fal.ai APIs to generate images and videos.4MIT
- AlicenseAqualityBmaintenanceMCP server for AI-powered image, audio, and video generation, enabling media creation directly from Claude, Cursor, and other MCP clients.1139 npmMIT
- AlicenseAqualityDmaintenanceMCP server for Krea.ai enabling AI image and video generation using models like Flux, Hailuo, Runway, Kling, and others via natural language prompts.913 npm9Apache 2.0
- AlicenseBqualityDmaintenanceMCP server for generating and editing images using OpenAI, and creating videos using OpenAI Sora and Google Veo. Enables fetching media from URLs or disk with smart output placement.1418 npm9MIT