Integration details
Description
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.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Category
- Pending
- Primary Subcategory
- Pending
- Secondary Subcategories
- None listed
- Brand
- Unknown
- Access
- Account required
- First tracked
- 2026-09-01
- Tool count
- 30
- Geography
- US
The broad Category that contains the Primary Subcategory.
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
ChatGPT Plugin Discovery Score
ChatGPT Plugin discovery is coming soon
ChatGPT can surface a Plugin when it matches a user's request.Your Plugin Discovery Score measures how often yours appears.
No spam. Unsubscribe any time.
What discovery looks like

Competitive lineup
30 tools agents can invoke
Delete a Krea generation job and attempt to cancel it first if it has not reached a terminal status.
cancel_job
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_folders
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_moodboard
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.
create_style
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_moodboard
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.
delete_style
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.
enhance_image
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.
execute_node_app
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_3d
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_image
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.
generate_video
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_job
Return the full public API input/output schema for a supported Krea generation model.
get_model_schema
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_app_versions
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_node_apps
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_prompting_guide
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.
get_upload_url
Discover exact tags already used on accessible Krea Files, with counts. Tags are labels for retrieval and do not grant access.
list_file_tags
Recursively list authorized Krea Files by user/workspace scope, type, filename, and exact tags.
list_files
List supported Krea public API generation models. Pass category to list only one of image, video, enhance, or 3d.
list_models
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_moodboards
List Krea styles/LoRAs available to the authenticated user, with cursor pagination.
list_styles
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.
overwrite_files
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.
read_files
Rename an existing moodboard owned by the current user.
update_moodboard
Rename an existing style/LoRA owned by the current user.
update_style
Transactionally add or remove exact tags across Krea Files.
tag_files
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
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_inline
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.
write_files_upload
How do I improve a ChatGPT Plugin's discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.