Skip to content

com.budgetpixel/mcp

by budgetpixel.com · remote · no sign-in to list tools · v1.0.0 · published by com.budgetpixel

Generate AI images, video, music, and sound effects, and upscale them, from any MCP client.

Deletes · 11Changes · 3

21 tools: 11 can delete or cancel things, 3 change things and 7 only read.

Scanned Oct 21, 2026

2 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http budgetpixel https://mcp.budgetpixel.com/mcp

Findings

Matches of fixed checks, with the text they matched.

2 warn
  • The server marks "search_stock_images" destructive (destructiveHint: true), and its name says "search", a word for reading.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false}; The name "search_stock_images" says "search": a word for reading.

    What this check looks for
  • The server marks "search_stock_audio" destructive (destructiveHint: true), and its name says "search", a word for reading.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false}; The name "search_stock_audio" says "search": a word for reading.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

21 tools

Deletes or cancels 11Claude Code: deny
  • create_social_postPublish a post to the user's PUBLIC BudgetPixel community feed — visible to everyone and labeled "via MCP".Reads text others writeCan send data outNo findings

    Why it is in this group

    • The name "create_social_post" says "create": a word for a change.
    • The description's first verb is "publish": a word for a change that another call does not undo.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "create_social_post" says "create" and "post": it writes something other people read.
    Description, as the server wrote it
    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). Posts are All Rights Reserved by default; pass license ("cc-by" or "cc0") ONLY when the user explicitly asks for a Creative Commons license — it is permanent and cannot be changed after publishing. 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).

    Annotations the server declares

    • readOnlyHint: false
    • openWorldHint: true
    • destructiveHint: true
  • generate_3d_modelTurn one picture into a textured 3D model (image-to-3D).Reads text others writeNo findings

    Why it is in this group

    • The name "generate_3d_model" says "generate": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Turn one picture into a textured 3D model (image-to-3D). Always returns a GLB; meshy-7.1 also offers FBX, USDZ (iPhone AR) and STL (3D printing). Pick the model by job: tripo-h3.1 (default) is the most faithful reconstruction — including cartoons and stylized art — with PBR materials, ~4 min, 400 credits; meshy-7.1 makes lighter ~30K-triangle models in more formats and supports rigging + animation for humanoid characters, ~2 min, 1600 credits. Best input is one subject on a plain background. Submits an async job and returns a job_id — 3D models take 2-5 minutes, so poll check_generation_status with this job_id and type "3d" every 15-30 seconds; when done it returns the thumbnail inline plus download links (GLB/FBX/USDZ/STL). Files are kept about 24 hours, so download them promptly (save_to_assets does not take 3D models). Charged on success only.

    Annotations the server declares

    • readOnlyHint: false
    • openWorldHint: true
    • destructiveHint: true
  • generate_depth_mapUse this to turn a video into a depth map video (Video Depth Anything, on BudgetPixel's own GPUs): a steady, flicker-free video where near is white and far is black, at the input's…Reads text others writeNo findings

    Why it is in this group

    • The name "generate_depth_map" says "generate": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Use this to turn a video into a depth map video (Video Depth Anything, on BudgetPixel's own GPUs): a steady, flicker-free video where near is white and far is black, at the input's size (up to 1080p) and frame rate (up to 30 fps). Use it as a depth / structure / motion reference or control video for video models — grayscale (the default colormap) is what they take as a depth reference; turbo, inferno, magma and viridis colour it for viewing only. Priced per second of the INPUT video, rounded up to whole seconds, 5-second minimum, by model size: small 20 / base 30 / large 40 credits per second (a 5-second clip or shorter costs 100 / 150 / 200, a 10-second clip 200 / 300 / 400). The resolution does not change the price. small is fastest; base adds edge detail; large draws the finest detail (hair, thin poles, distant people) and is the steadiest. Input: a video URL (pass one from upload_media for local files), up to 30 seconds and 50MB. Options: size (default small), colormap (default grayscale), resolution (default auto = the input's size, never upscaled), keep_audio (copy the input's audio), side_by_side (input on the left, depth map on the right), face_mesh (no extra charge: draws each face's mesh so a video model keeps lip, eye and head movement; set it when people talk or emote), max_faces (1-4, default 4), include_face_landmarks (no extra charge: also returns a face landmarks JSON link). The price is held when the job starts and charged on success only; a failed job is never charged. Jobs take about 1-2 minutes: the tool returns a job_id — poll check_generation_status with that job_id and type "depth" every 15-30 seconds until it returns the finished depth video, then tell the user. The depth video is also saved to the user's BudgetPixel library.

    Annotations the server declares

    • readOnlyHint: false
    • openWorldHint: true
    • destructiveHint: true
  • generate_imageUse this to create or edit an AI image.Reads text others writeNo findings

    Why it is in this group

    • The name "generate_image" says "generate": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    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. Write @handle in the prompt to cast a character (list_characters), e.g. a free BudgetPixel AI influencer like @barry.

    Annotations the server declares

    • readOnlyHint: false
    • openWorldHint: true
    • destructiveHint: true
  • generate_musicUse this to create an AI music track (full songs with vocals, or instrumentals).Reads text others writeNo findings

    Why it is in this group

    • The name "generate_music" says "generate": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    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).

    Annotations the server declares

    • readOnlyHint: false
    • openWorldHint: true
    • destructiveHint: true
  • generate_sound_effectUse this to create sound effects (NOT music).Reads text others writeNo findings

    Why it is in this group

    • The name "generate_sound_effect" says "generate": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • openWorldHint: true
    • destructiveHint: true
  • generate_videoUse this to create or edit an AI video.Reads text others writeNo findings

    Why it is in this group

    • The name "generate_video" says "generate": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    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. Write @handle in the prompt to cast a character (list_characters), e.g. a free BudgetPixel AI influencer like @barry.

    Annotations the server declares

    • readOnlyHint: false
    • openWorldHint: true
    • destructiveHint: true
  • search_stock_audioUse this when the user needs an existing sound effect or a piece of background music — for a video, podcast, stream, game, app or presentation — rather than a newly generated one.1 finding

    Why it is in this group

    • The name "search_stock_audio" says "search": a word for reading.
    • The server marks it destructive (destructiveHint: true).

    Findings

    • Warn

      The server marks "search_stock_audio" destructive (destructiveHint: true), and its name says "search", a word for reading.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false}; The name "search_stock_audio" says "search": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Use this when the user needs an existing sound effect or a piece of background music — for a video, podcast, stream, game, app or presentation — rather than a newly generated one. Searches BudgetPixel's free audio library, licensed CC BY 4.0 for commercial use, every item listened to and scored before listing. kind "sound_effect": whooshes, impacts, UI sounds, Foley, ambiences, animals, vehicles (a fraction of a second to about 6 s). kind "music": instrumental background tracks such as lofi, corporate, cinematic, acoustic (up to about a minute). Costs 10 credits per search, charged even when nothing matches. Try it before generate_sound_effect or generate_music: a search is cheaper and instant. Write the query as a few plain words naming the sound ("door creak", "soft notification chime", "lofi study beat"), not a generation prompt: every word counts, and a word the library does not have counts as a miss. It never generates: if nothing fits, say so. LICENCE: wherever a result is used, include its credit line exactly as returned (the `attribution` text; `attribution_html` for web pages).

    Annotations the server declares

    • readOnlyHint: false
    • openWorldHint: false
    • destructiveHint: true
  • search_stock_imagesUse 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 g…Reads text others write1 finding

    Why it is in this group

    • The name "search_stock_images" says "search": a word for reading.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe description's first sentence says "website": it reads web pages, which anyone can write.

    Findings

    • Warn

      The server marks "search_stock_images" destructive (destructiveHint: true), and its name says "search", a word for reading.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false}; The name "search_stock_images" says "search": a word for reading.

      What this check looks for
    Description, as the server wrote it
    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. Set transparent to true for cut-outs only: PNG files with a transparent background, for stickers, overlays and compositing. 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.

    Annotations the server declares

    • readOnlyHint: false
    • openWorldHint: false
    • destructiveHint: true
  • upscale_imageUse this to upscale an image to a higher resolution.Reads text others writeNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • openWorldHint: true
    • destructiveHint: true
  • upscale_videoUse this to upscale a video, with one of two models.Reads text others writeNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Use this to upscale a video, with one of two models. Topaz (model topazlabs-video-upscale, the default): 1080p or 4K at 30 or 60 fps, 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; its result is an H.265 (HEVC) 10-bit MP4, which some browsers cannot play (black frame with audio) — tell the user. FLUX 3 Video Upscale (model flux-3-video-upscale): 1.5x to 3x the input frame (input up to 2560x1440), precise (keeps faces and products) or creative (adds fine detail), keeps the frame rate and audio, H.264 output; priced per megapixel-second of OUTPUT: 95 credits precise / 135 creative, so one second of 1080p output is 188 / 267 credits and of 4K 752 / 1068 — it costs far more than Topaz, so state the price and confirm with the user first. Input up to 20 seconds (pass a URL; upload_media for local files). The price is held when the job starts and 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. The upscaled video is also saved to the user's BudgetPixel library.

    Annotations the server declares

    • readOnlyHint: false
    • openWorldHint: true
    • destructiveHint: true
