MCP App Store
by KeenEthics

Overview

Krea helps users generate and enhance images, create video and 3D assets, run shared node apps, and manage private files, moodboards, and styles through ChatGPT.

Tools

ad_studio_add_product

ChatGPT
Add a product to an Ad Studio brand kit: a name, at least one product photo URL, and optionally a description, price, page URL, selling points and audience. A kit holds up to 20 products. For media input URL fields, pass a Krea asset URL, a publicly accessible external URL, or an uploaded asset URL returned by get_upload_url.

ad_studio_create_brand_kit

ChatGPT
Create an Ad Studio brand kit from fields you supply: a name, and optionally a logo URL, colors, fonts, description, tone, audience, selling points and products (each with a name and at least one image). To build a kit from a website instead, use ad_studio_research_brand_kit. For media input URL fields, pass a Krea asset URL, a publicly accessible external URL, or an uploaded asset URL returned by get_upload_url.

ad_studio_delete_brand_kit

ChatGPT
Delete an Ad Studio brand kit and its products. Ads already generated are kept. Only delete kits that you created in this session or that the user has explicitly asked you to delete.

ad_studio_delete_product

ChatGPT
Remove a product from an Ad Studio brand kit. Only delete products the user has explicitly asked you to remove.

ad_studio_get_brand_kit

ChatGPT
Get an Ad Studio brand kit: its name, logo, colors, fonts, tone, audience and other brand fields, and its products.

ad_studio_list_brand_kits

ChatGPT
List the Ad Studio brand kits in the current workspace, most recently updated first. Use a kit ID with ad_studio_get_brand_kit for its full details and products, or with ad_studio_generate_ad.

ad_studio_list_products

ChatGPT
List the products in an Ad Studio brand kit, with each product's ID.

ad_studio_research_brand_kit

ChatGPT
Create an Ad Studio brand kit by researching a brand's website: its logo, colors, fonts, voice and first products. Returns the new brand_kit_id and a job right away; research takes a few minutes. The attached widget shows the research as it lands and polls get_job itself, so poll get_job only when the host does not render the widget or the user asks for a status update. Once the job completes, read the kit with ad_studio_get_brand_kit, or call ad_studio_select_products as the first tool call of your next reply, with no other tool call before it in that turn, to let the user choose the products to make ads for. If the job fails, no kit is created.

ad_studio_select_products

ChatGPT
Show the user a picker of an Ad Studio brand kit's products, so they choose which products to make ads for and how many ads each. Make this the first tool call of the assistant turn, with no other tool call before it in that turn, so ChatGPT mobile can render the widget. Call this before generating when the user has not said which products to advertise. The user's choice arrives as a user message listing product IDs with an ad count for each; then call ad_studio_generate_ad once per ad. After calling this tool, stop and wait for the user to choose.

ad_studio_update_brand_kit

ChatGPT
Change an Ad Studio brand kit's fields. Only the fields you pass change. Manage products with the ad_studio_*_product tools.

ad_studio_update_product

ChatGPT
Change a product in an Ad Studio brand kit. Only the fields you pass change. For media input URL fields, pass a Krea asset URL, a publicly accessible external URL, or an uploaded asset URL returned by get_upload_url.

cancel_job

ChatGPT
Delete a Krea generation job and attempt to cancel it first if it has not reached a terminal status.

create_api_token

ChatGPT
Create a personal or service API token in the authenticated workspace. Personal API tokens are scoped to your user and will create assets on your account. The token secret is returned only on creation: store it securely and never include it in URLs or logs.

create_folders

ChatGPT
Batch create folders in Krea Files. Each folder lands under parent_uri, or at the context root of the given scope when parent_uri is omitted. Use the returned "folder:<uuid>" URI as parent_uri in write_files or in later create_folders calls to build nested paths. Idempotent: when a live folder with the same name already exists under the parent, the item returns that folder with existing: true.

create_moodboard

ChatGPT
Create a moodboard from a set of images and immediately start analyzing it. Returns a job ID right away; poll get_job until the analysis job completes before using the moodboard (its ID is returned as moodboard_id). For media input URL fields, pass a Krea asset URL, a publicly accessible external URL, or an uploaded asset URL returned by get_upload_url.

