mcp
Server Details
Generate AI images, video, music, and sound effects, and upscale them, from any MCP client.
- Status
- Healthy
- Uptime
- 100.0% over 35 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- budgetpixel-ai/budgetpixel-mcp
- GitHub Stars
- 3
- Server Listing
- BudgetPixel MCP Server
TDQS
Scored across 15 tools
Each tool targets a clearly distinct resource+action: the four generate_* tools split cleanly by media type, upscale_image/upscale_video split by asset type, and utility tools (list_models, get_credit_balance, save_to_assets, upload_media) cover unique roles. The only mild adjacency (check_generation_status vs get_generation_history) is disambiguated by running-job polling vs past-generation lookup.
Every tool follows a strict snake_case verb_noun pattern (check_generation_status, generate_image, list_models, save_to_assets, upscale_video), with no camelCase or stylistic deviations. The convention is applied uniformly across all 15 tools.
15 tools is at the top of the well-scoped range but each earns its place across four media types, upscaling, asset management, discovery, and account queries. No filler or redundant tools inflate the set.
The surface covers the full media lifecycle: generation (image/video/music/sfx), async polling, upload of local inputs, upscaling, permanent saving, history retrieval, stock search, model/price discovery, credits, and social posting with theme targeting. Only very minor operations like job cancellation or asset deletion are absent, which are non-blocking.
Available Tools
15 toolscheck_generation_statusCheck Generation StatusARead-onlyInspect
Use this after calling generate_image, generate_video, generate_music, or generate_sound_effect to poll for results. Pass a job_id to check a specific job — numeric = image, uuid = video, and for MUSIC / SOUND-EFFECT jobs also pass type "music" / "sound_effect" (their ids are numeric too) — with no job_id it lists jobs still running that were started on the BudgetPixel website. Completed IMAGE jobs return the finished image(s) inline (as image content) plus a full-resolution link — display the image AND share the link (some chat UIs don't show inline images). Completed VIDEO, MUSIC and SOUND-EFFECT jobs return a watch/listen link — always share it with the user (chat UIs can't embed players). Poll every few seconds for images and sound effects (~15 s), every 15–30 seconds for videos and music (they take minutes). Call repeatedly until status is 'completed' or 'failed'.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Which pipeline the job_id belongs to. REQUIRED as "music" for music jobs and "sound_effect" for sound-effect jobs (their numeric ids would otherwise be read as image jobs). Optional otherwise: uuids are detected as video, plain numbers default to image. | |
| job_id | No | Optional job ID to check — a number for image/music/sound-effect jobs, a uuid for video jobs. If omitted, returns all active generation jobs (images, videos, music, and sound effects). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/non-destructive/non-open-world, and the description goes well beyond them: it discloses that completed image jobs return inline image content plus a full-resolution link, that video/music/sound-effect jobs return only a watch/listen link, and that the agent must surface links because chat UIs may not render them. This is high-value behavioral context an agent could not infer from structured fields.
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?
Behaviorally front-loaded: usage trigger first, then id/type semantics, then return handling and polling cadence. It is dense and slightly repetitive with the schema's type/job_id documentation, but nearly every sentence carries operative instruction.
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 carries the burden of explaining return values and does so completely: inline images plus links for image jobs, watch/listen links for the other media, and a bare list of running jobs when no job_id is given. Nothing an agent needs to poll and present results correctly is missing.
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 both parameters are already documented, including the enum and the uuid/number heuristics. The description restates the numeric=image / uuid=video / type-required-for-music-and-sound-effect mapping, which is helpful reinforcement but adds little beyond 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?
The description states a specific verb and resource (poll generation job status) and explicitly names the sibling tools it follows (generate_image, generate_video, generate_music, generate_sound_effect). It also differentiates itself from get_generation_history by describing the active-job listing behavior when job_id is omitted.
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?
It gives explicit when-to-use guidance ('Use this after calling generate_*'), interim conditions ('Call repeatedly until status is completed or failed'), and concrete polling cadences per media type (~15s for images/sound effects, 15-30s for video/music). No inference is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_social_postPost to BudgetPixel FeedADestructiveInspect
Publish a post to the user's PUBLIC BudgetPixel community feed — visible to everyone and labeled "via MCP". ONLY use this when the user EXPLICITLY asks to post/share/publish; never post proactively. Costs 10 credits per post (anti-spam, charged on publish — same as the developer API) with an hourly posting cap. media: 1–6 images, or 1 video + up to 3 images, or exactly 1 audio track — pass the URLs you got from generations (check_generation_status links) or upload_media, or any public URL/base64. Images can carry optional model/prompt generation info. Audio posts accept song_name, genre (a fixed list — see the enum), lyrics, AND cover_image (cover art goes in its own field, never as a second media item). To enter the post in one of the user's clan themes, pass theme_id (call list_my_themes to find it). Returns the public post URL — share it with the user. Posts are moderated after publish (NSFW/spam rating affects feed visibility; the charge is not refunded for hidden posts).
| Name | Required | Description | Default |
|---|---|---|---|
| genre | No | Audio posts only: the track's genre — EXACTLY one of these values. Omit to have it classified automatically after publishing. | |
| media | Yes | 1–6 media items. Rules: 1–6 images, OR 1 video plus up to 3 images, OR exactly 1 audio track (audio can't mix). | |
| lyrics | No | Audio posts only: lyrics to show with the track. | |
| content | No | The post's text/caption (optional — media-only posts are fine). | |
| theme_id | No | Optional: enter the post in a live clan theme — the id from list_my_themes (or the number in a budgetpixel.com/themes/<id> link). Works with any media type; posting to a theme of a clan the user hasn't joined joins them to it, like on the site. | |
| song_name | No | Audio posts only: the track's display name. | |
| cover_image | No | Audio posts only: cover art — an image URL (generation link / upload_media URL), data URI, or base64 (max 15MB). Goes in THIS field, never as a media item. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already declaring it as a destructive write operation, the description adds important behavior beyond annotations: cost of 10 credits per post, hourly posting cap, post-publish moderation, NSFW/spam visibility impact, and no refunds for hidden posts.
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 front-loaded with the most important constraints: public feed, explicit-request-only, cost, caps, media rules, and return value. It is dense and occasionally repeats schema-level media rules, but nearly every sentence carries actionable information.
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?
There is no output schema, but the description explains that it returns the public post URL and instructs sharing it. Together with the annotations and rich schema, an agent has enough context on cost, visibility, moderation, and parameter constraints to invoke it correctly.
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 coverage is 100%, so the baseline is 3, but the description adds useful cross-tool context for media sources and theme_id lookup. It also restates nested media and audio-field rules already documented in the schema, so it is valuable but partly duplicative.
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: 'Publish a post to the user's PUBLIC BudgetPixel community feed.' It also clarifies public visibility and the 'via MCP' label, distinguishing this tool from generation and upload siblings.
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?
It gives explicit when-to-use and when-not-to-use guidance: 'ONLY use this when the user EXPLICITLY asks... never post proactively.' It also names supporting workflows, such as using check_generation_status links or upload_media for media, and list_my_themes for theme_id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_imageGenerate ImageADestructiveInspect
Use this to create or edit an AI image. Text-to-image from a prompt, OR image-to-image / editing / multi-reference by passing input_images (URLs, data URIs, or base64) — e.g. edit or restyle an image the user just generated by passing its URL. Input support is per-model: some take 1 image, some several, some none (check each model's max_input_images via list_models). Submits an async job and returns a job_id — then call check_generation_status to poll (usually ready in seconds); when complete it returns the finished image inline for you to display. Each call starts a new job that spends credits from the user's BudgetPixel balance (failed jobs aren't charged). Default model: seedream-5.0-pro; call list_models to see every available model with prices and input limits.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | Seed for reproducible generation | |
| model | No | AI model id. Omit for the default (seedream-5.0-pro — strong identity preservation, good for edits, up to 9 reference images). For fast, low-cost drafts pick flux-2-klein or seedream-5.0-flash (flat 25 credits, free references). By job: gpt-image-2.5-sunburst (precise edits), gpt-image-2.5-flare (fast everyday generation), seedream-4.5 (photorealism), gpt-image-2 (text in images), nano-banana-2 (editing), qwen-image-3.0 (all-rounder), flux-3-image (FLUX 3: up to 10 free references, optional web grounding; priced by size, 55 credits at 768px up to 790 at 4K). Call list_models for the full catalog with prices and input limits. | |
| prompt | Yes | Text prompt describing the image to generate | |
| quality | No | Optional rendering quality for models that support it (gpt-image-2: low/medium/high; gpt-image-2.5-sunburst and gpt-image-2.5-flare: low/medium/high/xhigh/max; grok-imagine-image-2: low/medium — no high tier). Higher costs more. On grok-imagine-image-2 quality x resolution sets the price (low 1K=50, low 2K=80, medium 1K=80, medium 2K=100 credits). Omit for default. | |
| grounding | No | Optional, flux-3-image only: let the model research the prompt with web and image search before rendering. On by default and free. Set false for faster, self-contained generation. Omit for the default. | |
| background | No | Optional output background for models that support it (seedream-5.0-flash, seedream-5.0-pro — see list_models). "transparent" keeps a transparent background when EDITING: pass exactly one input image, a PNG that already has transparent pixels (a cutout, sticker or logo), and you get back a PNG with transparency. It cannot make a transparent image from text alone. Omit (or "opaque") for a normal image. | |
| num_images | No | Number of images to generate (1-4) | |
| resolution | No | Optional output size (per-model options, e.g. seedream-5.0-pro & seedream-5.0-flash: 1K/2K; gpt-image-2 & nano-banana-2: up to 4K; flux-3-image: 768px/1K/1.5K/2K/4K — see list_models for what each size costs). Omit for the model default. Larger costs more, sometimes far more: flux-3-image is 55/65/90/130/790 credits per image at 768px/1K/1.5K/2K/4K, so confirm with the user before choosing 4K. | |
| aspect_ratio | No | Aspect ratio of the generated image. Omit for the default: 1:1 — except an edit with flux-3-image, which keeps the first input image's shape unless you set a ratio here. | |
| input_images | No | Optional input image(s) for image-to-image / editing / multi-reference — each a public image URL, a data URI, or raw base64. Per-model support: some models take 1, some several, some none (see max_input_images in list_models). Omit for text-to-image. To edit an image the user just generated, pass its URL here. | |
| negative_prompt | No | What to avoid in the generated image |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and openWorldHint=true, and the description corroborates and enriches that: each call is an async job that spends BudgetPixel credits, failed jobs aren't charged, the job_id must be polled via a sibling, and results arrive inline for display. That is substantial behavioral context beyond the annotation flags.
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 purpose and the prompt-vs-input_images split are front-loaded in the first sentence, and each subsequent sentence carries a distinct fact (input support, async polling, credit cost, default model). It is dense and somewhat long, with a little redundancy against the schema's own credit/cost prose, keeping it just short of a 5.
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 carries the return-value burden and does so: it names job_id, the polling tool, typical latency, and the fact that the finished image is returned inline for display. Combined with the 11-parameter schema and the three annotation flags, an agent has everything needed to invoke and follow through correctly.
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, but the description adds cross-parameter semantics the schema does not: transparent background requires exactly one input image that is a PNG with existing transparent pixels, aspect_ratio defaults differ for flux-3-image edits, and model defaults vary by capability. These are genuine usage-relevant relationships rather than restated field docs.
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 opens with a specific verb+resource ('create or edit an AI image') and immediately enumerates the two operating modes (text-to-image via prompt, image-to-image/editing/multi-reference via input_images). This cleanly separates it from siblings such as upscale_image, search_stock_images, and generate_video without needing to open any schema.
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?
It explicitly routes the agent: use input_images for edits/restyles, omit it for text-to-image, check max_input_images via list_models per model, then call check_generation_status to poll, and call list_models for the full catalog. It also gives a when-to-be-cautious rule ('confirm with the user before choosing 4K') and when-not cases ('cannot make a transparent image from text alone').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_musicGenerate MusicADestructiveInspect
Use this to create an AI music track (full songs with vocals, or instrumentals). Three models: music-3.0 (default, 200 credits — songs from a prompt and/or lyrics, lyrics optimizer on by default so a prompt alone works), mureka-v9 (60 credits — sings the user's EXACT lyrics verbatim, or instrumental/BGM), and lyria-3 (100 credits — high-fidelity from a rich prompt, can condition on up to 10 reference images), and sonilo-music (instrumental/background music of an EXACT length via duration, 5–360 s — priced PER SECOND at 4 credits/s with a 10-second minimum, no vocals). VIDEO-TO-MUSIC: pass a video URL (upload_media first for local files) and sonilo-video-music composes a licensed soundtrack for the clip's content, pacing and mood — priced per second of the video's measured length (15 credits/s, 10 s minimum, ≤360 s). Flat price per track (per second for the Sonilo models), charged on success only; each call starts a new paid job. Submits an async job and returns a numeric job_id — music takes a minute or three: poll check_generation_status with the job_id AND type "music" every 15–30 seconds, then share the finished track's listen/download link with the user (chat can't embed audio players).
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Music model id. Omit for the default (music-3.0 — latest MiniMax, all-purpose songs, 200 credits; passing a video auto-selects sonilo-video-music). Alternatives: music-2.6 (previous generation, same price), mureka-v9 (sings exact lyrics, cheapest at 60), lyria-3 (high-fidelity, image conditioning, 100), sonilo-music (instrumental/background music of an exact length, priced per second — pass duration). Call list_models for details. | |
| video | No | Video-to-music: URL of a video (≤360 s, ≤30 MB for public URLs) to compose a licensed soundtrack FOR — the music follows the clip's content, pacing and mood, and matches its length. Must be a URL — upload local files with upload_media first. Uses sonilo-video-music: 15 credits per second of the video's measured duration (10-second minimum). prompt becomes optional direction (genre/mood/instrumentation); no lyrics or duration. | |
| format | No | music-2.6/music-3.0 only: output audio format, wav (default) or mp3. | |
| images | No | lyria-3 only: up to 10 reference images to condition the mood — each a URL, data URI, or raw base64 (upload local files with upload_media). | |
| lyrics | No | Lyrics to sing. mureka-v9 sings them VERBATIM ([verse]/[chorus] tags supported); music-2.6/music-3.0 polish them unless lyrics_optimizer is false; lyria-3 treats them as optional guidance. | |
| prompt | No | Style/mood description of the track. Required for lyria-3 (10–2000 chars) and for instrumental tracks; optional on music-2.6/music-3.0 when lyrics are given. | |
| duration | No | sonilo-music only: track length in seconds (5–360, default 30). Billed per second with a 10-second minimum (4 credits/s → 30 s = 120 credits). Other music models ignore length (sonilo-video-music sizes the music to the video). | |
| instrumental | No | Generate an instrumental track (no vocals). music-2.6/music-3.0 and mureka-v9 (mureka requires a prompt in this mode). | |
| vocal_gender | No | mureka-v9 only: preferred vocal gender for songs (default auto). | |
| lyrics_optimizer | No | music-2.6/music-3.0 only. Write/polish lyrics from the prompt — DEFAULT TRUE (matches web/API). Set false to sing the provided lyrics as-is. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, openWorld=true, destructive=true, but the description adds substantial context the annotations cannot: it submits an async job returning a numeric job_id, takes 'a minute or three', must be polled via check_generation_status with type "music" every 15–30s, is charged on success only, starts a new paid job each call, and returns a listen/download link that chat cannot embed. This is exactly the extra behavior an agent needs.
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?
Front-loaded with the core purpose, but it is one dense wall of text mixing model selection, pricing, video-to-music and async/polling flow, with notable repetition of what the schema param descriptions already state. Given the 10-param, 4-model complexity some length is justified, but structure (bullets/sections) would have improved scannability.
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 high-complexity tool with no output schema, the description covers everything an agent needs: cost model, async submission and polling contract, the exact follow-up tool and cadence, and how to deliver the result to the user. No obvious gap remains for correct invocation.
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% and the schema already documents model pricing, video constraints, duration billing and per-model parameter applicability in detail; the description largely restates this (model prices, per-second billing, lyrics behavior). It adds cross-parameter interaction (passing a video auto-selects sonilo-video-music), but that is also mirrored in the schema. Baseline 3 is appropriate when the schema does the heavy lifting.
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?
States a specific verb+resource ('create an AI music track') and immediately scopes it (full songs with vocals, or instrumentals), clearly separating it from sibling generators like generate_image, generate_video and generate_sound_effect. The four-model breakdown further pins down exactly what this tool produces.
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?
Explicit routing rules: which model to pick for songs vs exact lyrics vs instrumental, when to pass a `video` URL for video-to-music (with upload_media as the prerequisite for local files), and when to use the duration-based Sonilo path. It even points to list_models for deeper detail and names the follow-up tool for polling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_sound_effectGenerate Sound EffectADestructiveInspect
Use this to create sound effects (NOT music). TEXT mode: describe the sound — Foley, ambience, UI sounds, whooshes/transitions, impacts, action sounds — with sonilo-sfx: 1–180 seconds, mp3 or wav, PRICED PER SECOND of the requested duration (5 credits/s, 3-second minimum → 5 s = 25, 10 s = 50, 30 s = 150 credits). VIDEO mode: pass a video URL (upload local files with upload_media first) to get frame-accurate effects synced to the clip's visible events with sonilo-video-sfx — billed per second of the VIDEO's measured length (15 credits/s, 3-second minimum, up to 360 s) and returns both the SFX track and the video with the effects mixed in. Each call starts a new paid job, charged on success only. Keep text clips as short as the sound needs and confirm cost for long videos. Submits an async job and returns a numeric job_id — text clips finish within ~15 seconds, video jobs can take a few minutes: poll check_generation_status with the job_id AND type "sound_effect" every 5–15 seconds, then share the finished link(s) with the user (chat can't embed players). For songs or background music use generate_music instead.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Sound-effect model id. Omit for the default (sonilo-sfx for text; sonilo-video-sfx is selected automatically when video is given). Call list_models for details. | |
| video | No | Optional INPUT VIDEO URL to sync the effects to (frame-accurate Foley/ambience/impacts for the clip's visible events). Must be a URL — upload local files with upload_media first; public URLs OK (≤30 MB, ≤360 s). Uses sonilo-video-sfx: 15 credits per second of the video (3-second minimum); returns the SFX track AND the video with the effects mixed in. prompt becomes optional direction. | |
| format | No | Output audio format: mp3 (default, small) or wav (lossless, for editing). | |
| prompt | No | Description of the sound effect — Foley, ambience, UI sounds, transitions, impacts, action (e.g. 'heavy rain on a tin roof with distant thunder'). Up to 1000 characters. | |
| duration | No | Text mode: length of the clip in seconds (1–180, default 10). Billed per second with a 3-second minimum — 10 s = 50 credits on the default model. Ignored when a video is given. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations flag a destructive, paid, open-world write, and the description goes well beyond them: per-second pricing with worked examples, 3-second minimum, charged-on-success-only semantics, async job behavior, expected completion times (~15s text, minutes for video), and the required polling cadence/interaction with check_generation_status. That is exactly the context an agent needs before spending credits.
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?
Front-loaded with the core mode split and scoping exclusion, then pricing, then the async/polling workflow. Dense but each clause carries operational weight (cost, timing, routing). Parenthetical pricing examples add length, though they also carry real 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?
No output schema exists, yet the description covers the return contract (numeric job_id, finished link(s), and the caveat that chat can't embed players) plus the polling follow-up with the correct type argument. For a paid async tool with 5 optional params, nothing an agent needs to call and follow up correctly is missing.
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 coverage is 100%, so the baseline is 3, but the description adds meaning the schema doesn't: the model default-selection logic (sonilo-sfx for text, sonilo-video-sfx auto-selected with video), that duration is billed per second with a 3-second floor, and that duration is ignored in video mode. These are cost-relevant semantics beyond field documentation.
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?
States a specific verb+resource (create sound effects) and immediately scopes it with '(NOT music)', explicitly naming the sibling generate_music as the alternative. An agent can distinguish this from generate_music and the other generation tools without opening a schema.
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?
Gives explicit mode selection rules (TEXT vs VIDEO), the prerequisite for video mode (upload_media first), the routing rule for songs/background music (use generate_music), and operational guidance for long clips ('confirm cost for long videos'). Both when-to-use and when-to-use-something-else are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_videoGenerate VideoADestructiveInspect
Use this to create or edit an AI video. Text-to-video from a prompt; image-to-video by passing image (start frame, + optional end_image); reference-to-video by passing reference_images; or video-to-video editing by passing video (an input video URL — upload local files with upload_media first). IMPORTANT — cost: video is priced per SECOND and by resolution (default model seedance-2.5: 480p=150, 720p=330, 1080p=750 credits/sec, plus 80/160/375 per second of reference-video INPUT), so e.g. 5s at 720p ≈ 1,650 credits and 5s at 1080p ≈ 3,750; confirm with the user before expensive combos (long durations or many reference clips). Each call starts a new paid job, charged on success only. Submits an async job and returns a job_id (uuid) — video takes MINUTES: poll check_generation_status every 15–30 seconds until it returns the finished video link, then share that link with the user. Default model: seedance-2.5; call list_models for available video models and prices.
| Name | Required | Description | Default |
|---|---|---|---|
| audio | No | Optional reference audio URL (MP3/WAV/OGG; upload local files with upload_media). Must accompany an image, reference_images, or video input. Not for minimax-h3 / seedance-2.5 / wan-3.0-video(-prime) — use reference_audios there. | |
| image | No | Optional START FRAME for image-to-video — a public image URL, a data URI, or raw base64. Can't be combined with reference_images or video. | |
| model | No | Video model id. Omit for the default (seedance-2.5 — flagship multimodal: text-to-video, image-to-video, reference images/videos/audio; pass a clip as reference_videos to edit/extend; 480p/720p/1080p, up to 30s). wan-3.0-video is the Alibaba all-in-one alternative — same modes, up to 30s, and ALL input media free (480p 60 / 720p 120 / 1080p 240 credits/sec output-only; wan-3.0-video-prime is the same model generating much faster at 85/170/340). For cheaper drafts pick seedance-2.0-mini (480p 60 / 720p 120 credits/sec). Call list_models for per-resolution prices. | |
| video | No | Optional INPUT VIDEO for video-to-video editing (2-15s) — must be a URL (upload local files with upload_media first). Can't be combined with image/end_image. On the seedance-2.0 family the INPUT seconds are billed at half the output per-second rate on top of the output. On minimax-h3-max the video is EXTENDED instead (1.6-60s source; length_seconds = new footage appended; source billed 170 credits/sec, first 15s). | |
| prompt | Yes | Text prompt describing the video to generate (or the edit to apply, when passing an input video) | |
| end_image | No | Optional END FRAME used together with image (the start frame) — the video interpolates between the two. | |
| resolution | No | Output resolution — PRICING VARIES A LOT (seedance-2.5: 480p=150, 720p=330, 1080p=750 credits per SECOND, default 720p; seedance-2.0: 1080p=550/4k=1250). Prefer 480p unless asked. | |
| aspect_ratio | No | Aspect ratio (seedance-2.5: 16:9, 9:16, 1:1, 4:3, 3:4, 21:9 — default 16:9). On minimax-h3 it applies to TEXT-TO-VIDEO only. On seedance-2.5 it applies to t2v AND jobs with reference images/audio; a start/end frame or a reference VIDEO forces adaptive (output follows the input's frame). On wan-3.0-video (and -prime) it is honored in EVERY mode (even with a first frame or reference media) and also accepts 'adaptive' (its default — the model picks a suitable ratio from the inputs). | |
| generate_audio | No | Whether the model should generate audio with the video (no price impact on seedance-2.5/2.0). | |
| negative_prompt | No | What to avoid in the generated video | |
| duration_seconds | No | Video length in seconds (seedance-2.5: 4–30, default 5; seedance-2.0: 4–15). Cost scales linearly. | |
| reference_audios | No | minimax-h3 / minimax-h3-max / seedance-2.5 / wan-3.0-video(-prime) only: reference AUDIO clip URLs (WAV/MP3; h3 ≤3/15s combined, 2.5 ≤5/30s combined, wan-3.0(-prime) ≤5/15s combined; free; upload local files with upload_media). Can't be combined with image/end_image. | |
| reference_images | No | Optional reference images guiding the video (subject consistency) — each a URL, data URI, or base64. seedance-2.5: up to 15; wan-3.0-video / wan-3.0-video-prime: up to 10 (free); seedance-2.0: up to 9 alone, 6 alongside an input video. Can't be combined with image/end_image. | |
| reference_videos | No | minimax-h3 / minimax-h3-max / seedance-2.5 / wan-3.0-video(-prime) only: reference VIDEO clip URLs guiding motion/identity — on seedance-2.5 and wan-3.0-video(-prime) also how you edit/extend a clip (h3: ≤3, 15s combined; 2.5: ≤5, 30s combined; wan-3.0(-prime): ≤5, 15s combined, and input + output ≤ 30s; upload local files with upload_media). h3 and 2.5 bill INPUT seconds on top of the output (h3 160/s; 2.5 80/160/375 per s at 480p/720p/1080p); wan-3.0-video(-prime) input is FREE. Can't be combined with image/end_image. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (destructive, non-read-only, open-world) only flag that this is a paid mutation; the description adds the real behavioral substance — per-second billing, charge-on-success-only, async job with a job_id, minute-scale latency, and the polling loop. This is materially more than the structured fields convey.
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?
Front-loaded with the modes and the cost warning; every sentence carries actionable content. It is long, and the pricing figures restated in the body overlap with the schema descriptions, but nothing is padded or boilerplate.
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 14-parameter, high-cost, async generation tool with no output schema, the description covers input modes, mutually exclusive combinations, cost, async lifecycle, polling target, and model alternatives. An agent has everything needed to invoke and follow up correctly.
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% and the per-parameter descriptions are already rich, so the schema carries the bulk of parameter meaning. The description adds defaults (seedance-2.5, 720p) and a worked cost example, but most of its pricing/model detail duplicates the schema. 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?
States a specific verb+resource and enumerates the four distinct modes (text-to-video, image-to-video, reference-to-video, video-to-video editing) with the exact parameter that selects each. An agent can distinguish this from generate_image/generate_music/generate_sound_effect without opening any schema.
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?
Explicitly routes the agent: use upload_media for local files, call list_models for other models and prices, poll check_generation_status every 15-30s, and confirm expensive combos with the user first. When-to-use, prerequisites and alternatives are all named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_credit_balanceGet Credit BalanceARead-onlyInspect
Use this when the user asks about their remaining credits, subscription plan, or usage. Returns monthly credit balance, extra credits, total available, and plan name.
| 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, destructiveHint=false, openWorldHint=false, so the safety profile is covered. Because there is no output schema, the description's enumeration of returned fields (monthly balance, extra credits, total available, plan name) adds real value beyond the structured data, though it says nothing about auth requirements or account scoping.
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?
Two sentences, zero waste: the trigger is front-loaded and the return contents follow. Every clause earns its place.
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 zero-parameter, read-only tool with no output schema, the description supplies both the invocation trigger and the shape of the response, which is exactly what is missing from the structured fields. Nothing an agent needs to call it correctly is absent.
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 takes zero parameters, which is the baseline-4 case. The description correctly implies a no-argument, context-derived lookup, so nothing further is needed.
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 names a specific resource (credit balance, extra credits, total available, plan name) and a retrieval verb, and no sibling tool (generation, media, assets, themes) overlaps this billing/account scope, so it is trivially distinguishable.
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?
"Use this when the user asks about their remaining credits, subscription plan, or usage" gives explicit trigger conditions tied to user intent. No alternatives or exclusions are named, but none of the siblings address billing, so the gap is minor.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_generation_historyGet Generation HistoryARead-onlyInspect
Get the user's recent generations made through this connector or the developer API — images by default, or pass type "video", "music", or "sound_effect". Outputs are kept for about 24 hours (they are never saved to the user's asset storage unless save_to_assets is called), so rows older than that show as expired with no link. Returns prompts, models, status, and result links: image URLs (reusable as input_images on generate_image to edit/restyle one — e.g. "make the third one wintery"), video watch links, or music / sound-effect listen links (also reusable as create_social_post media). Every row's job_id works with check_generation_status (music and sound effects also need their type) and with save_to_assets. Generations the user made on the BudgetPixel website are in their gallery, not here.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Which history to fetch: image (default), video, music, or sound_effect. | |
| limit | No | Number of recent generations to return (1-50, default 10) | |
| offset | No | Offset for pagination (default 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/destructive annotations, the description discloses important behaviors: outputs are kept only ~24 hours, never saved to asset storage unless save_to_assets is called, expired rows show with no link, and result links are reusable in other tools. This is rich, non-obvious behavior that an agent needs to know.
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 long but every sentence earns its place: purpose, type options, retention behavior, return fields, reuse semantics, and sibling routing. It is front-loaded with the core purpose and then layers necessary details without redundancy.
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?
There is no output schema, so the description carries the full burden of explaining return values. It does so thoroughly: prompts, models, status, result links, and the variations by type. It also covers expiration, job_id usage, save_to_assets interaction, and the website-gallery exclusion, leaving no major gap for a read-only listing tool.
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 coverage is 100%, so baseline is 3. The description adds extra semantics for the type parameter by explaining the default ('images by default') and what each result-link type enables (e.g., image URLs reusable via generate_image, music/sound-effect links via create_social_post). Limit/offset are not elaborated, but the schema already describes them clearly.
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 opens with a specific verb and resource ('Get the user's recent generations made through this connector or the developer API') and clearly differentiates from siblings by excluding website gallery generations and by noting that each row's job_id works with check_generation_status and save_to_assets. This makes the tool's scope unmistakable.
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 names related tools and when they apply: job_id can be used with check_generation_status (with the type caveat for music/sound effects) and save_to_assets. It also tells users where to find generations made on the BudgetPixel website ('in their gallery, not here'), providing an explicit when-not-to-use condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_modelsList ModelsARead-onlyInspect
List the AI image, video, music, and sound-effect models available on BudgetPixel with standard credit prices and capabilities. Featured models come first with a one-line role hint (when to pick each). Image models that charge by output size list every size's price (the size you pass as resolution sets the price). Video models are priced per SECOND by resolution; music models are flat per track; sound effects are per second with a 3-second minimum. Prices shown are standard rates in 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, destructiveHint=false, and openWorldHint=false, so safety is covered. The description adds substantive context beyond that: featured-first ordering, per-size pricing for image models, per-second-by-resolution video pricing, flat per-track music, and 3-second minimum for sound effects.
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?
Front-loaded with what is listed, then compactly enumerates the pricing rules by modality. Each pricing sentence carries distinct, non-redundant information; no padding.
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 input parameters and no output schema, the description carries the full burden of describing the return content, and it does so: categories, ordering, featured hints, and the price model per modality. An agent knows what to expect from the response.
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?
Zero parameters, so the baseline is 4. The description also clarifies that the 'resolution' you pass to generation tools sets the price, which is useful cross-tool semantic context even though this tool takes no input.
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?
States a specific verb (List) and resource (AI image, video, music, and sound-effect models) with scope: standard credit prices and capabilities. It is clearly distinguishable from siblings like generate_image or get_generation_history, which are action/history tools rather than a catalog.
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?
Usage is implied rather than stated: an agent can infer this is the discovery step before calling generate_* tools, and the 'one-line role hint (when to pick each)' helps model selection. However, it never explicitly says when to call this versus alternatives or what prerequisitives exist, so guidance stays implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_my_themesList My ThemesARead-onlyInspect
List the live clan themes the user can post to — themes of the clans they own, moderate, or have joined (each with the user's role, the theme's brief, and when entries close). Use it when the user wants to post into a theme / enter a theme / share to their clan, then pass the chosen theme's id as create_social_post's theme_id. Free and read-only; themes that haven't started or have ended are not listed.
| 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 and destructiveHint=false, but the description adds useful behavioral context: it is free, it only returns live themes, and it excludes themes that haven't started or have ended. It also discloses the metadata included per theme, which helps the agent understand the result shape before calling. There is no contradiction with the 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, front-loads the scope and returned fields, then gives the exact usage condition and follow-up integration. Every clause earns its place by adding either selection guidance or behavioral detail. There is no filler or repetition.
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 zero-parameter, read-only list tool with no output schema, the description covers what is listed, what fields come back, when to use it, and how to chain it into create_social_post. Nothing essential for correct invocation is missing. The annotations already cover the safety profile, so the description's added behavioral and output context completes the picture.
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 input parameters, so the schema carries no parameter semantics to document. The description appropriately focuses on the output-related value of the chosen theme id for create_social_post, but there are no parameters whose meaning needs further explanation. Baseline for zero-param tools is 4.
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: it lists the live clan themes the user can post to, scoped to clans they own, moderate, or have joined. It also specifies exactly what each item contains: the user's role, the theme's brief, and when entries close. This distinguishes it from sibling tools like create_social_post by making it the discovery step.
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?
It gives explicit usage conditions: use when the user wants to post into a theme, enter a theme, or share to their clan. It also names the follow-up action and parameter: pass the chosen theme's id as create_social_post's theme_id. The exclusion of themes that haven't started or have ended clarifies when results are available.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_to_assetsSave to AssetsAIdempotentInspect
Keep a generation permanently. Outputs made through this connector expire about 24 hours after generation and are NOT stored in the user's BudgetPixel assets by default. Call this when the user wants to keep, reuse later, or find a result in their gallery / workshops — it copies the output into their assets (this counts against their storage like a website generation). Pass the job_id (and type for video / music / sound_effect). Safe to call twice: an already-saved job just reports already_saved.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | What kind of generation job_id is: image (default), video, music, or sound_effect. | |
| job_id | Yes | The generation to keep — the job_id from generate_image / generate_music / generate_sound_effect / check_generation_status / get_generation_history (numeric), or the video job uuid from generate_video. | |
| folder_id | No | Optional asset folder id to save into (defaults to Uncategorized). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses important behavior beyond annotations: outputs expire in ~24 hours by default, saving counts against storage, and calling twice is safe because it 'reports already_saved.' This aligns with the idempotentHint annotation and adds concrete consequences that an agent needs to know before invoking the tool.
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 front-loaded with the core purpose, then provides context, usage triggers, parameter guidance, and idempotency—all in a compact set of sentences. Every sentence earns its place; there is no filler or redundant restating of the tool name.
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?
Given the tool has three parameters, no output schema, and moderate complexity, the description is complete. It explains why the tool exists (expiring outputs), when to use it, the storage side effect, the idempotent behavior, and the one parameter nuance worth flagging. Nothing essential is missing for an agent to call it correctly.
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 adds a small parameter hint—'Pass the job_id (and type for video / music / sound_effect)'—but this largely repeats the schema's type enum and job_id explanation. No significant extra parameter semantics beyond what the schema already provides.
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 opens with a specific verb and resource: 'Keep a generation permanently' and 'it copies the output into their assets.' It clearly distinguishes this from sibling generation and status-checking tools by explaining the connector's default 24-hour expiration and the act of persisting to assets. No ambiguity about what the tool does.
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 states when to call it: 'Call this when the user wants to keep, reuse later, or find a result in their gallery / workshops.' It does not explicitly name alternatives or state when not to use it, but the trigger conditions are clear and tied to the tool's purpose, which is a strong guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_stock_imagesSearch Stock ImagesADestructiveInspect
Use this when the user needs an existing stock photo, illustration, background, wallpaper or texture — for a website, slide, blog post, app, video or design — rather than a newly generated image. Searches BudgetPixel's stock image library: AI-generated images, each reviewed before listing (no real people, logos or text), licensed CC BY 4.0 for commercial use. Costs 10 credits per search, charged even when nothing matches, so write one specific query rather than many vague ones. It never generates: if nothing fits, say so. LICENCE: wherever an image is used, include its credit line exactly as returned (the attribution text; attribution_html for web pages). Download from the returned URLs rather than hotlinking them in production.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | popular (default — best matches first when there is a query), newest, or top (highest rated). | |
| type | No | Optional: photos only, or illustrations (including 3D and painted art) only. | |
| color | No | Optional dominant-colour filter. | |
| limit | No | How many results to return (default 10, max 20). The price is the same for any limit. | |
| query | No | What the image should show, in plain words — e.g. "misty pine forest at sunrise", "latte art on a wooden table", "abstract purple gradient background". Max 200 characters. Optional only when browsing a category. | |
| offset | No | For the next page: the previous offset plus the number returned. Each page is a new 10-credit search. | |
| category | No | Optional category filter. | |
| orientation | No | Optional shape filter: landscape for headers and slides, portrait for phone wallpapers and stories. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are unusually harsh here (readOnlyHint=false, destructiveHint=true, openWorldHint=false), and the description explains exactly why: every search consumes 10 credits irreversibly, even with zero matches. It further discloses content guarantees (AI-generated, reviewed, no real people/logos/text), the CC BY 4.0 commercial licence, and the obligation to reproduce the returned credit line and download rather than hotlink. This is real behavioral context, not a restatement of the 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?
Front-loaded with the selection condition in the first sentence, then cost, then licence obligations — a sensible priority order for an agent that must decide, call, and then comply. It is long but every sentence carries a distinct, actionable fact with no filler.
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 still names the return fields that matter (attribution, attribution_html, URLs) and explains the post-call obligation attached to them. Cost, content policy, licence, and the no-result fallback are all covered, leaving nothing an agent needs in order to call this correctly.
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 coverage is 100% and five params carry enums, so the structured fields already do the heavy lifting (baseline 3). The description adds value on top: it tells the agent to prefer one specific query over many vague ones, and clarifies the pricing consequence of offset ('Each page is a new 10-credit search') that the schema states only as a bare numeric range.
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?
States a specific verb and resource ('Searches BudgetPixel's stock image library') and explicitly contrasts the scope with generation ('rather than a newly generated image'), which cleanly separates it from the generate_image sibling. The opening clause names the user intent (existing stock photo, illustration, background, wallpaper, texture) so an agent can route to it without opening the schema.
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?
Gives explicit when-to-use ('the user needs an existing stock photo...') and when-not ('It never generates: if nothing fits, say so'), plus a direct steering instruction to write one specific query instead of many vague ones. It also states the cost condition that governs repeated calls (10 credits per search, charged even when nothing matches).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_mediaUpload MediaAInspect
Upload a local image, video, or audio file to BudgetPixel and get back a short-lived URL (valid ~24h) to use as a generation input: pass it as an input_images value on generate_image, or as image / end_image / reference_images / video / audio on generate_video. Use this when the user has a LOCAL file: read the file and pass its base64 as 'file'. Not charged; max 50MB. Video/audio inputs REQUIRE this (generate_video takes them by URL only). If you already have a public URL, pass it straight to the generate tool instead.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | The file to upload, as raw base64 or a data URI (data:image/png;base64,...). Read the local file and pass its base64 here. Max 50MB. Images: PNG/JPEG/WebP/GIF · Video: MP4/WebM · Audio: MP3/WAV/OGG. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals key behavioral details beyond the annotations: the returned URL expires in ~24h, uploads are not charged, files are capped at 50MB, and video/audio uploads are required for generate_video. These are meaningful operational semantics not present in the schema or 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 dense but well organized, front-loading the core purpose and immediate usage guidance, then adding constraints and alternatives. Every sentence contributes necessary information without redundancy.
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 single-parameter upload tool with no output schema, the description covers the input format, size limits, accepted file types, output lifetime, cost implications, and integration with sibling tools. An agent has everything needed to call it correctly and choose it over alternatives.
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 coverage is 100%, so the baseline is 3; the description adds extra context by explaining how to obtain the 'file' parameter (read local file) and how the returned URL will be consumed by generate_image/generate_video. This goes beyond the schema's literal parameter description.
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's function: upload a local image, video, or audio file and receive a short-lived URL for generation input. It specifies the resource, the action, and how the result is used, making it distinct from sibling generation tools.
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?
Explicitly says to use when the user has a LOCAL file, and tells the agent to read the file and pass base64. It also gives the alternative: if the user already has a public URL, pass it directly to the generate tool. This provides clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upscale_imageUpscale ImageADestructiveInspect
Use this to upscale an image to a higher resolution. Default model p-image-upscale (Pruna AI) returns results in seconds and is priced by the target resolution: 4 MP = 10, 8 MP = 15, 16 MP = 30, 32 MP = 60 credits. Alternative clarity-upscaler does creative detail enhancement (steer with prompt/creativity) at a flat 30 credits and takes ~60 seconds. Pass the image as a URL (a generated image's URL, or upload_media for local files), a data URI, or base64. Charged on success only. The tool waits for the result and returns the upscaled image's URL — share it with the user. Unlike generations, the upscaled image is also saved to the user's BudgetPixel library.
| Name | Required | Description | Default |
|---|---|---|---|
| image | Yes | The image to upscale: an http(s) URL (a generated image's URL, or one from upload_media for local files), a data URI, or raw base64. Max ~20MB. | |
| model | No | Upscale model: p-image-upscale (default — Pruna AI, results in seconds, priced by target resolution 4/8/16/32 MP = 10/15/30/60 credits) or clarity-upscaler (creative detail enhancement, flat 30 credits, ~60s). | |
| prompt | No | clarity-upscaler only: optional guiding prompt describing the image content. | |
| target | No | p-image-upscale only: target output resolution in megapixels (sets the price: 4=10, 8=15, 16=30, 32=60 credits; default 4). | |
| creativity | No | clarity-upscaler only: how much new detail the model may invent (0.3-0.9, default 0.35). | |
| enhance_details | No | p-image-upscale only: enhance textures and fine detail (may increase contrast). | |
| enhance_realism | No | p-image-upscale only: improve realism — recommended for AI-generated images. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, destructiveHint=true, openWorldHint=true), the description discloses billing behavior ('Charged on success only'), latency ('results in seconds' vs '~60 seconds'), synchronous behavior ('waits for the result'), the return value ('returns the upscaled image's URL'), and a persistence side effect ('also saved to the user's BudgetPixel library'). That is substantial context an agent cannot get from the 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?
Purpose and defaults are front-loaded, and the ordering (what it does → models/pricing → input formats → billing → return) is logical. However, the pricing table and model descriptions are duplicated almost verbatim from the schema, adding length without new information.
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 7-parameter tool with no output schema, the description supplies everything needed: input format options, model choice and cost/latency trade-offs, billing semantics, and the shape of the returned result plus its side effect. Nothing material is left for the agent to guess.
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 schema already documents every parameter, including model trade-offs, target pricing, and clarity-upscaler-only fields. The description largely restates the same pricing and model facts rather than adding syntax or format details beyond the schema, 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 opening sentence states a specific verb and resource ('upscale an image to a higher resolution'), which cleanly separates it from the sibling upscale_video and from generation tools. An agent can identify the tool's function without opening the schema.
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?
It gives explicit model-selection guidance: the fast, resolution-priced p-image-upscale default versus clarity-upscaler for 'creative detail enhancement (steer with prompt/creativity)' at a flat 30 credits. It also specifies accepted input forms (URL, upload_media, data URI, base64). It stops short of stating when NOT to upscale or how it relates to generate_image.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upscale_videoUpscale VideoADestructiveInspect
Use this to upscale a video to 1080p or 4K (30 or 60 fps) with Topaz video upscaling. Priced per second of the INPUT video: 1080p = 15 (30fps) / 30 (60fps) credits/s, 4K = 60 / 120 credits/s — so a 10s clip to 1080p30 costs 150 credits; confirm cost with the user for 4K. Input up to 20 seconds (pass a URL; upload_media for local files). Charged on success only. Jobs take a few MINUTES: the tool returns a job_id — call upscale_video again with just job_id every 30-60 seconds until it returns the finished video URL, then share it with the user. The upscaled video is also saved to the user's BudgetPixel library.
| Name | Required | Description | Default |
|---|---|---|---|
| video | No | The video to upscale: an http(s) URL (a generated video's URL, or one from upload_media for local files). Up to 20 seconds, ≤50MB. Required unless job_id is set. | |
| job_id | No | A previously returned upscale job id — pass it alone to check progress and fetch the finished video URL. | |
| target_fps | No | Target frame rate (default 30). 60 fps doubles the per-second rate. | |
| target_resolution | No | Target output resolution (default 1080p). 4K costs 4x: 1080p = 15/30 credits per input second (30/60fps), 4K = 60/120. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (destructive/openWorld/readOnly) by disclosing pricing per input second, that billing happens on success only, the 20s input cap, multi-minute async latency, and that output lands in the user's BudgetPixel library. The polling contract is the key behavioral fact an agent needs and it is spelled out.
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?
Front-loaded with purpose and pricing, then the async workflow, then storage. Dense and largely waste-free, though the credit table appears in both prose and the target_resolution/target_fps schema descriptions, making it slightly redundant.
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?
No output schema exists, so the description carries the return-value burden and does: it explains that the call returns a job_id and that a later call returns the finished video URL. With the cost, limits, and async contract covered, nothing an agent needs to invoke this correctly is missing.
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 coverage is already 100%, but the description adds meaning beyond it: the cost-per-second mapping tied to fps and resolution, the worked 10s example, and the mutual-exclusivity rule that job_id is passed alone. It repeats some pricing already in target_resolution's schema text, so not a full 5.
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?
States a specific verb+resource ('upscale a video'), names the engine, and enumerates the exact output space (1080p/4K at 30/60fps). An agent can immediately distinguish this from upscale_image and generate_video without opening a schema.
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?
Explicit routing: pass a URL directly, use upload_media for local files, confirm cost with the user before 4K, and a full polling recipe (call again with just job_id every 30-60s). Names the alternative tool and the condition that selects it.
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.
1 tool update
- Changed
generate_image4 fields changed- changed
Input schema / properties / aspect_ratio / descriptionPrevious value: -"Aspect ratio of the generated image"New value: +"Aspect ratio of the generated image. Omit for the default: 1:1 — except an edit with flux-3-image, which keeps the first input image's shape unless you set a ratio here." - added
Input schema / properties / groundingAdded value: +{ + "description": "Optional, flux-3-image only: let the model research the prompt with web and image search before rendering. On by default and free. Set false for faster, self-contained generation. Omit for the default.", + "type": "boolean" +} - changed
Input schema / properties / model / descriptionPrevious value: -"AI model id. Omit for the default (seedream-5.0-pro — premium flagship: top quality, strongest identity preservation, great for edits). For fast & cheap drafts pick flux-2-klein (free on Pro/Ultra plans) or seedream-5.0-flash (flat 25 credits, free references). Other strong picks: gpt-image-2.5-sunburst (OpenAI precision edits, premium quality), gpt-image-2.5-flare (fast OpenAI everyday model), seedream-4.5 (photorealism), gpt-image-2 (text in images), nano-banana-2 (premium editing), qwen-image-3.0 (all-rounder). Call list_models for the full catalog with prices and input limits."New value: +"AI model id. Omit for the default (seedream-5.0-pro — strong identity preservation, good for edits, up to 9 reference images). For fast, low-cost drafts pick flux-2-klein or seedream-5.0-flash (flat 25 credits, free references). By job: gpt-image-2.5-sunburst (precise edits), gpt-image-2.5-flare (fast everyday generation), seedream-4.5 (photorealism), gpt-image-2 (text in images), nano-banana-2 (editing), qwen-image-3.0 (all-rounder), flux-3-image (FLUX 3: up to 10 free references, optional web grounding; priced by size, 55 credits at 768px up to 790 at 4K). Call list_models for the full catalog with prices and input limits." - changed
Input schema / properties / resolution / descriptionPrevious value: -"Optional output size (per-model options, e.g. seedream-5.0-pro & seedream-5.0-flash: 1K/2K; gpt-image-2 & nano-banana-2: up to 4K — see list_models). Omit for the model default. Larger costs more."New value: +"Optional output size (per-model options, e.g. seedream-5.0-pro & seedream-5.0-flash: 1K/2K; gpt-image-2 & nano-banana-2: up to 4K; flux-3-image: 768px/1K/1.5K/2K/4K — see list_models for what each size costs). Omit for the model default. Larger costs more, sometimes far more: flux-3-image is 55/65/90/130/790 credits per image at 768px/1K/1.5K/2K/4K, so confirm with the user before choosing 4K."
1 tool update
- Changed
upscale_video1 field changed- changed
Input schema / properties / video / descriptionPrevious value: -"The video to upscale: an http(s) URL (a generated video's URL, or one from upload_media for local files). Up to 20 seconds, ≤100MB. Required unless job_id is set."New value: +"The video to upscale: an http(s) URL (a generated video's URL, or one from upload_media for local files). Up to 20 seconds, ≤50MB. Required unless job_id is set."
3 tool updates
- Changed
create_social_post1 field changed- added
Input schema / properties / theme_idAdded value: +{ + "description": "Optional: enter the post in a live clan theme — the id from list_my_themes (or the number in a budgetpixel.com/themes/<id> link). Works with any media type; posting to a theme of a clan the user hasn't joined joins them to it, like on the site.", + "minimum": 1, + "type": "integer" +}
- Changed
generate_image3 fields changed- added
Input schema / properties / backgroundAdded value: +{ + "description": "Optional output background for models that support it (seedream-5.0-flash, seedream-5.0-pro — see list_models). \"transparent\" keeps a transparent background when EDITING: pass exactly one input image, a PNG that already has transparent pixels (a cutout, sticker or logo), and you get back a PNG with transparency. It cannot make a transparent image from text alone. Omit (or \"opaque\") for a normal image.", + "enum": [ + "opaque", + "transparent" + ], + "type": "string" +} - changed
Input schema / properties / model / descriptionPrevious value: -"AI model id. Omit for the default (seedream-5.0-pro — premium flagship: top quality, strongest identity preservation, great for edits). For fast & cheap drafts pick flux-2-klein (free on Pro/Ultra plans). Other strong picks: gpt-image-2.5-sunburst (OpenAI precision edits, premium quality), gpt-image-2.5-flare (fast OpenAI everyday model), seedream-4.5 (photorealism), gpt-image-2 (text in images), nano-banana-2 (premium editing), qwen-image-3.0 (all-rounder). Call list_models for the full catalog with prices and input limits."New value: +"AI model id. Omit for the default (seedream-5.0-pro — premium flagship: top quality, strongest identity preservation, great for edits). For fast & cheap drafts pick flux-2-klein (free on Pro/Ultra plans) or seedream-5.0-flash (flat 25 credits, free references). Other strong picks: gpt-image-2.5-sunburst (OpenAI precision edits, premium quality), gpt-image-2.5-flare (fast OpenAI everyday model), seedream-4.5 (photorealism), gpt-image-2 (text in images), nano-banana-2 (premium editing), qwen-image-3.0 (all-rounder). Call list_models for the full catalog with prices and input limits." - changed
Input schema / properties / resolution / descriptionPrevious value: -"Optional output size (per-model options, e.g. seedream-5.0-pro: 1K/2K; gpt-image-2 & nano-banana-2: up to 4K — see list_models). Omit for the model default. Larger costs more."New value: +"Optional output size (per-model options, e.g. seedream-5.0-pro & seedream-5.0-flash: 1K/2K; gpt-image-2 & nano-banana-2: up to 4K — see list_models). Omit for the model default. Larger costs more."
- Added
list_my_themes
1 tool update
- Changed
generate_video3 fields changed- changed
Input schema / properties / reference_audios / descriptionPrevious value: -"minimax-h3 / seedance-2.5 / wan-3.0-video(-prime) only: reference AUDIO clip URLs (WAV/MP3; h3 ≤3/15s combined, 2.5 ≤5/30s combined, wan-3.0(-prime) ≤5/15s combined; free; upload local files with upload_media). Can't be combined with image/end_image."New value: +"minimax-h3 / minimax-h3-max / seedance-2.5 / wan-3.0-video(-prime) only: reference AUDIO clip URLs (WAV/MP3; h3 ≤3/15s combined, 2.5 ≤5/30s combined, wan-3.0(-prime) ≤5/15s combined; free; upload local files with upload_media). Can't be combined with image/end_image." - changed
Input schema / properties / reference_videos / descriptionPrevious value: -"minimax-h3 / seedance-2.5 / wan-3.0-video(-prime) only: reference VIDEO clip URLs guiding motion/identity — on seedance-2.5 and wan-3.0-video(-prime) also how you edit/extend a clip (h3: ≤3, 15s combined; 2.5: ≤5, 30s combined; wan-3.0(-prime): ≤5, 15s combined, and input + output ≤ 30s; upload local files with upload_media). h3 and 2.5 bill INPUT seconds on top of the output (h3 160/s; 2.5 80/160/375 per s at 480p/720p/1080p); wan-3.0-video(-prime) input is FREE. Can't be combined with image/end_image."New value: +"minimax-h3 / minimax-h3-max / seedance-2.5 / wan-3.0-video(-prime) only: reference VIDEO clip URLs guiding motion/identity — on seedance-2.5 and wan-3.0-video(-prime) also how you edit/extend a clip (h3: ≤3, 15s combined; 2.5: ≤5, 30s combined; wan-3.0(-prime): ≤5, 15s combined, and input + output ≤ 30s; upload local files with upload_media). h3 and 2.5 bill INPUT seconds on top of the output (h3 160/s; 2.5 80/160/375 per s at 480p/720p/1080p); wan-3.0-video(-prime) input is FREE. Can't be combined with image/end_image." - changed
Input schema / properties / video / descriptionPrevious value: -"Optional INPUT VIDEO for video-to-video editing (2-15s) — must be a URL (upload local files with upload_media first). Can't be combined with image/end_image. On the seedance-2.0 family the INPUT seconds are billed at half the output per-second rate on top of the output."New value: +"Optional INPUT VIDEO for video-to-video editing (2-15s) — must be a URL (upload local files with upload_media first). Can't be combined with image/end_image. On the seedance-2.0 family the INPUT seconds are billed at half the output per-second rate on top of the output. On minimax-h3-max the video is EXTENDED instead (1.6-60s source; length_seconds = new footage appended; source billed 170 credits/sec, first 15s)."
1 tool update
- Added
search_stock_images
1 tool update
- Changed
generate_image2 fields changed- changed
Input schema / properties / model / descriptionPrevious value: -"AI model id. Omit for the default (seedream-5.0-pro — premium flagship: top quality, strongest identity preservation, great for edits). For fast & cheap drafts pick flux-2-klein (free on Pro/Ultra plans). Other strong picks: seedream-4.5 (photorealism), gpt-image-2 (text in images), nano-banana-2 (premium editing), qwen-image-3.0 (all-rounder). Call list_models for the full catalog with prices and input limits."New value: +"AI model id. Omit for the default (seedream-5.0-pro — premium flagship: top quality, strongest identity preservation, great for edits). For fast & cheap drafts pick flux-2-klein (free on Pro/Ultra plans). Other strong picks: gpt-image-2.5-sunburst (OpenAI precision edits, premium quality), gpt-image-2.5-flare (fast OpenAI everyday model), seedream-4.5 (photorealism), gpt-image-2 (text in images), nano-banana-2 (premium editing), qwen-image-3.0 (all-rounder). Call list_models for the full catalog with prices and input limits." - changed
Input schema / properties / quality / descriptionPrevious value: -"Optional rendering quality for models that support it (gpt-image-2: low/medium/high; grok-imagine-image-2: low/medium — no high tier). Higher costs more. On grok-imagine-image-2 quality x resolution sets the price (low 1K=50, low 2K=80, medium 1K=80, medium 2K=100 credits). Omit for default."New value: +"Optional rendering quality for models that support it (gpt-image-2: low/medium/high; gpt-image-2.5-sunburst and gpt-image-2.5-flare: low/medium/high/xhigh/max; grok-imagine-image-2: low/medium — no high tier). Higher costs more. On grok-imagine-image-2 quality x resolution sets the price (low 1K=50, low 2K=80, medium 1K=80, medium 2K=100 credits). Omit for default."
1 tool update
- Added
save_to_assets
12 tool updates
- First observed
check_generation_status - First observed
create_social_post - First observed
generate_image - First observed
generate_music - First observed
generate_sound_effect - First observed
generate_video - First observed
get_credit_balance - First observed
get_generation_history - First observed
list_models - First observed
upload_media - First observed
upscale_image - First observed
upscale_video
Related MCP Connectors
Generate AI images and videos from any compatible MCP client.
Generate images, video, audio and short films with 140+ AI models from any MCP client.
Use AI models for chat, image, and video generation from Claude Code and other MCP hosts.
AI voice generation: text-to-speech and voice cloning from any MCP client.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI image and video generation using Dreamshot's API, supporting tools like image editing, video creation, and enhancement directly from MCP-compatible clients.MIT
- AlicenseAqualityDmaintenanceMCP server for Krea.ai enabling AI image and video generation using models like Flux, Hailuo, Runway, Kling, and others via natural language prompts.919 npm10Apache 2.0
- AlicenseAqualityCmaintenanceMCP server for AI image generation, transformation, and style management via the Recraft API. Provides tools for text-to-image, image-to-image, inpainting, background operations, vectorization, upscaling, and custom style creation.1637 npm10MIT
- AlicenseAqualityDmaintenanceEnables AI image generation via multiple providers (Yunwu, Gemini) with customizable aspect ratios, resolutions, and output settings, seamlessly integrating with MCP-compatible clients.18 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.