Generate, edit, enhance, and transform images through Bria's commercially-safe visual AI models.
Hermes is Nous Research's command-line agent. MCP servers are declared in its YAML config and reloaded without a restart.
This guide connects Bria MCP to Hermes through MewCP, so Hermes can use Bria MCP's 19 tools, like remove_background, blur_background and crop_out_foreground, without your Bria MCP credentials ever reaching the app.
Bria MCP signs in through managed OAuth. MewCP stores the token encrypted, refreshes it before it expires and injects it only at call time. Your agent never holds it, so it can never leak it.
More apps
TypeSafe's Jev model for typed decisions — ask yes/no, multiple-choice or rubric-score questions about a block of state and get calibrated probabilities back instead of prose. Built for classification, routing and scoring steps inside a workflow
Turn your AI agent into a creative studio The world's best image, video, audio and 3D models, inside the AI assistant you already use.
Access Google's Gemini models for text generation, reasoning, coding, multimodal analysis and AI-powered workflows. Process text, images and structured data through advanced AI capabilities.
Give AI coding agents access to a curated library of real-world website designs, screenshots, design systems, and reusable UI components. Search visual references, find similar designs, analyze layouts, extract colors and typography, compare websites, and retrieve copy-ready JSX components for building better interfaces
Other clients
Bria MCP works the same way in every client below. Pick yours for its own guide.
Free to start.
Scope access to the exact Bria MCP tools and accounts you allow, work and personal side by side. Anything outside that scope is refused at call time, even when the model asks for it.
Each call is logged: what ran, on which account, and whether it worked. Failures come back structured, so the agent knows whether to retry instead of guessing.
Every app sits behind one secure MCP URL, and there is no server for you to deploy or keep running. Add an integration in the dashboard and it is live on the next call, with no config to change and no new credentials to wire up. Tools load only when a task needs them, so your agent stays fast and focused however many apps you connect.
Edit config.yaml in your Hermes config directory (~/.hermes).
Put this under the top-level "mcp_servers:" key.
Run /reload-mcp in Hermes, or start a fresh session. Sign in when the browser window opens.
Start a new chat and ask: "List the tools you can use from MewCP." You should see your connected apps.
Remove background from an image, optionally guided by a prompt naming what to keep or drop. Args: image: Image URL (preferred) or base64 data. Local file paths work only when the server runs on the same machine. prompt: Optional plain-language text that refines what is kept, e.g. "the person with the mat", "without the dog", "only the chair". It adjusts the default cut (adds, drops, or narrows within the main subject) and keeps the original pixels; it does not perform a different edit. Slower than the default call. If guided removal is unavailable for the organization, the tool returns an error instead of a result. Omit it or leave it blank for the default behavior. visual_input_content_moderation: (optional boolean, API default=False; sent only when set) If True, the input image is checked for unsafe content and the request fails if it does not pass. visual_output_content_moderation: (optional boolean, API default=False; sent only when set) If True, the result is checked for unsafe content and the request fails if it does not pass. Returns: A preview image plus a URL for the full-quality result.
Apply blur effect to an image background. Args: image: Image URL (preferred) or base64 data. Local file paths work only when the server runs on the same machine. scale: Blur intensity (1-5, default: 5) visual_input_content_moderation: (optional boolean, API default=False; sent only when set) If True, the input image is checked for unsafe content and the request fails if it does not pass. visual_output_content_moderation: (optional boolean, API default=False; sent only when set) If True, the result is checked for unsafe content and the request fails if it does not pass. Returns: A preview image plus a URL for the full-quality result.
remove the background from an image and crop tightly around the foreground or remaining region of interest. Supports both images with and without a background. Args: image: Image URL (preferred) or base64 data. Local file paths work only when the server runs on the same machine. padding: Optional Integer, of how much padding to add to the region of interest. visual_input_content_moderation: (optional boolean, API default=False; sent only when set) If True, the input image is checked for unsafe content and the request fails if it does not pass. visual_output_content_moderation: (optional boolean, API default=False; sent only when set) If True, the result is checked for unsafe content and the request fails if it does not pass. Returns: A preview image plus a URL for the full-quality result.
Upscale image by 2x or 4x. Args: image: Image URL (preferred) or base64 data. Local file paths work only when the server runs on the same machine. scale: Upscaling factor (2 or 4, default: 2) visual_input_content_moderation: (optional boolean, API default=False; sent only when set) If True, the input image is checked for unsafe content and the request fails if it does not pass. visual_output_content_moderation: (optional boolean, API default=False; sent only when set) If True, the result is checked for unsafe content and the request fails if it does not pass. Returns: A preview image plus a URL for the full-quality result.
Expand an image or change its aspect ratio using generative AI. This function can expand images, change aspect ratios, or generate multiple aspect ratios. Use this tool when users want to change aspect ratio, convert to specific aspect ratios like 1:1, 16:9, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, or when they mention "aspect ratio" in their request. Args: image: Image URL (preferred) or base64 data. Local file paths work only when the server runs on the same machine. aspect_ratio: str | float. Automatically expands or crops the input image to the specified aspect ratio. Can be one of ["1:1", "4:3", "16:9", "3:2", "2:3", "9:16", "3:4", "4:5", "5:4"] or a float number between 0.5 and 3.0. preserve_alpha: (boolean, default=False). Controls whether the alpha channel values from the input image are retained in the output. content_moderation: (boolean, default=False) Legacy flag, kept for existing callers. The current API ignores it; use visual_input_content_moderation / visual_output_content_moderation instead. prompt: Optional English description of what to generate in the expanded area. Omit it (or leave it empty) and the service writes one from the input image. prompt_content_moderation: (optional boolean, API default=True; sent only when set) If True, the prompt is checked for unsafe content before processing and the request fails if it does not pass. visual_input_content_moderation: (optional boolean, API default=False; sent only when set) If True, the input image is checked for unsafe content and the request fails if it does not pass. visual_output_content_moderation: (optional boolean, API default=False; sent only when set) If True, the result is checked for unsafe content and the request fails if it does not pass. Returns: A preview image plus a URL for the full-quality result.
Generate or replace an image background with a generated scene. Must have either prompt or reference_images! Args: image: Image URL (preferred) or base64 data. Local file paths work only when the server runs on the same machine. prompt: str. Optional Text description of the desired background reference_images: List of URL of reference images for the background fast: (boolean, default=False). Use fast mode for better speed/quality balance prompt_content_moderation: (optional boolean, API default=True; sent only when set) If True, the prompt is checked for unsafe content before processing and the request fails if it does not pass. visual_input_content_moderation: (optional boolean, API default=False; sent only when set) If True, the input image and reference images are checked for unsafe content and the request fails if they do not pass. visual_output_content_moderation: (optional boolean, API default=False; sent only when set) If True, the result is checked for unsafe content and the request fails if it does not pass. Returns: A preview image plus a URL for the full-quality result.
Erase the foreground object from a provided image, while generating the area behind it. Args: image: Image URL (preferred) or base64 data. Local file paths work only when the server runs on the same machine. visual_input_content_moderation: (optional boolean, API default=False; sent only when set) If True, the input image is checked for unsafe content and the request fails if it does not pass. visual_output_content_moderation: (optional boolean, API default=False; sent only when set) If True, the result is checked for unsafe content and the request fails if it does not pass. Returns: A preview image plus a URL for the full-quality result.
Erase the object a mask covers and fill the area so it matches its surroundings. composite false (default, context aware) also removes what the object casts outside the mask, such as its shadow or reflection, so mask only the object. composite true (pixel perfect) keeps everything outside the mask as it was, for retouching where nothing else may change. Args: image: Image URL (preferred) or base64 data. Local file paths work only when the server runs on the same machine. mask: Black-and-white mask for image, where white marks what to erase. Mask URL (preferred) or base64 data. composite: False (default) for context aware, True for pixel perfect. visual_input_content_moderation: (optional boolean, API default=False; sent only when set) If True, the input image (not the mask) is checked for unsafe content and the request fails if it does not pass. visual_output_content_moderation: (optional boolean, API default=False; sent only when set) If True, the result is checked for unsafe content and the request fails if it does not pass. Returns: A preview image plus a URL for the full-quality result.
Enhance an image by generating richer details, sharper textures, and higher clarity, optionally upscaling. Args: image: Image URL (preferred) or base64 data. Local file paths work only when the server runs on the same machine. preserve_alpha: (boolean, default=True). Controls whether the alpha channel values from the input image are retained in the output. content_moderation: (boolean, default=False) Legacy flag, kept for existing callers. The current API ignores it; use visual_input_content_moderation / visual_output_content_moderation instead. visual_input_content_moderation: (optional boolean, API default=False; sent only when set) If True, the input image is checked for unsafe content and the request fails if it does not pass. visual_output_content_moderation: (optional boolean, API default=False; sent only when set) If True, the result is checked for unsafe content and the request fails if it does not pass. Returns: A preview image plus a URL for the full-quality result.
Edit an existing image with a natural language instruction, optionally combining up to 4 images in total (the one being edited plus references). Use this tool whenever the user wants to change something in an image they already have - theirs, or one generated earlier in the conversation - and keep the rest of it intact: "make the jacket red", "remove the person on the left", "put this mug on a marble counter", "give her the hairstyle from this other photo". It is also the tool for combining several images: taking the subject from one and a style, background, or object from another. Not for garments or held products. Putting clothes on a person is virtual_tryon; putting a product in someone's hands is product_holding - both preserve the person's identity and pose more reliably than a general instruction here. Referring to the images (important). The images list is ordered, and that order is how the instruction addresses them: the first image is "image 1", the second "image 2", and so on. Write the instruction as plain prose using those words, for example: images = ["<living room image>", "<painting image>"] instruction = "hang the painting from image 2 on the wall in image 1" With a single image there is nothing to disambiguate, so just describe the change ("change the mug color to red"). Put the image being edited first and the references after it. Args: images: 1 to 4 images, in the order the instruction refers to them. Each is an image URL (preferred) or base64 data. Local file paths work only when the server runs on the same machine. instruction: What to change, in natural language. Reference extra images by position ("image 2", "image 3"). Describe the desired result, not the mechanics. seed: Optional random seed. Pass the same seed to reproduce a previous result. aspect_ratio: Optional output aspect ratio, e.g. "1:1", "4:3", "16:9", "3:4", "9:16". Only honored with 2 or more images; with a single image the output follows that image and the response carries a warning saying so. Omit it to follow the first image. prompt_content_moderation: (optional boolean, API default=False; sent only when set) If True, the instruction is checked for unsafe content before processing and the request fails if it does not pass. visual_input_content_moderation: (optional boolean, API default=False; sent only when set) If True, the input images are checked for unsafe content and the request fails if they do not pass. visual_output_content_moderation: (optional boolean, API default=False; sent only when set) If True, the result is checked for unsafe content and the request fails if it does not pass. Returns: CallToolResult containing the edited image, the structured prompt behind it when the service reports one, and a URL for the full-quality result. An edit takes tens of seconds.
Put a product in someone's hands. No prompt is needed - a person photo and one to three product photos are a complete request. Use this tool when the user wants a person shown holding or carrying a product. Packaging, a second angle, or a companion item can be composed from multiple product references in one call. The person's identity, pose, and background are preserved, and the output keeps person_image's aspect ratio unless you set aspect_ratio; the product keeps its exact geometry, colors, branding, and label text. Args: person_image: Photo of the person to edit. Image URL (preferred) or base64 data. Local file paths work only when the server runs on the same machine. product_images: 1 to 3 images of the product - packaging, a second angle, or a companion item. Each is an image URL (preferred) or base64 data; local file paths work only when the server runs on the same machine. instruction: Optional extra direction for this shot, e.g. "Replace the paper coffee cup in her right hand with the can, logo facing the camera." Send only the detail to steer, not a full prompt - the tool works without it. aspect_ratio: Optional output aspect ratio, e.g. "1:1", "4:3", "16:9", "3:4", "9:16". Defaults to the aspect ratio of person_image. seed: Optional random seed. Pass the same seed to reproduce a previous result. visual_output_content_moderation: (optional boolean, API default=False; sent only when set) If True, the result is checked for unsafe content and the request fails if it does not pass. Returns: CallToolResult containing the resulting image, the structured prompt behind it when the service reports one, and a URL for the full-quality result. This takes tens of seconds.
Put garments on a person. No prompt is needed - a person photo and one to three garment photos are a complete request. Use this tool when the user wants a person shown wearing one or more garments or accessories. Send a full outfit together to change several items in one call instead of stacking edits. Garment fidelity is preserved: print scale, stripe alignment across seams, collar and closure type, and how a garment reads from behind. The person's identity, pose, and background are preserved, and the output keeps person_image's aspect ratio unless you set aspect_ratio. Args: person_image: Photo of the person to edit. Image URL (preferred) or base64 data. Local file paths work only when the server runs on the same machine. garment_images: 1 to 3 garment or accessory images to put on the person. Each is an image URL (preferred) or base64 data; local file paths work only when the server runs on the same machine. instruction: Optional extra direction for the styling, e.g. "He wears the navy blazer over the white t-shirt he already has." Send only the detail to steer, not a full prompt - the tool works without it. aspect_ratio: Optional output aspect ratio, e.g. "1:1", "4:3", "16:9", "3:4", "9:16". Defaults to the aspect ratio of person_image. seed: Optional random seed. Pass the same seed to reproduce a previous result. visual_output_content_moderation: (optional boolean, API default=False; sent only when set) If True, the result is checked for unsafe content and the request fails if it does not pass. Returns: CallToolResult containing the resulting image, the structured prompt behind it when the service reports one, and a URL for the full-quality result. This takes tens of seconds.
Generate a new image using Bria's Fibo 2 model, from a text prompt or from an existing image as inspiration. Fibo 2 is Bria's advanced image generation model, with precise control over the output. Every call produces a new image: given a prompt it generates from scratch, given an image it takes that image as inspiration for a new one, and given a previous generation's structured_prompt it re-imagines that same scene - a different setting, lighting, styling or composition. This tool always re-renders the whole image. Any request to change one thing and keep the rest intact - "make the mug red", "remove the sign", "put this product on that counter" - belongs to the edit_image tool instead, on generated and user-supplied images alike, as does anything that combines two images. Args: image: Image URL (preferred) or base64 data. Local file paths work only when the server runs on the same machine. Used as inspiration for a new image, not as something to edit. Optional. prompt: Text description of the desired output image. Guides the generation process. negative_prompt: Text description of what to avoid in the generated image. structured_prompt: Dictionary containing structured prompt parameters for more precise control. Can include elements like style, composition, lighting, etc. Feed a previous generation's structured prompt back in to re-imagine that scene. aspect_ratio: Desired aspect ratio for the generated image. Common values include: "1:1", "16:9", "9:16", "4:3", "3:4", etc. seed: Random seed for reproducible results (default 42). model_version: The Fibo model variant to use. Options: - "FIBO": Standard model, Fibo 2 (default) - "FIBO_LITE": Lightweight version for faster generation style: Photographic look applied to a text-to-image generation, for when the user wants one of these looks: - "kodak_film": Kodak film - "hard_flash": Hard flash - "hazy_dreamy": Hazy dreamy - "rough_realism": Rough realism Text-to-image on "FIBO" only: the API rejects it together with image, structured_prompt or "FIBO_LITE". prompt_content_moderation: (optional boolean, API default=False; sent only when set) If True, the prompt is checked for unsafe content before processing and the request fails if it does not pass. visual_input_content_moderation: (optional boolean, API default=False; sent only when set) If True, the input image is checked for unsafe content and the request fails if it does not pass. visual_output_content_moderation: (optional boolean, API default=False; sent only when set) If True, the generated image is checked for unsafe content and the request fails if it does not pass. Returns: CallToolResult containing: - TextContent: URL for the full-quality result - TextContent: The structured prompt used to build the image. Feed it back in to re-imagine the scene - ImageContent: A JPEG preview of the generated image
Turn a finished, flat ad image back into editable layers. Separates a completed creative into background, imagery, logo, headline, body copy and CTA. Image layers come back as their own downloadable assets; text layers keep their copy and typography, so the wording can be changed. Use it to recover a lost design file, to make a shipped ad editable again, or to resize or translate one. A run takes 2-3 minutes. Ads over 2048px per side require an enterprise plan. Args: image: Ad image URL (preferred) or base64 data. Local file paths work only when the server runs on the same machine. prompt: Optional guidance for something the pixels alone do not settle, e.g. "the roundel top-right is the brand logo, not part of the product". effort: How much reasoning to spend reading the ad. One of "low", "medium", or "high". Defaults to "medium". Returns: CallToolResult with the canvas size, one entry per layer (id, role, position, text or asset URL), and the URL of the full layer manifest.
Resize a finished, flat ad image into one or more target sizes. Bria turns the ad into editable layers and lays each size out again with its own layout engine, so the headline is re-set rather than stretched and the logo and product stay in frame. Every result comes back as a URL - use this when the ad is already done and just needs to exist at other dimensions (a different placement, platform, or aspect ratio), not when it still needs editing. A call takes a few minutes. Only a flat raster image is a valid source - PNG or JPG, not a PSD or a Figma file. Use ad_to_layers first if the source needs to become editable rather than just resized. Sources over 2048px per dimension require an enterprise plan; on other plans the source is downscaled to fit before resizing, and the response says so. Args: image: Ad image URL (preferred) or base64 data. Local file paths work only when the server runs on the same machine. formats: Up to 10 target sizes. Each needs a name (echoed back on its result) and a width/height in pixels. prompt: Optional guidance for how the ad should be adapted to each size, e.g. "keep the logo in the top-left corner". Returns: CallToolResult with one entry per target (name, size, status, its URL or error, and the route that produced it as `strategy`, informational: the API produces every size through the layered route, `delayer_dispatch`) and a note if the source had to be downscaled first. Open a target's URL to view or download the image; no image bytes are inlined.
Remove background from a video while maintaining the foreground subject. Args: video: Video URL (preferred) or base64 data. URLs provide best performance. background_color: Solid colour to fill the removed background with, or "Transparent" to keep an alpha channel. One of: Transparent, Black, White, Gray, Red, Green, Blue, Yellow, Cyan, Magenta, Orange (hex values are not supported). Defaults to "Black". "Transparent" only works if the API's output format supports alpha; otherwise the background falls back to "Black". Returns: CallToolResult containing the video URL with removed background.
Increase the resolution of a video by a specified factor. Args: video: Video URL (preferred) or base64 data. URLs provide best performance. desired_increase: Factor by which to increase the video resolution. Allowed values: 2 or 4. Defaults to 2. Returns: CallToolResult containing the video URL with increased resolution.
Mask a video by a prompt (will trim video to match proper length). Args: video: Video URL (preferred) or base64 data. URLs provide best performance. prompt: Text prompt to guide the masking process. Returns: CallToolResult containing the video URL with masked content.
Erase an object from a video based on a mask video or given prompt. Args: video: Video URL (preferred) or base64 data. URLs provide best performance. mask_video: Video URL (preferred) or base64 data. URLs provide best performance. prompt: Text prompt to guide the masking process. Returns: CallToolResult containing the video URL with masked content.