create_style

ChatGPT
Train a new style/LoRA from a set of images. Returns a job ID right away; poll get_job until the training job completes before using the style. For media input URL fields, pass a Krea asset URL, a publicly accessible external URL, or an uploaded asset URL returned by get_upload_url.

delete_moodboard

ChatGPT
Delete a moodboard owned by the current user. Only delete moodboards that you created in this session or that the user has explicitly given you permission to delete; never delete a moodboard the user has not authorized.

delete_style

ChatGPT
Delete a style/LoRA owned by the current user. Only delete styles that you created in this session or that the user has explicitly given you permission to delete; never delete a style the user has not authorized.

enhance_image

ChatGPT
Submit an image enhancement request through the Krea public API. For media input URL fields, pass a Krea asset URL, a publicly accessible external URL, or an uploaded asset URL returned by get_upload_url. Use async mode by default so the MCP Apps UI can show progress. The attached widget polls get_job automatically, so do not manually call get_job after submitting unless the user explicitly asks for a text status update or the host does not render the widget. Use sync mode only when the user explicitly asks to wait for the final result in the tool response, because long generations can time out. If generation fails because the user has insufficient balance, tell the user to manage their plan and add credits at krea.ai before trying again. The result widget renders most reliably when the generation tool is the first tool call of the assistant turn, so make preparatory calls such as get_model_schema, get_upload_url, get_prompting_guide, and list_models in an earlier turn or before starting the turn that generates, when the client allows.

execute_node_app

ChatGPT
Submit a node app execution request through the Krea public API. For media input URL fields, pass a Krea asset URL, a publicly accessible external URL, or an uploaded asset URL returned by get_upload_url. Use async mode by default so the MCP Apps UI can show progress. The attached widget polls get_job automatically, so do not manually call get_job after submitting unless the user explicitly asks for a text status update or the host does not render the widget. Use sync mode only when the user explicitly asks to wait for the final result in the tool response, because long generations can time out. If generation fails because the user has insufficient balance, tell the user to manage their plan and add credits at krea.ai before trying again. The result widget renders most reliably when the generation tool is the first tool call of the assistant turn, so make preparatory calls such as get_model_schema, get_upload_url, get_prompting_guide, and list_models in an earlier turn or before starting the turn that generates, when the client allows. MCP execution supports public node apps and node apps shared with the current workspace; private user-scoped node apps cannot be executed.

generate_3d

ChatGPT
Submit a 3D object generation request through the Krea public API. For media input URL fields, pass a Krea asset URL, a publicly accessible external URL, or an uploaded asset URL returned by get_upload_url. Use async mode by default so the MCP Apps UI can show progress. The attached widget polls get_job automatically, so do not manually call get_job after submitting unless the user explicitly asks for a text status update or the host does not render the widget. Use sync mode only when the user explicitly asks to wait for the final result in the tool response, because long generations can time out. If generation fails because the user has insufficient balance, tell the user to manage their plan and add credits at krea.ai before trying again. The result widget renders most reliably when the generation tool is the first tool call of the assistant turn, so make preparatory calls such as get_model_schema, get_upload_url, get_prompting_guide, and list_models in an earlier turn or before starting the turn that generates, when the client allows.

generate_audio

ChatGPT
Submit an audio generation request through the Krea public API — text-to-speech, dialogue, and music with models like Seed Audio (bytedance/seed-audio-1.0) and ElevenLabs (elevenlabs/tts, elevenlabs/music, elevenlabs/music-v2, elevenlabs/music-v2.5 — set force_instrumental: true for instrumental-only tracks). For media input URL fields, pass a Krea asset URL, a publicly accessible external URL, or an uploaded asset URL returned by get_upload_url. Use async mode by default so the MCP Apps UI can show progress. The attached widget polls get_job automatically, so do not manually call get_job after submitting unless the user explicitly asks for a text status update or the host does not render the widget. Use sync mode only when the user explicitly asks to wait for the final result in the tool response, because long generations can time out. If generation fails because the user has insufficient balance, tell the user to manage their plan and add credits at krea.ai before trying again. The result widget renders most reliably when the generation tool is the first tool call of the assistant turn, so make preparatory calls such as get_model_schema, get_upload_url, get_prompting_guide, and list_models in an earlier turn or before starting the turn that generates, when the client allows.

