Picsart GenAI
REMOTE · API.PICSART.COM · SCANNED OCT 2
Generate and edit images, videos, and audio with 150+ models from 20+ vendors.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security97
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- The endpoint enforces authorisation, advertised via RFC 9728 protected-resource metadata. View diagnostics → Pass
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
- The authorisation server supports Client ID Metadata Documents, the current MCP client-registration mechanism. View diagnostics → Pass
Transport & Reachability0
- Transport blocked by authentication: the endpoint requires auth we don't have to verify streamable-http. See how to fix → View diagnostics → Unverified
Schema Quality & AI Usability0
- Schema blocked by authentication: the endpoint requires auth we don't have to read it. See how to fix → Unverified
Stability & Change Management0
- Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage0
- Tool coverage blocked by authentication: the endpoint requires auth we don't have to read its tools.Unverified
Tool Safety0
- Tool safety blocked by authentication: the endpoint requires auth we don't have to read its tools.Unverified
Capabilities0
- Capabilities blocked by authentication: the endpoint requires auth we don't have to read them. See how to fix → Unverified
Unverified: 6 categories
Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm. Claim this server and supply a read-only token to verify it and lift the score.
How do I install the Picsart GenAI MCP server?
Picsart GenAI is a hosted endpoint at https://api.picsart.com/gen-ai/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · api.picsart.com
claude mcp add --transport http com-picsart-api-gen-ai 'https://api.picsart.com/gen-ai/mcp'
{
"mcpServers": {
"com-picsart-api-gen-ai": {
"url": "https://api.picsart.com/gen-ai/mcp"
}
}
} {
"servers": {
"com-picsart-api-gen-ai": {
"type": "http",
"url": "https://api.picsart.com/gen-ai/mcp"
}
}
} [mcp_servers.com-picsart-api-gen-ai] url = "https://api.picsart.com/gen-ai/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"com-picsart-api-gen-ai": {
"type": "remote",
"url": "https://api.picsart.com/gen-ai/mcp",
"enabled": true
}
}
} openclaw mcp add com-picsart-api-gen-ai --url 'https://api.picsart.com/gen-ai/mcp' --transport streamable-http
mcp_servers:
com-picsart-api-gen-ai:
url: "https://api.picsart.com/gen-ai/mcp" {
"McpServers": {
"com-picsart-api-gen-ai": {
"Transport": "http",
"Url": "https://api.picsart.com/gen-ai/mcp"
}
}
} assistant mcp add com-picsart-api-gen-ai -t streamable-http -u 'https://api.picsart.com/gen-ai/mcp'
{
"mcpServers": {
"com-picsart-api-gen-ai": {
"type": "http",
"url": "https://api.picsart.com/gen-ai/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 28 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 25 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 26 Aug 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 25 Aug 26 0
- Endpoint reachability: reachable → behind authorisation ▼ security
- Stability: fail → unverified ▼ security
- Transport: pass → unverified ▼ security
- Authorization: fail → pass ▲ security
- First check of Authorization: pass security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Schema quality: 100 → unverified ▼ functional
- 21 Aug 26 0
- Resource “picsart_upload_widget” now points somewhere else: ui://widget/picsart-upload-v4.html → ui://widget/picsart-upload-v5.html security
- 20 Aug 26 0
- Tool “picsart_asset_review” was removed ▼ security
- Tool “picsart_asset_sheet” was removed ▼ security
- Tool “picsart_delete_asset” was removed ▼ security
- Tool “picsart_film_setup” was removed ▼ security
- Tool “picsart_film_tracker” was removed ▼ security
- Tool “picsart_grade_console” was removed ▼ security
- Tool “picsart_list_assets” was removed ▼ security
- Tool “picsart_media_video_create” was removed ▼ security
- Tool “picsart_media_video_render” was removed ▼ security
- Tool “picsart_media_video_revise” was removed ▼ security
- Tool “picsart_model_choice” was removed ▼ security
- Tool “picsart_music_studio” was removed ▼ security
- Tool “picsart_save_asset” was removed ▼ security
- Tool “picsart_scene_review” was removed ▼ security
- Tool “picsart_shot_designer” was removed ▼ security
- Tool “picsart_shotlist_board” was removed ▼ security
- Tool “picsart_video_compare” was removed ▼ security
- Tool “picsart_video_review” was removed ▼ security
- Resource “picsart_credits_widget” now points somewhere else: ui://widget/picsart-credits-v1.html → ui://widget/picsart-credits-v2.html security
- Resource “picsart_drive_browser” now points somewhere else: ui://widget/picsart-drive-browser-v1.html → ui://widget/picsart-drive-browser-v2.html security
- Resource “picsart_media_gallery” now points somewhere else: ui://widget/picsart-media-gallery-v2.html → ui://widget/picsart-media-gallery-v3.html security
- Resource “picsart_model_studio” now points somewhere else: ui://widget/picsart-model-studio-v1.html → ui://widget/picsart-model-studio-v2.html security
- Resource “picsart_upload_widget” now points somewhere else: ui://widget/picsart-upload-v1.html → ui://widget/picsart-upload-v4.html security
- The server rewrote its instructions, which are the text every model session reads security
- Tool “picsart_media_export” rewrote its description, which is the text the model reads security
- Schema quality: 280 → 335 ▼ functional
- Tool coverage: 60% → 44% ▼ functional
- Schema quality: 280 → 334 ▼ functional
- Resource “picsart_asset_review” was removed ▼ functional
- Resource “picsart_asset_sheet” was removed ▼ functional
- Resource “picsart_film_setup” was removed ▼ functional
- Resource “picsart_film_tracker” was removed ▼ functional
- Resource “picsart_grade_console” was removed ▼ functional
- Resource “picsart_model_choice” was removed ▼ functional
- Resource “picsart_music_studio” was removed ▼ functional
- Resource “picsart_scene_review” was removed ▼ functional
- Resource “picsart_shot_designer” was removed ▼ functional
- Resource “picsart_shotlist_board” was removed ▼ functional
- Resource “picsart_video_compare” was removed ▼ functional
- Resource “picsart_video_review” was removed ▼ functional
- Server version: 88d9e44e8ed6c2308839876f4aa019fd71618586 → 1.0.0 functional
- 18 Aug 26 0
- Tool “picsart_upload_widget” was removed ▼ security
- The server rewrote its instructions, which are the text every model session reads security
- New tool “picsart_delete_asset”, which the server declares destructive security
- Tool “picsart_drive” rewrote its description, which is the text the model reads security
- Tool “picsart_generate” rewrote its description, which is the text the model reads security
- Tool “picsart_media_quickstart” rewrote its description, which is the text the model reads security
- Tool “picsart_media_video_create” rewrote its description, which is the text the model reads security
- Tool “picsart_media_video_render” rewrote its description, which is the text the model reads security
- Tool “picsart_media_video_revise” rewrote its description, which is the text the model reads security
- Tool coverage: 45% → 60% ▲ functional
- Schema quality: 319 → 280 ▲ functional
- New resource “picsart_asset_review” functional
- New resource “picsart_asset_sheet” functional
- New resource “picsart_film_setup” functional
- New resource “picsart_film_tracker” functional
- New resource “picsart_grade_console” functional
- New resource “picsart_model_choice” functional
- New resource “picsart_scene_review” functional
- New resource “picsart_shot_designer” functional
- New resource “picsart_shotlist_board” functional
- New resource “picsart_video_compare” functional
- New resource “picsart_video_review” functional
- Server version: 79e045373be0864ccc9f4dbc207cca8a21b3c887 → 88d9e44e8ed6c2308839876f4aa019fd71618586 functional
- Server version: cbf5c175637cb12d418ab2f1022da5c6f2d7048a → 79e045373be0864ccc9f4dbc207cca8a21b3c887 functional
- New tool “picsart_asset_review” functional
- New tool “picsart_asset_sheet” functional
- New tool “picsart_film_setup” functional
- New tool “picsart_film_tracker” functional
- New tool “picsart_grade_console” functional
- New tool “picsart_list_assets” functional
- New tool “picsart_media_upload” functional
- New tool “picsart_model_choice” functional
- New tool “picsart_save_asset” functional
- New tool “picsart_scene_review” functional
- New tool “picsart_shot_designer” functional
- New tool “picsart_shotlist_board” functional
- New tool “picsart_video_compare” functional
- New tool “picsart_video_review” functional
- “picsart_generate” reworded the description of “async” cosmetic
- “picsart_media_video_render” reworded the description of “code_url” cosmetic
- 17 Aug 26 0
- The server rewrote its instructions, which are the text every model session reads security
- Tool “picsart_drive” rewrote its description, which is the text the model reads security
- Tool “picsart_media_apply_scene_template” rewrote its description, which is the text the model reads security
- Tool “picsart_media_contact_sheet” rewrote its description, which is the text the model reads security
- Tool “picsart_media_export” rewrote its description, which is the text the model reads security
- Tool “picsart_media_overview” rewrote its description, which is the text the model reads security
- Tool “picsart_media_probe_media” rewrote its description, which is the text the model reads security
- Tool “picsart_media_get_capabilities” rewrote its description, which is the text the model reads security
- Server version: d37aa4c78d1c1b9a59cac8bf3870a4b62739141c → cbf5c175637cb12d418ab2f1022da5c6f2d7048a functional
- Server version: ed328ae81f6897bc4512c8a52ff612b196f66913 → d37aa4c78d1c1b9a59cac8bf3870a4b62739141c functional
- Server version: adf171ecc272fc0efeace69d1ef5b6e13c3cd332 → ed328ae81f6897bc4512c8a52ff612b196f66913 functional
- “picsart_media_contact_sheet” reworded the description of “frames” cosmetic
- “picsart_media_contact_sheet” reworded the description of “times” cosmetic
- “picsart_media_get_capabilities” reworded the description of “sections” cosmetic
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 2 Oct 2026 · Probed https://api.picsart.com/gen-ai/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=picsart.com | CN=WE1,O=Google Trust Services,C=US | 23 Sept 2026 | 22 Dec 2026 | ECDSA 256 | ECDSA-SHA256 | 162fd8ede691e931137bdbefe789355d |
| SANs: picsart.com, api.picsart.com, *.api.picsart.com | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of api.picsart.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| picsart.com. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On connection |
| HTTP status | 401 |
WWW-Authenticate challenge Bearer error="invalid_token", error_description="Authentication required for this tool", resource_metadata="https://api.picsart.com/gen-ai/.well-known/oauth-protected-resource"
Bearer error="invalid_token", error_description="Authentication required for this tool", resource_metadata="https://api.picsart.com/gen-ai/.well-known/oauth-protected-resource" | Header | Value |
|---|---|
| strict-transport-security | max-age=2592000 |
| x-content-type-options | nosniff |
| www-authenticate | Bearer error="invalid_token", error_description="Authentication required for this tool", resource_metadata="https://api.picsart.com/gen-ai/.well-known/oauth-protected-resource" |
Protected resource metadata
| Document | https://api.picsart.com/gen-ai/.well-known/oauth-protected-resource |
|---|---|
| Retrieved | Yes |
| Resource | https://api.picsart.com/gen-ai/mcp |
| Authorisation server | https://auth.picsart.com/api |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://api.picsart.com/gen-ai/mcp | Auth required | 401 | |
| http (plaintext) | http://api.picsart.com/gen-ai/mcp | HTTPS enforced | 301 | https://api.picsart.com/gen-ai/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
picsart_change_bg ~436
Replaces the background of an image with a new scene described by a prompt, keeping the foreground subject intact. Auto-picks the newest enabled Picsart change-bg model unless overridden via the `model` param — no need to call `picsart_list_models` first. Use this when the user wants to "change the background to X", "put this on a beach", "swap the background for a marble counter", or any compositing where the subject is kept and the backdrop changes. Do NOT use this to strip the background to transparency (use `picsart_remove_bg`), upscale or sharpen (use `picsart_enhance`), convert raster to SVG (use `picsart_vectorize`), or generate a brand-new image from scratch (use `picsart_generate`). Required inputs: `image` — a publicly-accessible URL, not a local file path — and `prompt` describing the new background. Optional: `model` to pin a specific change-bg model; preflight the explicit model id you plan to use (the default path may select `recraftv3-replace-bg` rather than the legacy `picsart-change-bg`). Example: `{ image: "https://example.com/product.jpg", prompt: "polished marble countertop with soft window light" }`. Returns `{ assets, id, model, created_at, prompt, summary, why_relevant, url, results: [{ url, metadata? }], drive? }` as a single JSON text block plus matching structuredContent (no `resource_link` blocks — the widget is the single source of visual truth, so result URLs are not duplicated as separate content blocks). `id` is the SDK's generation handle; `metadata` may include model-specific tags (e.g. `exploreImageId` for Recraft Explore models). Spends credits. Requires Authorization: Bearer <picsart_token>.
| Name | Type | Req | Description |
|---|---|---|---|
| image | string | yes | Input image URL |
| model | string | – | Override model ID (e.g. "recraftv3-replace-bg") |
| prompt | string | yes | Description of the new background |
| Name | Type | Req | Description |
|---|---|---|---|
| assets | array | yes | – |
| completed | number | – | – |
| created_at | string | – | – |
| drive | – | – | – |
| finalUrl | string | – | – |
| id | string | – | – |
| iterations | number | – | – |
| model | string | – | – |
| prompt | string | – | – |
| results | – | – | – |
| summary | string | – | – |
| url | string | – | – |
| urls | array | – | – |
| videos | array | – | – |
| why_relevant | string | – | – |
No examples provided.
picsart_credits ~228
Returns the current Picsart credit balance for the authenticated user — `balance` (active credits available now) plus the breakdown into `resettable` (recurring monthly/period quota) and `accumulative` (top-ups and add-ons), `total` (active credits across both pools), and `overdraftUsage` (credits spent past the balance, if any). When the resettable pool has a scheduled reset, `nextResetDate` is the ISO timestamp of the next refill. Use this before expensive operations to warn the user when the balance is low, or after a 402 from `picsart_generate` to confirm the issue is credits and not something else. Do NOT use it to estimate the cost of a specific generation (use `picsart_preflight`); this tool only reports the balance, not per-call cost. Takes no input. Returns `{ balance, total, resettable, accumulative, overdraftUsage, nextResetDate? }` where each number is non-negative. Requires Authorization: Bearer <picsart_token> (per-user account data).
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| accumulative | number | yes | – |
| balance | number | yes | – |
| nextResetDate | string | – | – |
| overdraftUsage | number | yes | – |
| resettable | number | yes | – |
| total | number | yes | – |
No examples provided.
picsart_drive ~596
Single entry point for the authenticated user's Picsart Drive. Pass `action`: - `list`: browse a folder. `folderUid` omitted = Drive root; set it to descend. Folders are returned first; files are paginated (`page`, `pageSize`<=128, optional `sort`, optional `type` filter). Set `flat: true` to list every file across all folders (folders are omitted in flat mode). - `create_folder`: requires `name`; `folderUid` = parent (omit for root). Optional `description`. - `upload`: save a file. Provide EITHER `file` (chat attachment) OR `url`+`name` (an HTTPS URL or an inline `data:` URI — data URIs are pushed to the Picsart CDN first). `folderUid` = destination, `type` = resource kind. `result.url` is the CDN-hosted URL of the saved file, ready to pass to `picsart_generate` reference params like `imageUrls`. - `move`: requires `itemUids`; `targetFolderUid` = destination (omit = root). - `delete`: requires `itemUids`; soft-deletes to trash unless `permanent` is true. - `update`: requires `itemUid` + `attributes`; sets custom key/value attributes on a file (e.g. `{ coverUrl }`). Every action except `upload` returns the current folder listing (folders, files, page math) so the widget can render; `upload` skips the re-list (the destination was already explicit) and returns only `result`, so the browser panel does not reopen as a side effect of a plain save. Requires an authenticated Picsart session (per-user Drive content): the caller's identity is forwarded to the Drive service as a `user-id` header — no bearer token is sent onward.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| attributes | object | – | Update action: custom key/value attributes to set on the file (e.g. `{ coverUrl }`). |
| description | string | – | – |
| file | object | – | – |
| flat | boolean | – | List action: when true, returns every file across the whole Drive (all folders) instead of just the items directly inside `folderUid`. Folders are not returned in flat mode. |
| folderUid | string | – | – |
| itemUid | string | – | Update action: uid of the file whose attributes to set. |
| itemUids | array | – | – |
| name | string | – | – |
| page | integer | – | – |
| pageSize | integer | – | – |
| permanent | boolean | – | Delete action: true permanently purges; false/omitted moves to trash (recoverable). |
| sort | object | – | – |
| targetFolderUid | string | – | – |
| type | string | – | – |
| url | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| breadcrumb | array | – | – |
| files | array | yes | – |
| folderUid | string|null | yes | – |
| folders | array | yes | – |
| hasNext | boolean | yes | – |
| hasPrev | boolean | yes | – |
| page | number | yes | – |
| pageSize | number | yes | – |
| result | object | – | – |
| totalFiles | number | – | – |
| totalPages | number | – | – |
No examples provided.
picsart_enhance ~373
Upscales and enhances an image — sharpens edges, denoises, and raises resolution by an optional scale factor. Auto-picks the newest enabled Picsart upscale / enhance model unless overridden via the `model` param. Use this when the user asks to "upscale", "enhance", "make it higher resolution", "sharpen", "clean up this photo", or "make this 4k". Do NOT use this to remove the background (use `picsart_remove_bg`), replace the background (use `picsart_change_bg`), convert raster to SVG (use `picsart_vectorize`), or generate a new image (use `picsart_generate`). Required input: `image` — a publicly-accessible URL, not a local file path. Optional: `model` to pin a specific enhance model, `scaleFactor` (e.g. 2 or 4) for upscale ratio. Example: `{ image: "https://example.com/photo.jpg", scaleFactor: 4 }`. Returns `{ assets, id, model, created_at, summary, why_relevant, url, results: [{ url, metadata? }], drive? }` as a single JSON text block plus matching structuredContent (no `resource_link` blocks — the widget is the single source of visual truth, so result URLs are not duplicated as separate content blocks). `id` is the SDK's generation handle; `metadata` may include model-specific tags. Spends credits. Requires Authorization: Bearer <picsart_token>.
| Name | Type | Req | Description |
|---|---|---|---|
| image | string | yes | Input image URL |
| model | string | – | Override model ID (e.g. "picsart-enhance") |
| scaleFactor | number | – | Upscale factor (e.g. 2, 4) |
| Name | Type | Req | Description |
|---|---|---|---|
| assets | array | yes | – |
| completed | number | – | – |
| created_at | string | – | – |
| drive | – | – | – |
| finalUrl | string | – | – |
| id | string | – | – |
| iterations | number | – | – |
| model | string | – | – |
| prompt | string | – | – |
| results | – | – | – |
| summary | string | – | – |
| url | string | – | – |
| urls | array | – | – |
| videos | array | – | – |
| why_relevant | string | – | – |
No examples provided.
picsart_generate ~1,204
Runs any Picsart AI model end-to-end to produce an image, video, audio, or text result. Spends credits. If you already have a model id/name in hand, skip straight to `picsart_generate` — no need to call `picsart_list_models` first. Optionally validate first via `picsart_model_params` (learn its inputs) and/or `picsart_preflight` (validate the payload and quote cost before spending credits); `picsart_generate` itself also rejects unsupported param values before charging. Only reach for `picsart_list_models` when you need to pick a model — e.g. no model was named, or the user wants to browse/compare visually via the model-picker widget. To browse or check model capabilities (e.g. supported aspect ratios) programmatically WITHOUT popping that widget, use `picsart_model_catalog` instead. Do NOT use this for editing operations that have dedicated tools — background removal (`picsart_remove_bg`), background replacement (`picsart_change_bg`), upscale / enhancement (`picsart_enhance`), or raster-to-SVG conversion (`picsart_vectorize`). Also do NOT use it to validate params, quote cost, or browse the catalog — those are separate tools above. Required inputs: `model` (id) and `prompt`. Model-dependent optional inputs: `duration` (video seconds), `aspectRatio` (e.g. "16:9", "9:16", "1:1"), `resolution` (e.g. "1080p", "4k"), `count` (1–10 outputs), `quality`, `style`, `negativePrompt`, `imageUrls` (for image-to-X models), `videoUrl` (for video-to-X), `enhancePrompt`, `generateAudio`, and `extra` — a free-form record for model-specific params (discover them via `picsart_model_params`). Example (image): `{ model: "flux-2-pro", prompt: "a cat in a hat", aspectRatio: "1:1", count: 1 }`. Example (video): `{ model: "kling-v3-pro", prompt: "a cat skiing down a mountain", duration: 5, aspectRatio: "16:9" }`. Returns `{ assets, id, model, created_at, prompt, summary, why_relevant, url, results: [{ url, metadata? }], drive? }` as a single JSON text block plus matching structuredContent…
| Name | Type | Req | Description |
|---|---|---|---|
| aspectRatio | string | – | Aspect ratio (e.g. "16:9", "9:16", "1:1") |
| async | boolean | – | Submit the job and return immediately with `{ job, status: "ACCEPTED" }` instead of waiting for the result, then poll `picsart_job_status` with the returned handle. DEFAULTS TO TRUE FOR VIDEO MODELS:… |
| count | integer | – | Number of outputs |
| duration | number | – | Video duration in seconds |
| enhancePrompt | boolean | – | AI-enhance the prompt before generating |
| extra | object | – | Extra model-specific params. The accepted shape varies per model — picsart_model_params returns the JSON schema for any model, and picsart_preflight can pre-check (and price) a candidate object befor… |
| generateAudio | boolean | – | Generate audio track for video |
| imageUrls | array | – | Input images for image-to-X models |
| model | string | yes | Model ID (e.g. "flux-2-pro", "kling-v3-pro") |
| negativePrompt | string | – | What to avoid |
| prompt | string | yes | Generation prompt |
| quality | string | – | Quality preset |
| resolution | string | – | Resolution (e.g. "1080p", "4k") |
| saveToDrive | boolean | – | Auto-save the result into the user's Drive (default true). Set false when the caller persists the result itself (e.g. Music Studio saves into its own folder) to avoid a duplicate copy. |
| style | string | – | Style preset |
| videoUrl | string | – | Input video for video-to-X models |
| Name | Type | Req | Description |
|---|---|---|---|
| assets | array | yes | – |
| completed | number | – | – |
| created_at | string | – | – |
| drive | – | – | – |
| finalUrl | string | – | – |
| id | string | – | – |
| iterations | number | – | – |
| model | string | – | – |
| prompt | string | – | – |
| results | – | – | – |
| summary | string | – | – |
| url | string | – | – |
| urls | array | – | – |
| videos | array | – | – |
| why_relevant | string | – | – |
No examples provided.
picsart_job_status ~234
Checks a generation job started by `picsart_generate` with `async: true`. Widget-facing: widgets poll this every few seconds with the returned job handle; assistants normally call `picsart_generate` synchronously and never need this tool. While running it returns `{ status: "ACCEPTED"|"IN_PROGRESS", progress?: { percent, estimatedSecondsLeft } }`. Once finished it returns the same media payload `picsart_generate` would have returned (`{ status: "COMPLETED", assets, results, url, ... }`), or an error for FAILED/CANCELED jobs. Requires Authorization: Bearer <picsart_token>.
| Name | Type | Req | Description |
|---|---|---|---|
| job | object | yes | The job handle returned by `picsart_generate` when called with `async: true`. |
| model | string | yes | Model ID the job was submitted with (e.g. "seedance-2.0") |
| prompt | string | – | Original prompt — echoed into the completed result metadata |
| saveToDrive | boolean | – | Mirror of the original call's saveToDrive flag; pass false when the caller persists the result itself. |
| Name | Type | Req | Description |
|---|---|---|---|
| assets | array | yes | – |
| progress | object | – | – |
| status | string | yes | ACCEPTED | IN_PROGRESS | COMPLETED (FAILED/CANCELED surface as tool errors) |
No examples provided.
picsart_list_models ~855
Lists Picsart AI models across ALL modes (image / video / audio / text) and renders the Picsart Studio model-picker widget so the USER can browse, compare, and pick a model visually. Each item carries `id`, `name`, `mode`, `inputType`, `supportedAspectRatios`/`supportedResolutions` (when the model declares an enum for that param) (and `provider`, `badges`, `description` when `verbose` is true). Use this when the user wants to SEE the available models or pick one themselves — especially when they have not committed to an output mode yet, or for cross-mode searches ("all flux models", "every model with image input"). To narrow to one output mode without a separate tool, pass the `mode` filter (image/video/audio/text) on this same tool. Ratio/resolution constraints ride along in `supportedAspectRatios`/`supportedResolutions`, so you rarely need `picsart_model_params` just to check whether a model supports a given aspect ratio or resolution. Do NOT use it to fetch a single model's FULL parameter schema (use `picsart_model_params`) or estimate per-call cost (use `picsart_preflight`). If you only need catalog knowledge for your own reasoning (no UI shown to the user), use `picsart_model_catalog` instead. Inputs (all optional): `mode` (filter to image/video/audio/text — text = LLM models that return generated text), `provider` (case-insensitive substring like "flux", "kling", "google"), `acceptsImage` (true → only models that take an image input — i2i, i2v, i2t), `acceptsVideo` (true → only models that take a video input — v2v, v2a, v2t), `acceptsAudio` (true → only models that take an audio input — a2v, sts), `inputType` (exact-match escape hatch; one of t2v/i2v/v2v/a2v/t2i/i2i/t2a/v2a/tts/sts/sfx/music/t2t/i2t/v2t), `limit` (1–100, default 20), `verbose` (default false; when true each item adds provider/badges/description). inputType codes — first letter is input modality, second is output: t2i (text→image), i2i (image→image), t2v (text→video), i2v (image→video), v2v (v…
| Name | Type | Req | Description |
|---|---|---|---|
| acceptsAudio | boolean | – | Only return models that accept an audio input (a2v, sts) |
| acceptsImage | boolean | – | Only return models that accept an image input (i2i, i2v) |
| acceptsVideo | boolean | – | Only return models that accept a video input (v2v, v2a) |
| inputType | string | – | Exact inputType match (e.g. "i2v") |
| limit | integer | – | Max items to return (1–100, default 20) |
| mode | string | – | Filter by generation mode |
| provider | string | – | Provider substring (e.g. "kling", "flux", "google") |
| verbose | boolean | – | When true, include provider/badges/description per item. Default false. |
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | yes | – |
| total | number | yes | – |
| truncated | boolean | yes | – |
No examples provided.
picsart_media_apply_effect ~228
Apply a named effect (gaussian_blur, drop_shadow, stroke, ...) to a visual layer in an MP Scene, with catalog defaults filled for any omitted params. Returns the updated scene with the effect merged into the target layer's effects[] -- re-applying the same effect id REPLACES it (idempotent), so params can be tuned without stacking duplicate effects. Each param is validated by kind and numeric range; an unknown effect id, unknown param, or out-of-range value is rejected with a clear error. Discoverable effect ids and their parameter shapes (ranges, defaults) are listed under `supports.effects` in `picsart_media_get_capabilities`. Pure: takes the full scene by value, returns a new scene; no server-side state.
| Name | Type | Req | Description |
|---|---|---|---|
| effect | string | yes | Effect id (e.g. gaussian_blur, drop_shadow, stroke) |
| layerId | string | yes | Id of the visual layer to apply the effect to |
| params | object | – | Optional effect parameter overrides |
| scene | object | yes | The MP Scene document to edit |
No output schema declared.
No examples provided.
picsart_media_apply_look ~358
Apply a composite 'look' (e.g. vintage_bw, light_leak, shimmer) to a media OR scene_ref layer. A look wraps the layer's content into an isolated nested composition so the treatment hits the composited result as one image. TWO MODES: mode:'reference' (DEFAULT) just appends a thin entry to the layer's `looks[]` array ({look, params}) and KEEPS the layer's content as the look's subject — nothing is baked; translate/preview/query expand it just-in-time (resolveLooks), or call picsart_media_resolve_looks to bake a self-contained scene. This keeps the stored scene small and the look non-destructively editable (re-tune params / drop the entry / stack multiple looks). mode:'expand' eagerly bakes the full nested sub-scene now (the original behavior). Params have catalog defaults; omit `params` for the default look. Discoverable looks + params are under `supports.looks` in picsart_media_get_capabilities. NOTE: a layer carrying its own effects/animations/mask/blendMode can't take a look (the look's scene_ref wrapper can't preserve them). Pure: takes the full scene by value, returns a new scene.
| Name | Type | Req | Description |
|---|---|---|---|
| layerId | string | yes | Id of the media or scene_ref layer to apply the look to |
| look | string | yes | Look id (e.g. vintage_bw, light_leak, shimmer) |
| mode | string | – | "reference" (default) defers expansion; "expand" bakes the nested comp now |
| params | object | – | Optional look parameter overrides |
| scene | object | yes | The MP Scene document to edit |
No output schema declared.
No examples provided.
picsart_media_apply_motion_preset ~202
Apply a named motion preset (glow_pulse, ken_burns, scale_pop, ...) to a visual layer in an MP Scene. Returns the updated scene with the preset's animations + effects merged into the target layer. Each preset declares an `appliesTo` set of layer content kinds (text/media/color) -- mismatches are rejected with a clear `preset_kind_mismatch` error. Discoverable presets and their parameter shapes are listed under `supports.motionPresets` in `picsart_media_get_capabilities`. Pure: takes the full scene by value, returns a new scene; no server-side state.
| Name | Type | Req | Description |
|---|---|---|---|
| layerId | string | yes | Id of the visual layer to animate |
| params | object | – | Optional preset parameter overrides |
| preset | string | yes | Motion preset id (e.g. glow_pulse, ken_burns, scale_pop) |
| scene | object | yes | The MP Scene document to edit |
No output schema declared.
No examples provided.
picsart_media_apply_scene_template ~562
Instantiate a scene template with the supplied parameter bindings. Two modes: `reference` (DEFAULT, canonical) packages an `MpSceneRefContent` snippet (kind:'scene_ref' with bindings + optional timeScale/trim/fit) to drop into a parent scene's `layers[]`; at translate/preview time the ref becomes its OWN nested composition (keeps its resolution/duration, fit/transform honoured — the template stays a reusable parameterized unit). For a STANDARD library template (`mpscene://montage`, …) the parent needs NO `scenes` entry; the translator resolves it from the registry. `bootstrap` returns a complete resolved standalone `MpScene` (substitutes every `$param`, synthesizes asset entries for asset-typed parameters, strips the `parameters` declaration) — use it to bake an editable starting scene. `inline` MERGES the template's resolved concrete layers + assets INTO a target `scene` you pass (no scene_ref) and returns it — the 'bring a preset's editable layers into my composition' op (ids prefixed so nothing collides, assetId refs rewired, brought-in layer starts offset by `at`). Use `picsart_media_describe_scene_template` first to learn what parameters the template accepts. Pure: returns either `sceneRef` or `scene` plus the applied parameter map. For the common video jobs — concatenating/merging N clips with per-clip trim and fit/align into one output — call picsart_media_quickstart with recipe:'concat_videos' FIRST. It returns a complete, validated parameters payload for mpscene://montage; you should not need picsart_media_describe_scene_template or picsart_media_get_scene_schema round-trips for that case.
| Name | Type | Req | Description |
|---|---|---|---|
| at | number | – | Inline mode only: offset each brought-in layer's start by this many seconds |
| fit | string | – | Reference mode only: fit mode passed through to the scene_ref |
| idPrefix | string | – | Inline mode only: id-prefix for the brought-in layers/assets |
| mode | string | – | "reference" (default) packages a scene_ref; "bootstrap" bakes a standalone scene; "inline" merges into `scene` |
| parameters | object | – | Parameter bindings; keys must match the template's declared parameters |
| scene | object | – | Inline mode only: the scene to merge the template's editable layers into |
| timeScale | number | – | Reference mode only: passed through to the scene_ref |
| trim | object | – | Reference mode only: trim window passed through to the scene_ref |
| uri | string | yes | Template URI, e.g. "mpscene://montage" |
No output schema declared.
No examples provided.
picsart_media_apply_text_animation ~189
Apply a named text-animation preset (typewriter, fade_in_chars, slide_up_lines, ...) to a text layer in an MP Scene. Returns the updated scene with the animation appended to the layer's `content.animations[]`. Discoverable presets and their parameter shapes are listed under `supports.textAnimationPresets` in `picsart_media_get_capabilities`. Agents wanting custom shapes can write `MpTextAnimation` entries directly into a scene without going through this tool. Pure: takes the full scene by value, returns a new scene; no server-side state.
| Name | Type | Req | Description |
|---|---|---|---|
| layerId | string | yes | Id of the text layer to animate |
| params | object | – | Optional preset parameter overrides |
| preset | string | yes | Text-animation preset id (e.g. typewriter, fade_in_chars, slide_up_lines) |
| scene | object | yes | The MP Scene document to edit |
No output schema declared.
No examples provided.
picsart_media_contact_sheet ~532
Render a cheap multi-frame OVERVIEW of a scene as low-res jpeg thumbnails YOU CAN ACTUALLY SEE: each sampled frame comes back as an inline image content block (labeled with its scene time), alongside the machine-readable `{ frames: [{time, url, inline}] }`. Two modes: pass `times` (PREFERRED — you usually know the interesting moments: clip seams, animation midpoints, entrance ends) to get an EXACT thumbnail per requested time, rendered concurrently; or pass `frames` (default 8, max 24) for evenly-spaced sampling across the whole timeline (one image-sequence render at 1fps — integer-second granularity only). Sits between a single full-res frame check and picsart_media_export (full encode): use it to eyeball pacing, seams, and content presence across the WHOLE timeline before exporting, instead of checking single frames repeatedly. Auth is handled by the platform automatically — no token setup needed on your end. Validate the scene first. Inline images are best-effort under a total size/count budget: a frame that fails to download, is oversized, or falls outside the budget still comes back with its `url` and `inline: false` in the JSON — a partially-inlined sheet is a SUCCESS, not an error, because the render has already happened and been charged. Do not retry this call just to get the missing pictures (that re-charges the render) — open those urls instead. Scope: this samples a scene you have already authored, to look at it. It is NOT a metadata probe — use picsart_media_probe_media first for a source clip's duration/dimensions/frame rate. Sparse-sampling frames here to discover duration is only the fallback when picsart_media_probe_media genuinely cannot determine it (every frame is a charged GPU render). Use picsart_media_query_layout to check layer geometry, overlap and stacking order without rendering. At most 8 frames come back inline per call regardless of how many you request.
| Name | Type | Req | Description |
|---|---|---|---|
| frames | number | – | How many evenly-spaced thumbnails to return (default 8, max 8 shown inline) |
| resolution | object | – | Thumbnail box override (default: composition aspect scaled to width 480) |
| scene | – | yes | The MP Scene document to sample, or an http(s):// URL to fetch it from |
| times | array | – | EXACT scene times (seconds) to thumbnail. At most 8 frames come back as inline images; requesting more no longer renders/charges the extras (see above). When set, `frames` is ignored |
| Name | Type | Req | Description |
|---|---|---|---|
| assets | array | yes | – |
| completed | number | – | – |
| created_at | string | – | – |
| drive | – | – | – |
| finalUrl | string | – | – |
| id | string | – | – |
| iterations | number | – | – |
| model | string | – | – |
| prompt | string | – | – |
| results | – | – | – |
| summary | string | – | – |
| url | string | – | – |
| urls | array | – | – |
| videos | array | – | – |
| why_relevant | string | – | – |
No examples provided.
picsart_media_describe_scene_template ~123
Describe a single MP Scene template by URI -- returns its declared parameters (with types, defaults, ranges, required flags, descriptions) and composition dimensions. Use this before `picsart_media_apply_scene_template` so you know what to pass. Accepts `mpscene://<id>` URIs in v1; other schemes are deferred. Returns `{ id?, uri, composition, parameters }` where `parameters` is the full declarations map.
| Name | Type | Req | Description |
|---|---|---|---|
| uri | string | yes | Template URI, e.g. "mpscene://montage" |
No output schema declared.
No examples provided.
picsart_media_expand_scene_ref ~344
DETACH a scene_ref into editable layers: replace a resolvable scene_ref layer (or every resolvable one, if no `layerId`) with the referenced template's concrete resolved layers, inlined IN PLACE (prefixed by the ref layer's id, started at its `start`, assetId refs rewired). The result has no scene_ref for the expanded layers, so you can edit the brought-in layers directly. Inverse of the by-reference model: 'I referenced a template, now bake this instance to customize it beyond its parameters.' One level in v1 (a brought-in layer that is itself a scene_ref stays a reference — run again to go deeper). This is a SYNC op that does NOT fetch: it resolves only in-memory `mpscene://` refs (local `scenes{}` / inherited / registry). A REMOTE `https://`/`http://` ref (e.g. a CDN-hosted scene) is left as-is here — those ARE resolved automatically at translate / render-preview / query-layout time (and by the deck compiler picsart_media_overview when called over MCP, though its bare runner does not self-fetch), so detach after a translate/preview/query has inlined it, or inline the piece locally. Unresolvable refs (unfetched remote URLs / unknown ids) are left as-is in bulk mode; in single-layer mode they error. Pure.
| Name | Type | Req | Description |
|---|---|---|---|
| layerId | string | – | Expand only this scene_ref layer; omit to expand every resolvable one |
| scene | object | yes | The MP Scene document containing the scene_ref(s) to detach |
No output schema declared.
No examples provided.
picsart_media_export ~449
Render a fully-authored MP Scene to a final file via the server-side `media-platform/v3/export` workflow, returning the output URL(s). The output container is chosen with `mediaType`: omit it (default) to render an MP4, or pass `mediaType:"png"` for a single still (`mov`/`webm`/`jpeg`/`webp`/`heif`/`gif`/`image-sequence` are also accepted). Unlike a pure scene→scene deck compiler, this performs the ACTUAL render: it translates the scene to a V3/Replay project and dispatches it to the export service over an authenticated HTTP call — no local renderer. Auth is handled by the platform automatically — no token setup needed on your end. Validate the scene (`picsart_media_validate_scene`) and check a frame (`picsart_media_contact_sheet` with `times:[t]` — sample one frame near the point you want to verify; it returns that frame as an inline image you can look at) BEFORE exporting. If you do not yet have a scene, get the whole sequence from picsart_media_quickstart rather than reverse-engineering the document shape from picsart_media_get_scene_schema.
| Name | Type | Req | Description |
|---|---|---|---|
| archive | boolean | – | image-sequence only: false -> per-frame urls[]; true -> one zip url |
| duration | number | – | Cap on rendered duration (seconds) from startTime |
| fps | number | – | Output frame rate (the export service requires fps >= 1) |
| imageFormat | string | – | Per-frame still codec for image-sequence (server default: png) |
| jpegQuality | number | – | JPEG quality 1-100 (jpeg outputs only) |
| mediaType | string | – | Output media type. Omit for the workflow default (mp4, full video) |
| resolution | object | – | Output resolution override in px (server-side downscale) |
| scene | – | yes | The MP Scene document to render, or an http(s):// URL to fetch it from |
| startTime | number | – | Scene time (seconds) of the rendered frame, for single-still media types |
| Name | Type | Req | Description |
|---|---|---|---|
| assets | array | yes | – |
| completed | number | – | – |
| created_at | string | – | – |
| drive | – | – | – |
| finalUrl | string | – | – |
| id | string | – | – |
| iterations | number | – | – |
| model | string | – | – |
| prompt | string | – | – |
| results | – | – | – |
| summary | string | – | – |
| url | string | – | – |
| urls | array | – | – |
| videos | array | – | – |
| why_relevant | string | – | – |
No examples provided.
picsart_media_get_capabilities ~396
Returns the MP SDK tool layer's capabilities: supported layer content kinds, animatable properties, effect ids, transition ids, and operational limits (max duration, max layers, max resolution). Call this first when planning a composition so subsequent calls stay within supported bounds. Omitting `sections` returns the section INDEX (names only); the full document is ~135KB, so pass `sections` to fetch only the slices you need, or ["all"] for the whole thing — PREFER the granular supports sub-keys over the whole `supports` block (e.g. ["effects","limits"] or ["generativeTemplates","limits"] for a montage plan). `looks` alone is ~62KB (full prose + full param schemas for all 17 looks) and can overflow a result cap even as the ONE section requested — ask for `looksCompact` (id/summary/params only, ~8KB) first to see what exists, then `looks` for the id you actually need. Top-level: supports, limits, engine, featureMatrix; supports sub-keys: effects, transitions, easing, blendModes, animatableProperties, textAnimationPresets, motionPresets, looks, looksCompact, layerContentKinds, sceneRefs, mask, generativeTemplates, presentation, export, templateModes, expressionAnimation. Idempotent and dependency-free; safe to cache.
| Name | Type | Req | Description |
|---|---|---|---|
| sections | array | – | Optional subset of capability sections to return. Omit to get the section INDEX (names only) — the full document is ~135KB, so fetch just the slices you need; pass ["all"] for the whole document. "lo… |
No output schema declared.
No examples provided.
picsart_media_get_scene_schema ~153
Returns the JSON Schema for an MP Scene document. Use this to construct valid scenes from scratch or to remind yourself of the exact shape of layers, animations, effects, and transitions before calling picsart_media_validate_scene or checking a frame with picsart_media_contact_sheet. The returned schema is authoritative; any document that validates against it is accepted by the renderer. Pass `name` (e.g. "MpMediaContent") to get back just that one definition instead of the full ~66 KB schema — its internal $refs point into the full schema's #/definitions.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | – | Optional single definition name (e.g. "MpMediaContent") to return instead of the full schema |
No output schema declared.
No examples provided.
picsart_media_list_fonts ~131
Returns the curated font catalog. Use this before authoring any text layer so `font.family` resolves to a real font: every entry has a stable `key` (passable directly in MpFont.family) and a resolved `.otf`/`.ttf` URL. The renderer has no system-font fallback — passing CSS family names like `Inter`, `Arial`, or `Helvetica` produces empty text and a `unknown_font_family` validation error. Agents may also pass a direct font URL matching `accepted_url_pattern`. The tool is dependency-free and idempotent; safe to cache.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
picsart_media_list_scene_templates ~92
Enumerate the curated MP Scene template catalog. Each entry summarises a reusable, parameterized scene (title cards, lower thirds, product cards, ...). Use this to discover templates by id/category/aspect before describing or applying one. Returns `{ templates: [{ id, displayName, description, category?, width, height, parameterCount }, ...] }`. Pure: no inputs, no state.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
picsart_media_overview ~381
Compile a presentation DECK (an MP Scene with one top-level `track` layer of `scene_ref` slide clips) into an OVERVIEW / 'badges' board: a single MP Scene that lays the SAME slide `scene_ref`s into a grid of shrunken thumbnails — same content, a spatial projection. Each cell is the page positioned at its grid-cell centre with `fit:"none"` and a baked contain-scale (the compiler resolves each page to read its real composition size, because `scene_ref.fit` fits against the whole composition, not a cell). Defaults: a near-square grid (`ceil(sqrt(n))` columns), the deck format for board size, and a duration long enough for every slide's entrance to settle. Carries the deck's `scenes`/`assets` so the refs still resolve. Override `cols`/`gap`/`width`/`height`/`duration`. Pure scene→scene; validate / preview / translate the output. NOT a capability index or a getting-started tool despite the name — it compiles thumbnails for an existing deck scene you already authored. If you are looking for 'what can this server do' or 'how do I do X', call picsart_media_quickstart instead.
| Name | Type | Req | Description |
|---|---|---|---|
| cols | number | – | Columns; default a near-square grid |
| duration | number | – | Board duration; defaults to the longest slide's content duration |
| gap | number | – | Gap between/around cells in board pixels; default 2% of board width |
| height | number | – | Board height; defaults to the deck format height |
| scene | object | yes | The presentation DECK (an MP Scene) to lay out as a grid of thumbnails |
| width | number | – | Board width; defaults to the deck format width |
No output schema declared.
No examples provided.
picsart_media_patch_scene ~591
Apply a batch of incremental, ID-ANCHORED edit ops to an MP Scene and return the patched result — the token-cheap alternative to re-emitting the entire scene on every edit. Three verbs: `set` (create-or-replace a value; last-write-wins, idempotent; `replace` is accepted as a first-class alias), `remove` (delete a field/array element, or an entire anchored entity when no `path` is given), and `add` (insert a new id-keyed layer/asset/audio/marker; requires `kind` and a `value` carrying the new entity's `id`). Address the target with exactly one ANCHOR + id — `layer`, `asset`, `audio`, or `marker` — never a root index path: `{op:"set",path:"layers/3/..."}` is rejected with `use_id_anchor` and a corrected anchored form embedded in the message; omit the anchor only for true document-root fields like `composition/*`, `version`, or `scenes/<id>`. `path` is a slash-separated RFC-6901-style pointer relative to the anchored entity (e.g. `content/text`, `effects/0/params/amount`) — `~0`/`~1` escapes are honored, and dot-separated paths fail strict with a slash-form hint. All ops in one call are ATOMIC: they apply sequentially against a single clone and the first failing op aborts the WHOLE batch with no partial result (a typed error carrying `code` and `opIndex`); the input scene is never mutated, and later ops see earlier ops' results. Validation runs INSIDE this tool: the patched result goes through the exact picsart_media_validate_scene pipeline (JSON-Schema structural pass + semantic rules) and any severity:error fails the whole batch loudly with the diagnostics — a success has already passed that pipeline, so do NOT call picsart_media_validate_scene again right after a successful patch; only validate once you've made further hand-edits outside this tool. (Validation proves conformance to the scene contract, not that every referenced remote asset or scene_ref is fetchable at render time.) Id-less collections — track clips, `transitions`, `animations`, `keyframes`, text `c…
| Name | Type | Req | Description |
|---|---|---|---|
| ops | array | yes | 1-64 id-anchored patch ops (set/remove/add) applied atomically |
| scene | – | yes | The MP Scene document to patch, or an http(s):// URL to fetch it from |
No output schema declared.
No examples provided.
picsart_media_probe_media ~488
Returns a remote media URL's metadata WITHOUT downloading the file: `kind` (image/video/audio), as-displayed `width`/`height` (EXIF orientation applied, plus the raw `orientation`), `durationSeconds` (mp4/mov/m4a), `contentType`, and total `bytes` — from at most two small ranged fetches (≤256KiB). Use this BEFORE authoring a scene to size compositions, pick `fit`, set clip windows to the real source duration, and reject wrong assets early — instead of shelling out to curl/ffprobe or guessing. Covers PNG/JPEG/GIF/WebP/HEIC/AVIF/SVG/TIFF dimensions and ISO-BMFF (mp4/mov/m4a) dimensions+duration, including moov-at-end files. Unrecognized containers still return `kind`/`contentType`/`bytes` plus a `notes[]` entry — dimensions are never invented. URLs are SSRF-guarded (public http(s) only; every redirect hop re-checked). Marked stochastic only because a URL's content can change between calls — probing an immutable asset is stable. Skip this call if you already know the asset's exact width/height/duration from a prior tool result (e.g. a generation tool's own response) — this is a cost-saving lookup, not a required gate. A missing `durationSeconds` means the duration is unknown — it is never emitted as 0 for a real zero-length clip. Fragmented MP4 / streaming uploads carry no duration in their container header, but this tool now recovers it for most of them by walking the file's fragment timeline, so a duration usually comes back anyway; when the field is still absent it genuinely could not be determined. That pass costs a few more small ranged reads than the two mentioned above — still bounded, still free, still no download. Do not assume 0; resolve it another way before computing trims. The response may also carry `fps`, `videoCodec`, `audioCodec` and `hasAudio` when they are derivable from the container — these are best-effort extras and are omitted rather than guessed.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | yes | Public http(s) URL of the media to probe (SSRF-guarded ranged fetch, file is not downloaded) |
No output schema declared.
No examples provided.
picsart_media_query_layout ~621
Resolves where every layer ACTUALLY LANDS in the root composition at a given time — without rendering pixels. Runs the engine's Scene Query System and returns each layer's final geometry in root-composition space: `box {x,y,width,height}` (top-left pixels), `center`, `rotationDeg`, paint-order `zIndex`, `visible`/`active`, an `onCanvas` coverage flag (`full`/`partial`/`off`), `timing`, and composition/parent/nesting. This is the cheap, structured answer to 'what does my composition look like, spatially?' — use it instead of (or before) checking a rendered frame (`picsart_media_contact_sheet`) to verify positions, sizes, overlap, off-canvas layers, and stacking order, since reasoning over numbers beats eyeballing a PNG. Coordinates are ALWAYS top-left pixels in root space for BOTH engines — the query layer unifies Jet's pixel coords and V3's internal normalized coords, so a layer WITH RESOLVED GEOMETRY reports the same box on `jet` or `v3` (the `engine` arg only changes the translation path). Text is the exception (see limitations). Nested children (scene_ref/look comps) are returned too, namespaced (e.g. `a__bg`) with `nestingLevel` and `composition`; inactive layers at the queried time come back marked `active:false` with their box omitted. Set `verbose:true` to also get raw 4x4 transform matrices and the per-component transform chain (for transform-editing tools); omit it for layout reasoning. Determinism is deterministic — identical (scene,time,engine) returns an identical report. Limitations: (1) text layers — the query system does not resolve laid-out glyph bounds, so a text layer's POSITION/center is accurate but its box size is a placeholder (Jet 0x0, V3 ~2000x1); a `notes[]` entry flags any layer with a degenerate dimension. (2) multi-group V3 scenes may need a `sceneContext` (e.g. { canvasGroupId }); single-composition scenes do not. (3) GEOMETRY ONLY — this is NOT a render/export gate. The query is GL-free and never resolves effects, assets, codecs, or en…
| Name | Type | Req | Description |
|---|---|---|---|
| engine | string | – | Target engine translator: "jet" or "v3" (coordinate convention is identical either way) |
| scene | – | yes | The MP Scene document to query, or an http(s):// URL to fetch it from |
| time | number | yes | Scene time (seconds) at which to resolve layer geometry |
| verbose | boolean | – | Include raw transform matrices + component chain per layer (default false) |
No output schema declared.
No examples provided.
picsart_media_quickstart ~86
Call FIRST when the user asks how to accomplish a media task (merge/concat videos, make a contact sheet, or export/render a scene). Returns ready-to-run picsart_media_* tool-call sequences. Omit `recipe` for the index.
| Name | Type | Req | Description |
|---|---|---|---|
| recipe | string | – | Omit for the recipe index; pass one for its step-by-step tool-call sequence |
No output schema declared.
No examples provided.
picsart_media_resolve_looks ~176
Expand every by-reference look (each layer's `looks[]` annotation) in an MP Scene into its concrete nested composition, returning a SELF-CONTAINED scene — the preset logic baked in, no look-catalog dependency at render time. The explicit, on-demand counterpart of the just-in-time resolution that picsart_media_translate_scene / picsart_media_contact_sheet / picsart_media_query_layout already do internally. Use it to 'flatten' a thin look-annotated scene into a portable one (e.g. to hand off, archive, or edit the expanded layers directly). Idempotent: a scene with no `looks[]` returns unchanged. Pure: takes the full scene by value, returns a new scene.
| Name | Type | Req | Description |
|---|---|---|---|
| scene | object | yes | The MP Scene document whose by-reference looks should be expanded |
No output schema declared.
No examples provided.
picsart_media_translate_scene ~247
Translate an MP Scene document into an engine's project format, WRITE it to a content-addressed file, and return `{ path, cached, summary }`. The engine project itself is NOT inlined — a large scene's project can be ~100 KB of JSON and would overflow this tool's result token cap, so it goes to disk (under MP_AI_OUTPUT_DIR/projects/<hash>.<engine>.json) and you get a path plus a compact summary. The target engine is chosen by `engine` (default `v3` → a full, openable Replay file `{ meta, context:{layers,…}, actions, settings }`; `jet` → a Jet `{ compositions, activeCompositionID, ColorSpace }` project). Read the file when you need the full project. Validate the scene first; the translator does not re-validate. Deterministic: identical (scene, engine) hash to the same path (`cached:true` on a repeat).
| Name | Type | Req | Description |
|---|---|---|---|
| engine | string | – | Target engine: "v3" (default) or "jet" |
| scene | – | yes | The MP Scene document to translate, or an http(s):// URL to fetch it from |
No output schema declared.
No examples provided.
picsart_media_upload ~459
Opens a drag-and-drop upload widget so the user can get a local image/video/audio file into this conversation as a URL — no filesystem access on your side, and no external CLI needed. Call this whenever a user wants to use a local file with any picsart_media_* tool, or after a local-path argument was refused with a `local_source_not_supported` error. Call with no arguments to just open it. Optional `purpose` labels the dropzone; `accept` restricts file kind; `detected_files` is a BEST-EFFORT, MODEL-SUPPLIED label hint ONLY — e.g. filenames you can see attached in this conversation but have no other way to reach — the widget shows it purely as a suggestion ("Drop clip.mp4 here") and NEVER filters or rejects what the user actually drops, since this hint can be wrong or hallucinated; `known_urls` seeds pickable chips in a "Use existing" tab from URLs already produced earlier in this conversation. The upload itself happens directly in the user's browser to Picsart's CDN — no bytes pass through this tool. Once the user finishes (or picks existing URLs), the widget reports the resulting URL(s) back into the conversation. This is a two-turn handshake: this call only OPENS the widget and returns no URL(s) itself — they arrive on the user's NEXT message, not in this call's result.
| Name | Type | Req | Description |
|---|---|---|---|
| accept | string | – | Restricts the dropzone to one media kind. Omit to accept anything. |
| detected_files | array | – | Filenames you can see attached in this conversation (e.g. a chat attachment you have no other way to reach). BEST-EFFORT LABEL HINT ONLY, never a filter: this is model-supplied and can be hallucinate… |
| known_urls | array | – | URLs already produced earlier in this conversation (by this tool or another), offered in the widget as pickable chips under "Use existing". |
| purpose | string | – | Short label for what the file is for, shown in the widget's dropzone, e.g. "the video you want to upscale". |
| Name | Type | Req | Description |
|---|---|---|---|
| accept | string | – | – |
| capabilities | object | – | – |
| detectedFiles | array | – | – |
| drive | object | – | – |
| ingested | object | – | – |
| knownUrls | array | – | – |
| purpose | string | – | – |
| seedVersion | number | – | – |
| tools | object | – | – |
No examples provided.
picsart_media_validate_scene ~128
Validates an MP Scene document and returns a list of structured diagnostics. Use this whenever you've assembled or modified a scene, especially before rendering. Each diagnostic carries a JSON path, a stable machine-readable `code`, a human-readable `message`, and optional `hints`. A scene is considered valid when no diagnostic has severity `error`. The tool is pure: it takes the full scene in and returns diagnostics; if you keep editing, call again with the updated scene.
| Name | Type | Req | Description |
|---|---|---|---|
| scene | – | yes | The MP Scene document to validate, or an http(s):// URL to fetch it from |
No output schema declared.
No examples provided.
picsart_model_catalog ~800
Returns the Picsart AI model catalog as plain data — renders NO widget or UI. Use this when YOU (the assistant) need catalog knowledge for your own reasoning: picking a model before `picsart_generate`, answering "which models support X", or comparing options — without pushing a model-picker widget into the conversation. When the user wants to SEE or browse models visually, use `picsart_list_models` instead (it renders the Picsart Studio picker). Same filters and result shape as `picsart_list_models`, but every item is rich by default: `id`, `name`, `mode`, `inputType`, `provider`, `badges`, `description`, plus `supportedAspectRatios`/`supportedResolutions` when the model declares an enum for that param — enough to answer "which models support 16:9" without `picsart_model_params`. Do NOT use it to fetch a single model's FULL parameter schema (use `picsart_model_params`) or estimate per-call cost (use `picsart_preflight`). Inputs (all optional): `mode` (filter to image/video/audio/text — text = LLM models that return generated text), `provider` (case-insensitive substring like "flux", "kling", "google"), `acceptsImage` (true → only models that take an image input — i2i, i2v, i2t), `acceptsVideo` (true → only models that take a video input — v2v, v2a, v2t), `acceptsAudio` (true → only models that take an audio input — a2v, sts), `inputType` (exact-match escape hatch; one of t2v/i2v/v2v/a2v/t2i/i2i/t2a/v2a/tts/sts/sfx/music/t2t/i2t/v2t), `limit` (1–100, default 20), `concise` (default false; when true items carry only id/name/mode/inputType plus the ratio/resolution fields, to save tokens). inputType codes — first letter is input modality, second is output: t2i (text→image), i2i (image→image), t2v (text→video), i2v (image→video), v2v (video→video), a2v (audio→video), t2a (text→audio), v2a (video→audio), tts (text-to-speech), sts (speech-to-speech), sfx (sound effects), music (music gen), t2t/i2t/v2t (LLM text output from text/image/video input). Example: `{ mode: "audi…
| Name | Type | Req | Description |
|---|---|---|---|
| acceptsAudio | boolean | – | Only return models that accept an audio input (a2v, sts) |
| acceptsImage | boolean | – | Only return models that accept an image input (i2i, i2v) |
| acceptsVideo | boolean | – | Only return models that accept a video input (v2v, v2a) |
| concise | boolean | – | When true, items carry only id/name/mode/inputType. Default false (rich items). |
| inputType | string | – | Exact inputType match (e.g. "i2v") |
| limit | integer | – | Max items to return (1–100, default 20) |
| mode | string | – | Filter by generation mode |
| provider | string | – | Provider substring (e.g. "kling", "flux", "google") |
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | yes | – |
| total | number | yes | – |
| truncated | boolean | yes | – |
No examples provided.
picsart_model_params ~205
Returns the parameter schema for a specific Picsart model — a map of param name to descriptor ({ type, required, default, enum, min, max, step, label, accept }). Use this once you have a model id and need to construct the params payload for `picsart_generate` or feed `picsart_preflight` with a candidate object. Do NOT use it to discover which models exist (use `picsart_list_models`) or estimate cost (use `picsart_preflight`). Required input: `model` id. Example: `{ model: "flux-2-pro" }`. Returns `{ model, schema: { <paramName>: { type: "string"|"number"|"boolean"|"file", required?, default?, enum?, min?, max?, step?, label?, accept? } } }`. Read-only; spends no credits and works without authentication.
| Name | Type | Req | Description |
|---|---|---|---|
| model | string | yes | Model ID (e.g. "flux-2-pro") |
| Name | Type | Req | Description |
|---|---|---|---|
| model | string | yes | – |
| schema | object | yes | – |
No examples provided.
picsart_preflight ~274
Free pre-flight check before `picsart_generate`: in ONE call it (1) validates a candidate params object against the model's parameter schema + inter-parameter constraints, and (2) quotes the credit cost — without running the model or charging the user. Use this after assembling params (user input, derived defaults, model swaps) and before generating, to surface bad arguments and show cost. Do NOT use it to look up which params a model accepts (use `picsart_model_params`) or to actually generate (use `picsart_generate`). Required inputs: `model` id and a `params` object (put the `prompt` inside `params`). Example: `{ model: "flux-2-pro", params: { prompt: "a cat in a hat", aspectRatio: "1:1", count: 1 } }`. Returns `{ model, valid, errors?, credits }`: `valid`/`errors` are from local validation (always present, no auth needed; `errors` only when invalid); `credits` is the dry-run cost (a number), or `null` when pricing is unavailable or the request is unauthenticated.
| Name | Type | Req | Description |
|---|---|---|---|
| model | string | yes | Model ID |
| params | object | yes | Candidate params (include the prompt). Validated locally and priced. |
| Name | Type | Req | Description |
|---|---|---|---|
| credits | number|null | yes | – |
| errors | array | – | – |
| model | string | yes | – |
| valid | boolean | yes | – |
No examples provided.
picsart_remove_bg ~380
Removes the background from an image, returning a transparent cutout of the foreground subject. Auto-picks the newest enabled Picsart remove-bg model unless overridden via the `model` param — no need to call `picsart_list_models` first. Use this when the user asks to "remove the background", "cut out the subject", or "make the background transparent". Do NOT use this to replace the background with a new scene (use `picsart_change_bg`), upscale or sharpen the result (use `picsart_enhance`), convert raster to SVG (use `picsart_vectorize`), or generate a new image from scratch (use `picsart_generate`). Required input: `image` — a publicly-accessible URL. Local files are not supported; if you only have a local file, first make it available as a public or app-authorized URL. Optional: `model` to pin a specific remove-bg model, `outputFormat` (e.g. "png"). Example: `{ image: "https://example.com/portrait.jpg" }`. Returns `{ assets, id, model, created_at, summary, why_relevant, url, results: [{ url, metadata? }], drive? }` as a single JSON text block plus matching structuredContent (no `resource_link` blocks — the widget is the single source of visual truth, so result URLs are not duplicated as separate content blocks). `id` is the SDK's generation handle; `metadata` may include model-specific tags. Spends credits. Requires Authorization: Bearer <picsart_token>.
| Name | Type | Req | Description |
|---|---|---|---|
| image | string | yes | Input image URL |
| model | string | – | Override model ID (e.g. "picsart-sod-v8-2") |
| outputFormat | string | – | Output format (e.g. "png") |
| Name | Type | Req | Description |
|---|---|---|---|
| assets | array | yes | – |
| completed | number | – | – |
| created_at | string | – | – |
| drive | – | – | – |
| finalUrl | string | – | – |
| id | string | – | – |
| iterations | number | – | – |
| model | string | – | – |
| prompt | string | – | – |
| results | – | – | – |
| summary | string | – | – |
| url | string | – | – |
| urls | array | – | – |
| videos | array | – | – |
| why_relevant | string | – | – |
No examples provided.
picsart_vectorize ~334
Converts a raster image (PNG, JPG) into an SVG vector. Auto-picks the newest enabled Picsart vectorize model unless overridden via the `model` param. Use this when the user asks to "vectorize", "convert to SVG", "make this a vector", or wants a scalable version of a logo or icon. Best results on logos, icons, and simple graphics — photographic images vectorize poorly and the user should be warned. Do NOT use this to remove the background (use `picsart_remove_bg`), replace the background (use `picsart_change_bg`), upscale a raster image (use `picsart_enhance`), or generate a new image (use `picsart_generate`). Required input: `image` — a publicly-accessible URL to a PNG or JPG (not a local file path). Optional: `model` to pin a specific vectorize model. Example: `{ image: "https://example.com/logo.png" }`. Returns `{ assets, id, model, created_at, summary, why_relevant, url, results: [{ url, metadata? }], drive? }` as a single JSON text block plus matching structuredContent (no `resource_link` block for the SVG URL — the widget is the single source of visual truth, so it is not duplicated as a separate content block). `id` is the SDK's generation handle. Clients fetch the SVG from that URL. Spends credits. Requires Authorization: Bearer <picsart_token>.
| Name | Type | Req | Description |
|---|---|---|---|
| image | string | yes | Input image URL |
| model | string | – | Override model ID |
| Name | Type | Req | Description |
|---|---|---|---|
| assets | array | yes | – |
| completed | number | – | – |
| created_at | string | – | – |
| drive | – | – | – |
| finalUrl | string | – | – |
| id | string | – | – |
| iterations | number | – | – |
| model | string | – | – |
| prompt | string | – | – |
| results | – | – | – |
| summary | string | – | – |
| url | string | – | – |
| urls | array | – | – |
| videos | array | – | – |
| why_relevant | string | – | – |
No examples provided.
What is the Picsart GenAI MCP server?
Picsart GenAI is an MCP server listed in the public MCP registry as com.picsart.api/gen-ai. Generate and edit images, videos, and audio with 150+ models from 20+ vendors. This page covers its hosted endpoint (https://api.picsart.com/gen-ai/mcp).
Is the Picsart GenAI MCP server safe to use?
Picsart GenAI scores 39 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Picsart GenAI MCP server expose?
Picsart GenAI exposes 34 tools: picsart_drive, picsart_remove_bg, picsart_change_bg, picsart_enhance, picsart_vectorize, and 29 more. Their descriptions and schemas cost roughly 12,855 tokens of context every time the server is loaded.
Does the Picsart GenAI MCP server require authentication?
Yes. Picsart GenAI asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.
Is the Picsart GenAI MCP server still maintained?
Picsart GenAI is still listed as active in the MCP registry. We last reached this channel on 2 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.