add_to_library
ChatGPTAdd a file to a Brand Library. Briefs, Brand Edits, and Brand Skills can draw on Library images. Video and audio stay stored with the brand for other workflows; those features do not use them yet. Pass exactly one source: - upload_id: a completed upload from create_upload_urls, for local files. - media_id: an existing image, video, or audio ID, such as a generation output. Media from another brand is copied. - url: a public HTTPS URL; a copy is stored. The type is detected from the file: images (JPEG, PNG, WebP, AVIF, SVG; max 10MB), video (MP4, WebM, MOV), and audio (MP3, WAV, OGG, FLAC, AAC, M4A), max 100 MiB. If the brand already holds identical file contents, returns that item with existing: true. URLs are downloaded on every add, so changed contents may return a different item.
apply_brand_edit
ChatGPTActivate a prepared brand edit candidate. This is the operation that changes the active brand to the generated candidate.
check_credits
ChatGPTCheck a workspace's remaining credits and what each credit-priced action costs it. Managed image operations spend these credits, and so do Brand creation, Brand edits, Briefs, and Reviews whenever credit_costs lists a nonzero price for them. Prices can differ between workspaces, so quote credit_costs for this workspace rather than assuming a price. free_brand_creations counts Brand creations that won't spend credits. The balance does not establish the cost or availability of selected-model image, video, audio, or SVG generation. Do not use it to quote a model's price or assume that a model request will deduct these credits. Args: - workspace_id (string, required): Workspace ID from list_workspaces. If the intended workspace is unknown, call list_workspaces first rather than choosing one. Returns: { "workspace_id": string, "workspace_name": string, "balance": number, "unlimited": boolean, "pricing_version": number, "credit_costs": { "brand_creation": number, "brand_edit": number, "brief": number, "review": number, "image_2k": number, "image_4k": number }, "free_brand_creations": number, "subscription_paused"?: true, "message_for_assistant": string } subscription_paused is present (true) when a past_due plan actually blocks access — the last payment failed, so plan credits are on hold until payment is completed. Credits remain spendable.
continue_brand_edit
ChatGPTContinue a pending brand edit by submitting its requested selection, answer, evidence, or decline. Use this only when native MCP input is unavailable or cannot represent the response. This resumes draft preparation without changing the active brand; follow the input channels and limits advertised by the pending interaction.
create_brand_edit
ChatGPTCreate a draft change to an existing brand from instructions, evidence, or exact profile changes. Preparation runs asynchronously and does not change the active brand; exact profile changes may also update related Brand Skill files. When replaces_edit_id is supplied, the existing draft is discarded only after its replacement is ready.
create_brief
ChatGPTA Brief is the brand guidance and files Rainbrand selects for the work you're doing. Use one Brief for closely related work that shares the same goal, audience, creative direction, and source material. Request a new Brief when any of those change meaningfully. Use get_brand for a general overview of the brand. Then call get_brief with the returned brief_id and wait: true, and inspect the completed guidance and assets before using them.
create_file_picker_uploads
ChatGPTReserve temporary upload URLs for files selected in the upload picker. Use the picker’s workspace and each file’s exact byte length. Upload the raw bytes before verifying completion.
create_image_picker_uploads
ChatGPTReserve temporary uploads for the Rainbrand image-picker widget.
create_review
ChatGPTReview one asset against a brand's active Brand Skill for the requested checks. Linked files are downloaded and uploads are copied when the review is created. Each account can have 20 reviews pending or processing at once. Returns immediately. Then call get_review with the returned review_id and wait: true.
create_upload_urls
ChatGPTCreate temporary direct-upload instructions for local files. Rainbrand's MCP tools do not accept file bytes. Use this tool when the client can read local files and make HTTP requests. If the client cannot execute the returned PUT request, use open_upload_ui when MCP Apps is available. Pass workspace_id to stage files in that workspace, or omit it for the personal workspace. If neither the picker nor direct upload is usable, ask for a publicly reachable HTTPS file URL and pass it to the consuming tool. Private attachment URLs from the host client are not supported. Uploads belong to one workspace. For an existing brand, pass its workspace_id from list_brands or get_brand. For a new brand, pass the same workspace_id here and to onboard_brand. Omit it only when both operations use the personal workspace. This tool reserves private temporary storage. It does not create a Library image, attach brand evidence, install a font, or otherwise finish the user's task. Each upload body is the raw file, not a multipart form. Run the returned curl_example after replacing <local-file-path>, then pass upload_id unchanged to onboard_brand, create_brand_edit as source evidence, upload_image, or upload_brand_font. Where a generation model input expects a file URL, pass the upload's temporary url instead. The task is complete only when that consuming tool returns successfully. Uploads expire at expires_at. A completed upload_id remains reusable until expiry. This does not make the consuming operation idempotent—for example, repeating successful brand onboarding can create another brand. If a PUT response is unclear, call the consuming tool; it will use completed bytes or report that they are unavailable. Request new upload instructions after expiry. Each consuming tool applies its own file-type and size limits.
delete_audio
ChatGPTPermanently delete audio files by media ID. Only call after the user explicitly asks; this cannot be undone. IDs that are not audio files are skipped.
delete_brand
ChatGPTDelete a brand from the caller's account. Only call this when the user has explicitly asked to delete the brand. Don't infer it from a vague cleanup request — confirm which brand they mean first (use list_brands to disambiguate by name). Args: - brand_session_id (string): Brand session ID from list_brands Returns: { "brand_session_id": string, "name": string, "workspace_id": string | null, "workspace_name": string }
delete_images
ChatGPTDelete one or more existing managed images or Brand Library images that the user can access. Selected-model generation-job IDs are not supported. The images stop appearing in image list, search, and read results. Re-deleting an already-deleted image is a no-op. Only call this when the user has explicitly asked to delete specific images. For bulk cleanup, first list the candidates with list_images and confirm the exact set with the user. deleted_count may be lower than the number of IDs passed: images the user cannot delete, or that were already deleted, are skipped rather than erroring. Args: - image_ids (string[]): Existing managed image or Brand Library image IDs to delete (1–50). Use IDs from list_images. Do not pass the job IDs returned by generate_image. Returns: { "deleted_count": number, "message_for_assistant"?: string }
delete_videos
ChatGPTPermanently delete videos by media ID. Only call after the user explicitly asks; this cannot be undone. IDs that are not videos are skipped.
discard_brand_edit
ChatGPTEnd a brand edit without changing the active brand. Discarded edits cannot publish a candidate. Cancellation is requested for ongoing preparation, but work already in progress may finish.
generate_audio
ChatGPTSubmit a speech generation request through Rainbrand’s public API. Use a supported audio model returned by list_models and follow its published input schema from get_model. Use relevant brand context to write the text to speak. Inspect the result with get_generation.
generate_image
ChatGPTSubmit an image generation request through Rainbrand’s public API. Use a supported image model returned by list_models and follow its published input schema from get_model. Create or use a task-specific Brief for the brand identified by brand_session_id, wait for completion, and inspect it. For supported models, pass brief_id alongside the model input; Rainbrand supplies guidance and references while the prompt remains authoritative for content and exact copy. Without brief_id, include relevant brand guidance and references in the model input. Retrieve and inspect outputs with get_generation, then request a Review when useful.
generate_video
ChatGPTSubmit a video generation request through Rainbrand’s public API. Use a supported video model returned by list_models and follow its published input schema from get_model. Retrieve and inspect outputs with get_generation.
get_account
ChatGPTShow which Rainbrand account this session is connected to. Returns the email and name of the authenticated user behind the session's API key or login. Use it to confirm whose account is active. Args: (none) Returns: { "email": string, "name": string | null }
get_audio
ChatGPTRead one audio file by media ID, including its stable link.
get_brand
ChatGPTGet a brand's status, profile, guidance, and files. Read any file with view_files. Set wait to true to wait for current brand initialization. A version_id read returns that exact immutable version immediately, even if it is currently the latest. If the result is still analyzing, repeat the same read with wait: true. Use profile.logo_catalog to select among supported logos for the selected version. Follow exact caller selection and relevant Brand Skill guidance before contrasts_best_on visibility hints; use the primary logo as a general fallback. Null means no catalog was published, while an empty items array records no supported logos. Pass the same version_id when refreshing temporary asset URLs to retain the selected version.
get_brand_edit
ChatGPTRead a brand edit's progress, requested input, or prepared candidate. Set wait to true to wait while its status is preparing; if the result is still preparing, repeat the same read with wait: true. On supported MCP clients, this call may accept native input and resume preparation when the question and response can be represented completely. Otherwise use continue_brand_edit. Resuming does not change the active brand.
get_brand_edit_file
ChatGPTRead paginated changed Markdown from a prepared brand edit candidate. Each present side identifies its immutable base or candidate Skill and includes the SHA-256 of the complete file. Follow pagination to read the full content. Available only after a candidate exists.
get_brief
ChatGPTGet a brief's status and, once completed, its guidance and assets. Set wait to true to wait until it completes or fails, up to the timeout. If the result is still pending or processing, repeat the same call with wait: true. After the JSON, each image asset has a resource link to the same URL, followed by the image when it fits the size limit. Only the brief's creator can read it.
get_file_picker_handoff
ChatGPTResolve an upload reference from the file picker’s Continue message to the verified files and their workspace. Use the returned upload_id values with tools that accept them in that workspace; use each file's temporary url where a generation model input expects a file URL. The reference itself is not an upload_id. Resolving files does not create or change a brand or add assets to a Brand Library.
get_generation
ChatGPTRead a generation's status, outputs, or failure details. Completed results include all output files in provider order.
get_image
ChatGPTRead an image from the Brand Library by ID.
get_model
ChatGPTReturn the published input schema for a supported model in Rainbrand’s public API. Follow its field names, limits, and accepted reference formats when constructing generation input.
get_review
ChatGPTGet a review's status and, once completed, a verdict, note, and evidence pictures for each requested check. Set wait to true to wait until it completes or fails, up to the timeout. If the result is still pending or processing, repeat the same call with wait: true. After the JSON, each evidence picture has a resource link to the same URL, followed by the picture when it fits the size limit. Only the review's creator can read it.
get_video
ChatGPTRead one video file by media ID, including its stable link.
list_audio
ChatGPTList audio files across your brands, newest first: generated outputs and files added to a Brand Library. Each has a media ID and a stable link.
list_brand_versions
ChatGPTList saved versions of a brand, including which version is latest.
list_brands
ChatGPTList brands you can access, including their Brand session IDs, names, statuses, and workspaces.
list_generations
ChatGPTList your past generations, newest first, with each output's media ID and link. Outputs deleted since stay listed with available false. Use get_generation for a generation that is still running.
list_images
ChatGPTList Brand Library images with pagination and filters, or read known image_ids together. For images that are pending or generating: image_url is absent.
list_library
ChatGPTList the files in a Brand Library, most recently added first. Each item has a media ID, a stable link, and a description when one exists.
list_models
ChatGPTList supported generation models in Rainbrand’s public API. Filter by output type or search query.
list_videos
ChatGPTList videos across your brands, newest first: generated outputs and files added to a Brand Library. Each has a media ID and a stable link.
list_workspaces
ChatGPTList workspaces the caller can access. The personal workspace (is_personal: true) is listed first. Pass a workspace_id from this list to target a specific workspace. check_credits requires one; create tools such as onboard_brand may default to the personal workspace when their own docs say workspace_id is optional. Args: (none) Returns: { "workspaces": [ { "workspace_id": string | null, "workspace_name": string, "is_personal": boolean, "pricing_version": number } ] } The caller's personal workspace (auto-created at signup) is listed first and tagged "is_personal": true.
onboard_brand
ChatGPTCreate or onboard a brand from user-selected website, Instagram, or file sources. This starts asynchronous Brand Skill creation in the selected workspace and stores supplied files in private brand storage. If a website or Instagram source matches an existing brand, the tool returns that match instead unless the user explicitly allows a duplicate.
open_upload_ui
ChatGPTOpen the shared upload picker in an MCP Apps client. Pass exactly one destination: brand_session_id to save images directly to an existing Brand Library, or workspace_id to stage files for another tool. Use workspace_id: null for the personal workspace. With brand_session_id, the widget uploads and saves up to 10 PNG, JPEG, WebP, or AVIF images per batch, up to 10 MiB each. Read the widget's model context to collect the final Library image IDs before using them in another tool. The widget completes the Library upload; there is no Continue step. With workspace_id, the widget stages local files, including before a Brand exists. It accepts up to 30 files, 100 MiB per file, and 256 MiB combined. Temporary uploads expire after two hours, and the consuming tool may have stricter file requirements. Wait for the user to choose Continue and send an upload reference. Resolve that reference with get_file_picker_handoff. Use its verified upload IDs with tools that accept them in the returned workspace; use each file's temporary url where a generation model input expects a file URL. The reference itself is not an upload ID. Partial uploads may proceed only after explicit Continue with the successful files. Cancellation or zero successful uploads must not trigger onboarding. Staging alone creates no brand or asset. If the picker is unavailable and the client can read local files and make HTTP requests, call create_upload_urls and PUT the raw bytes using the returned instructions. Then use the upload IDs with tools that accept them in the same workspace, and each file's temporary url where a generation model input expects a file URL; use upload_image to save Library images. Otherwise, ask for publicly reachable HTTPS file URLs. Never use private host attachment URLs. Does NOT change the brand's logo. To use an uploaded image as a logo, add it to the Brand Library, then use its image_id in an exact profile change with create_brand_edit. An SVG or GIF logo must already exist in the Brand Library before it can be assigned. Public logo replacement is not supported for older Visual DNA brands.
publish_file_picker_handoff
ChatGPTVerify the selected uploads and save them under a short upload reference for the picker’s explicit Continue action. The agent resolves that reference with get_file_picker_handoff to retrieve the exact upload IDs and workspace. Publishing the reference does not create or change a brand or add assets to a Brand Library.
remove_from_library
ChatGPTTake a file out of a Brand Library without deleting it. Future Briefs, Brand Edits, and Brand Skill versions stop using it; published Brand Skills keep working. Only call when the user asks.
search_docs
ChatGPTSearch public Rainbrand documentation for API integration and MCP usage. Returns matching content, page URLs, and metadata. Follow message_for_assistant to fetch relevant full pages as Markdown.
search_user_images
ChatGPTFind Brand Library images by visual meaning. Search for the pictured subject. In select mode, wait for the user's choice or skip; use display mode only when the choice is delegated. Empty results mean no relevant matches were found.
submit_feedback
ChatGPTReport observations that could help improve Rainbrand: bugs or errors, surprises, limitations, workflow friction, misleading documentation, missing capabilities, or disappointing or degraded results. You do not need to establish the root cause when the observation concerns Rainbrand. Report each distinct issue once. Do not report failures wholly unrelated to Rainbrand. Leave out credentials, personal or customer data, transcripts, source files, private prompts, and unrelated task context. Reports are internal product feedback and do not open a support conversation. Continue the original task whether submission succeeds or fails.
upload_brand_font
ChatGPTStage a single-use custom font for a brand edit. Returns font_asset_id, family, format, weight, variable, and expires_at. The asset expires after 24 hours, and the consuming edit must finish preparing before expires_at. The asset is deleted when the candidate is stored, preparation fails, or the work becomes stale. Upload it again for a later edit. Pass either a public TTF, OTF, WOFF, or WOFF2 URL, or a completed temporary upload. For a local file, first call create_upload_urls, PUT the raw bytes as directed, and pass the resulting upload_id here. Staging does not change the active brand. To use the uploaded font, pass its font_asset_id and exact returned family in an exact profile typography change with create_brand_edit. Family matching is case-sensitive after trimming. Pass exactly one of font_url or upload_id. Args: - brand_session_id (string): Brand session ID from list_brands. - font_url (string, optional): Public font URL, max 5MB. - upload_id (string, optional): Completed temporary upload ID.
upload_image
ChatGPTSave one image in a Brand Library from either a public URL or a completed temporary upload. The server validates the image, then reuses an exact match in the brand or stores a new one. If your client can read the local file and make HTTP requests, first call create_upload_urls, PUT the raw bytes as directed, and pass the resulting upload_id here. In an MCP Apps client, call open_upload_ui with only brand_session_id instead; its widget completes the Library upload and returns final image IDs in widget context. Read that context before using the images. Pass exactly one of image_url or upload_id. Args: - image_url (string, optional): Public PNG, JPEG, WebP, or AVIF URL. - upload_id (string, optional): Completed temporary upload ID. - brand_session_id (string): Brand session ID that owns the Library image. Returns the final image ID for generation references, edit references, edit subjects, or a Brand Skill primary-logo update. Supported formats: PNG, JPEG, WebP, AVIF. Max file size: 10MB.
verify_file_picker_uploads
ChatGPTVerify that the selected workspace’s temporary uploads are complete and unexpired before returning them to the agent. Verification does not create or change a brand or add files to a Brand Library.
view_files
ChatGPTView brand text, images, and font files. Viewing a font file also returns its font specimen, when one exists.