generate_image

ChatGPT
Submit an image generation request through the Krea public API. For media input URL fields, pass a Krea asset URL, a publicly accessible external URL, or an uploaded asset URL returned by get_upload_url. Use async mode by default so the MCP Apps UI can show progress. The attached widget polls get_job automatically, so do not manually call get_job after submitting unless the user explicitly asks for a text status update or the host does not render the widget. Use sync mode only when the user explicitly asks to wait for the final result in the tool response, because long generations can time out. If generation fails because the user has insufficient balance, tell the user to manage their plan and add credits at krea.ai before trying again. The result widget renders most reliably when the generation tool is the first tool call of the assistant turn, so make preparatory calls such as get_model_schema, get_upload_url, get_prompting_guide, and list_models in an earlier turn or before starting the turn that generates, when the client allows.

generate_video

ChatGPT
Submit a video generation request through the Krea public API. For Seedance 2 and Kling 3.0 models, fetch get_prompting_guide before the turn that calls generate_video when possible and follow it when writing the prompt; when making a video ad or product commercial, also fetch the "video-ad-formats" guide. For media input URL fields, pass a Krea asset URL, a publicly accessible external URL, or an uploaded asset URL returned by get_upload_url. Use async mode by default so the MCP Apps UI can show progress. The attached widget polls get_job automatically, so do not manually call get_job after submitting unless the user explicitly asks for a text status update or the host does not render the widget. Use sync mode only when the user explicitly asks to wait for the final result in the tool response, because long generations can time out. If generation fails because the user has insufficient balance, tell the user to manage their plan and add credits at krea.ai before trying again. The result widget renders most reliably when the generation tool is the first tool call of the assistant turn, so make preparatory calls such as get_model_schema, get_upload_url, get_prompting_guide, and list_models in an earlier turn or before starting the turn that generates, when the client allows.

get_agent_session

ChatGPT
Read the current state of a Krea Agent session without waiting: status, latest assistant text, and the deliverables it presented. Sessions are real Krea Agent sessions, visible at the returned url and billed to the caller's workspace. The agent runs unattended: it never asks the caller questions, and cost and permission prompts are approved automatically. Use this tool to check back on a turn you started earlier; use wait_for_agent_session when you need to block and wait for its result. Only call this tool when the user explicitly asks to use the Krea Agent; never call it on your own initiative.

get_job

ChatGPT
Fetch the latest status for a previously submitted Krea generation job. This tool is primarily used by the MCP Apps widget to poll automatically.

get_model_schema

ChatGPT
Return the full public API input/output schema for a supported Krea generation model. When the result includes promptingGuide, follow it when writing the prompt and choosing input fields.

get_node_app_versions

ChatGPT
List runnable versions for a Krea node app available to the authenticated API workspace. MCP execution supports public node apps and node apps shared with the current workspace; private user-scoped node apps cannot be executed.

get_node_apps

ChatGPT
List runnable Krea node apps available to the authenticated API workspace. MCP execution supports public node apps and node apps shared with the current workspace; private user-scoped node apps cannot be executed.

get_prompting_guide

ChatGPT
Return a Krea prompt-writing guide. Pass a model ID to get model-specific prompting rules — call this once before writing prompts for Seedance 2 models (bytedance/seedance-2, bytedance/seedance-2-fast, bytedance/seedance-2-mini) or Kling 3.0 (kling/kling-3.0) and follow it when crafting the prompt and choosing input fields. Also serves named task guides: "video-ad-formats" is a library of 27 short-video ad formats with fill-in prompt templates plus a pattern-interrupt hook library — fetch it when creating video ads, product commercials, or UGC-style promotional content.

get_upload_url