Changes things 3Claude Code: ask
  • recommend_influencersUse this when the user wants an AI influencer or a character for a product, brand, campaign, ad or post and hasn't picked one.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Use this when the user wants an AI influencer or a character for a product, brand, campaign, ad or post and hasn't picked one. Pass the brief (what it is, for whom, where it will be posted) and get the BudgetPixel AI influencers who fit it best, each with why, a content idea and a ready-to-use prompt that starts with their @handle (pass it to generate_image or generate_video). include_mine also considers the user's own characters. Free.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
    • destructiveHint: false
  • save_to_assetsKeep a generation permanently.No findings

    Why it is in this group

    • The name "save_to_assets" says "save": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • openWorldHint: false
    • destructiveHint: false
    • idempotentHint: true
  • upload_mediaUpload 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_ima…No findings

    Why it is in this group

    • The name "upload_media" says "upload": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • openWorldHint: false
    • destructiveHint: false
Only reads 7Claude Code: allow
  • check_generation_statusUse this after calling generate_image, generate_video, generate_music, generate_sound_effect, generate_3d_model, or generate_depth_map to poll for results.No findings

    Why it is in this group

    • The name "check_generation_status" says "status": a word for reading.
    Description, as the server wrote it
    Use this after calling generate_image, generate_video, generate_music, generate_sound_effect, generate_3d_model, or generate_depth_map to poll for results. Pass a job_id to check a specific job — numeric = image, uuid = video, and for MUSIC / SOUND-EFFECT / 3D-MODEL / DEPTH-MAP jobs also pass type "music" / "sound_effect" / "3d" / "depth" (3D jobs are uuids too, like video) — 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). Completed 3D-MODEL jobs return the thumbnail inline plus download links (GLB/FBX/USDZ/STL) and a viewer link — share the links and tell the user downloads expire in about 24 hours. Completed DEPTH-MAP jobs return the depth video, which is saved in the user's BudgetPixel library. Poll every few seconds for images and sound effects (~15 s), every 15–30 seconds for videos, music, 3D models and depth maps (they take minutes). Call repeatedly until status is 'completed' or 'failed'.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
    • destructiveHint: false
  • get_characterUse this to learn one character before casting it or using it elsewhere: its look word for word, personality, speaking style, backstory, directing notes, signature details and cons…Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "get_character" says "get": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "note": it reads notes.
    • untrusted-inputThe description's first sentence says "mention": it reads comments, which other people can write.
    Description, as the server wrote it
    Use this to learn one character before casting it or using it elsewhere: its look word for word, personality, speaking style, backstory, directing notes, signature details and consistency rules, every picture with a download link (full size for the BudgetPixel influencers and the user's own characters, so they can be used with other tools too), the models a mention works on, and the terms for using an influencer. Use the profile to write prompts, captions and scripts in the character's own voice. Free.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
    • destructiveHint: false
  • get_credit_balanceUse this when the user asks about their remaining credits, subscription plan, or usage.No findings

    Why it is in this group

    • The name "get_credit_balance" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
    • destructiveHint: false
  • get_generation_historyGet the user's recent generations made through this connector or the developer API — images by default, or pass type "video", "music", or "sound_effect".No findings

    Why it is in this group

    • The name "get_generation_history" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
    • destructiveHint: false
  • list_charactersUse this to see the characters the user can cast in images and videos: the free BudgetPixel AI influencers (memorable personas with a consistent face, like @barry, @rosa or @fifi, …No findings

    Why it is in this group

    • The name "list_characters" says "list": a word for reading.
    Description, as the server wrote it
    Use this to see the characters the user can cast in images and videos: the free BudgetPixel AI influencers (memorable personas with a consistent face, like @barry, @rosa or @fifi, free for every user) plus the user's own and collected characters. To cast one, write its @handle in the prompt of generate_image or generate_video (e.g. "@barry orders coffee like he owns the cafe") on a model that takes characters. q filters by words (e.g. "fitness"); source narrows to official, mine or collected. For one character's full profile and pictures call get_character; to pick influencers for a brief call recommend_influencers. Free.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
    • destructiveHint: false
  • list_modelsList the AI image, video, music, sound-effect, and 3D models available on BudgetPixel, plus the depth-map tool's sizes, with standard credit prices and capabilities.No findings

    Why it is in this group

    • The name "list_models" says "list": a word for reading.
    Description, as the server wrote it
    List the AI image, video, music, sound-effect, and 3D models available on BudgetPixel, plus the depth-map tool's sizes, 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; 3D models are priced per job (base price plus named options); depth maps (generate_depth_map) are priced per second of the input video by model size (small / base / large), 5-second minimum. Prices shown are standard rates in credits. Video resolutions delivered as H.265 (HEVC) instead of H.264 are marked, because some browsers cannot play H.265.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
    • destructiveHint: false
  • list_my_themesList 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).Reads text others writeNo findings

    Why it is in this group

    • The name "list_my_themes" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe description's first sentence says "list" and "post": it reads posts, which other people can write.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
    • destructiveHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

12 paths in this server alone from private data, through text someone else wrote, to a way out. Denying 1 outbound tool breaks every one.

Reads private data1
Reads files, mail, messages, databases, secrets, calendars or repositories.
Can send data out1
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
deny to break every path
{
  "permissions": {
    "deny": [
      "mcp__budgetpixel__create_social_post"
    ]
  }
}

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Remote posture

What anyone on the internet sees at the remote endpoint: an anonymous initialize and tools/list, and the public OAuth metadata.

Looked at Oct 22, 2026, 14:28 UTC, unchanged since Oct 22, 2026. No credentials were sent and no tool was called. What is looked at.

Reachable
yes
HTTP status of an anonymous initialize
200
tools/list served without credentials
yes
Tools that change things, listed without credentials
14
Protocol version
2025-06-18
WWW-Authenticate on 401
not observed
resource_metadata in WWW-Authenticate
none
RFC 9728 protected resource metadata
https://mcp.budgetpixel.com/.well-known/oauth-protected-resource
Authorization servers
https://mcp.budgetpixel.com
Legacy HTTP+SSE transport
no
Dynamic client registration
yes
Client ID metadata documents
no
  • HighThe whole server

    The endpoint served tools/list without credentials, and the list has 14 tools that change things (11 destructive, 3 write). Whether a call also works without credentials was not tested: tools are never called.

    Matched text

    https://mcp.budgetpixel.com/mcp: tools/list returned 21 tools to an anonymous client, including generate_image (destructive), generate_video (destructive), generate_music (destructive), generate_sound_effect (destructive), generate_3d_model (destructive) and 9 more

    What this check looks for

Install

Pinned to version 1.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http budgetpixel https://mcp.budgetpixel.com/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__budgetpixel__check_generation_status",
      "mcp__budgetpixel__get_credit_balance",
      "mcp__budgetpixel__list_models",
      "mcp__budgetpixel__get_generation_history",
      "mcp__budgetpixel__list_my_themes",
      "mcp__budgetpixel__list_characters",
      "mcp__budgetpixel__get_character"
    ],
    "ask": [
      "mcp__budgetpixel__save_to_assets",
      "mcp__budgetpixel__upload_media",
      "mcp__budgetpixel__recommend_influencers"
    ],
    "deny": [
      "mcp__budgetpixel__generate_image",
      "mcp__budgetpixel__generate_video",
      "mcp__budgetpixel__generate_music",
      "mcp__budgetpixel__generate_sound_effect",
      "mcp__budgetpixel__generate_3d_model",
      "mcp__budgetpixel__upscale_image",
      "mcp__budgetpixel__upscale_video",
      "mcp__budgetpixel__generate_depth_map",
      "mcp__budgetpixel__search_stock_images",
      "mcp__budgetpixel__search_stock_audio",
      "mcp__budgetpixel__create_social_post"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as budgetpixel. Review it before you use it.

Capability tags behind 12 rules
  • mcp__budgetpixel__generate_image untrusted-input
  • mcp__budgetpixel__generate_video untrusted-input
  • mcp__budgetpixel__generate_music untrusted-input
  • mcp__budgetpixel__generate_sound_effect untrusted-input
  • mcp__budgetpixel__generate_3d_model untrusted-input
  • mcp__budgetpixel__upscale_image untrusted-input
  • mcp__budgetpixel__upscale_video untrusted-input
  • mcp__budgetpixel__generate_depth_map untrusted-input
  • mcp__budgetpixel__search_stock_images untrusted-input
  • mcp__budgetpixel__create_social_post untrusted-input, outbound
  • mcp__budgetpixel__list_my_themes untrusted-input
  • mcp__budgetpixel__get_character private-data, untrusted-input