ChatGPT
Get a 3 hour presigned URL for uploading an asset. POST the file to this URL as multipart/form-data with a file field. For example, the following command would work for CURL: curl -X POST "$UPLOAD_URL" -F "file=@/example.png". The asset URL will be returned in the response body. The same presigned URL can be reused to upload multiple files within its 3 hour lifetime — POST once per file and each returns its own asset URL, so you do not need a new URL per upload. If sending a POST to the presigned URL fails tell the user to add api.krea.ai to their domain allowlist. If you cannot make the POST yourself at all — for example your runtime is sandboxed without network egress, or you have no way to send HTTP requests — do not keep retrying: call upload_asset instead so the user can drop the file into the upload widget directly.

list_api_tokens

ChatGPT
List API token metadata and validity in the authenticated workspace, including revoked tokens. Never returns token secrets.

list_file_tags

ChatGPT
Discover exact tags already used on accessible Krea Files, with counts. Tags are labels for retrieval and do not grant access.

list_files

ChatGPT
Recursively list authorized Krea Files by user/workspace scope, type, filename, and exact tags.

list_home_assets

ChatGPT
Search and page through your stored assets in the connected Krea workspace by description, prompt, and asset category.

list_home_generations

ChatGPT
Page through your completed images and videos in the connected Krea workspace for the homepage.

list_models

ChatGPT
List supported Krea public API generation models. Pass category to list only one of image, video, enhance, 3d, or audio.

list_moodboards

ChatGPT
List moodboards owned by the current user and ones added to their collection. Use the ID to reference the moodboard to use when generating an image using a Krea 2 model.

list_styles

ChatGPT
List Krea styles/LoRAs available to the authenticated user, with cursor pagination.

list_workspaces

ChatGPT
List the workspaces available to this connection and identify the selected workspace. OAuth connections can select any workspace they belong to with select_workspace. API-key connections can only access the workspace bound to their key.

open_home

ChatGPT
Open the Krea homepage to browse your recent generations in the connected workspace and explore reusable presets and examples. Opening the homepage does not generate media or spend credits.

overwrite_files

ChatGPT
LEGACY: prefer write_files_inline or write_files_upload with the uri field. Batch replace content in existing Krea Files. Existing tags are preserved unless replacement tags are supplied. Pass content inline for text up to 200000 bytes (an empty string truncates the file). Omit content (or pass null) for a large or binary file: the item returns a signed uploadUrl instead — PUT the raw file bytes as the whole request body within 15 minutes (curl -X PUT --data-binary @file). Never send a multipart body (curl -F): the server rejects it with 415. Files have no size limit; over 20 MB, also pass the exact size_bytes to get a direct storage upload instead: PUT the bytes to uploadUrl (or each slice to multipart.partUrls, collecting the ETag response headers), echo the returned headers, then POST commitUrl (multipart: with a JSON body {"parts":[{"partNumber":1,"etag":"..."}]}) — the overwrite lands only when the commit succeeds.

read_files

ChatGPT
Batch read Krea Files by URI. Content lives on "file:<uuid>" rows, as returned by list_files and the write tools; container URIs (folder:, session:, moodboard:) come back with error "not a content file". This tool is not a URL fetcher: https:// URLs (generated images, uploads) and bare ids are not Krea Files URIs and fail. Text is returned inline; binary files return short-lived download URLs.

revoke_api_token

ChatGPT
Revoke an API token by its tokenId from list_api_tokens, in the authenticated workspace. Revocation is permanent.

select_workspace

ChatGPT
Switch this OAuth connection to a workspace ID from list_workspaces. Ask the user which workspace to use if unclear. This changes the workspace and billing context for subsequent requests on this connection, including other conversations sharing it, but not other connections or the Krea website. Wait for this call to finish before making workspace-scoped calls; do not batch them with this call. API-key connections cannot switch workspaces.

send_agent_message

ChatGPT
Only call this tool when the user explicitly asks to use the Krea Agent; never call it on your own initiative. Start a Krea Agent session (omit sessionId) or send a follow-up turn to an existing one. The Agent plans and runs image, video, and audio generations on the user's behalf. Prefer starting new sessions for new requests or unrelated work, and use separate sessions for work that should run at the same time (a session runs one turn at a time). Reuse a sessionId if needed to iterate on the same piece of work. Sessions are real Krea Agent sessions, visible at the returned url and billed to the caller's workspace. The agent runs unattended: it never asks the caller questions, and cost and permission prompts are approved automatically, so state every requirement and constraint in the prompt. Returns immediately with status running; the turn keeps running whether or not you wait, so send and carry on. Check back with get_agent_session, or block with wait_for_agent_session when you need the result. Attachments accept http(s) URLs and Krea Files URIs "file:<uuid>". A model pin must be included in the workspace plan; the error lists the allowed ids.

tag_files

ChatGPT
Transactionally add or remove exact tags across Krea Files.

update_moodboard

ChatGPT
Rename an existing moodboard owned by the current user.

update_style

ChatGPT
Rename an existing style/LoRA owned by the current user.

upload_asset

ChatGPT
Show the user a drag-and-drop upload widget so they can upload local files (images, video, audio, or 3D models) from their device to Krea. Call this when a generation or edit needs an input file the user has locally but no URL for — for example they say "edit this photo" or "use my logo" without attaching anything, or their chat client cannot attach files. Do NOT call this when the user already provided an asset URL or attached the file in chat. The widget uploads to Krea storage and the resulting asset URLs arrive as a user message; use those URLs as media input fields. After calling this tool, stop and wait for the user to upload instead of generating with placeholder URLs.

wait_for_agent_session

ChatGPT
Block up to timeoutSeconds (default 60, max 300) until the Agent turn finishes, then return the session view plus timedOut. Pass the runId from send_agent_message so an earlier turn's finished status is not mistaken for this one. Call again when timedOut is true, looping until finished is true. Only call this tool when the user explicitly asks to use the Krea Agent; never call it on your own initiative.

write_files

ChatGPT
LEGACY: prefer write_files_inline (inline text) or write_files_upload (binary/large files via signed URL). Batch create Krea Files with optional exact tags. Pass content inline for text up to 200000 bytes. Omit content (or pass null) for a large or binary file: the item returns a signed uploadUrl instead — POST the raw file bytes as the whole request body within 15 minutes (curl --data-binary @file). Never send a multipart body (curl -F): the server rejects it with 415. Files have no size limit; over 20 MB, also pass the exact size_bytes to get a direct storage upload instead: PUT the bytes to uploadUrl (or each slice to multipart.partUrls, collecting the ETag response headers), echo the returned headers, then POST commitUrl (multipart: with a JSON body {"parts":[{"partNumber":1,"etag":"..."}]}) — the file does not exist until the commit succeeds.

write_files_inline

ChatGPT
Batch write small text Krea Files with inline content and optional exact tags. Each item creates or overwrites: pass name (with optional parent_uri or scope) to create, or pass uri to overwrite that file. On overwrite an empty string truncates the file, existing tags are preserved unless replacement tags are supplied, and name renames. content is the file body, up to 200000 bytes. For binary or larger files use write_files_upload.

write_files_upload

ChatGPT
Batch mint signed upload URLs for binary or large Krea Files. Each item creates or overwrites: pass name (with optional parent_uri or scope) to create, or pass uri to overwrite that file. The item returns an uploadUrl — send the raw file bytes as the whole request body within 15 minutes with the returned method (POST creates, PUT overwrites; curl --data-binary @file). Never send a multipart body (curl -F): the server rejects it with 415. Files have no size limit; over 20 MB also pass the exact size_bytes to get a direct storage grant instead: PUT the bytes to uploadUrl (or each slice to multipart.partUrls, collecting the ETag response headers), echo the returned headers, then POST commitUrl (multipart: with a JSON body {"parts":[{"partNumber":1,"etag":"..."}]}) — the write lands only when the commit succeeds. Tags cannot ride an upload: call tag_files with the uri after the upload lands.

Capabilities

WritesInteractive

Example Prompts

Click any prompt to copy it.

App Stats

54

Tools

3

Prompts

ChatGPT

Platforms

Works with

ChatGPT

Data refreshed daily