Built-in creative playbooks can be explored and loaded with playground_skills_discover and playground_skill_load without projectId. Include a project only for its private skills. Use playground_actions_discover to find available editing actions; do not advertise actions it marks unavailable. Workflow inspection displays editable inputs in capable chat hosts. Use playground_workflow_inputs_set to save free edits and playground_workflow_quote to price the next stage; the form cannot approve charges. For partial failures, use playground_run_delivery.recovery and playground_media_retry_quote to quote only confirmed failed receipts, including individual List items. Never rerun the whole List to replace one failure. Saved workflows: use playground_workflow_search and playground_workflow_inspect to discover typed inputs and dependencies; set text/List inputs with playground_workflow_inputs_set. Quote ready stages with playground_workflow_run, confirm in chat, poll jobs, then inspect and quote dependent stages. Connected List batches up to 20 outputs are supported directly by node_run. Do not redirect a batch to the canvas or disabled Berrys agent. Unless the user explicitly selects another model, use google:nano-banana-2 (Nano Banana 2) for images and bytedance:seedance-2.0-mini (Seedance 2.0 Mini) for videos. Preserve model selections already configured on existing nodes. If the default is unavailable or incompatible, explain and ask before substituting. Completed media includes native image content. Forward that native content to the user when the host supports it; do not replace working previews with Markdown embeds of the original storage URL. If native display is unavailable, provide clearly labelled original-file and Playground links. Never claim a preview was displayed without verifying it. Match tools to the user’s request. For greetings, brainstorming without a request to generate, help, or what Berrys can do, answer without reading, listing, creating or opening p
Discoverability
1/6 passed1 of 6 passed17/100
Client listings and public setup information.
mcp.json or server-card.json
Either mcp.json or an MCP Server Card declaring this endpoint passes.
The MCP Server Card declares this server's exact endpoint.
How to fix: For tools that render a UI resource, add openai/toolInvocation with string fields invoking and invoked (present-tense labels shown while the tool runs and after it finishes, e.g. "Searching…" / "Searched").
How to fix: For ChatGPT submission, set one exact HTTPS origin such as "https://app.example.com" on every view via _meta.ui.domain (or openai/widgetDomain). Paths are not valid and all views in one app must share the origin.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description75/100
List active Drive, Shopify, Meta Ads, and Gmail accounts and read-only operation names. Uses the signed-in user’s connected accounts and project access.
Describe the returned information so the agent knows whether it will answer the request.
Inputs0/100
0 of 1 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description88/100
Execute one allowlisted read with the exact connected account ID and discovered tool version. Returns bounded source data and a receipt; no external write or export is possible.
Describe the returned information so the agent knows whether it will answer the request.
Inputs0/100
0 of 5 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
accountId
Not provided
Missing description. Explain what this value means and how to supply it.
operationId
Not provided
Missing description. Explain what this value means and how to supply it.
version
Not provided
Missing description. Explain what this value means and how to supply it.
arguments
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description73/100
Fetch bounded metadata for an explicitly supplied HTTPS social-platform link. This does not watch its video or audio. Requires a creative-task grant because it invokes an external scraper.
Describe the returned information so the agent knows whether it will answer the request.
Inputs0/100
0 of 2 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
url
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
{
"title": "Inspect a supplied social link",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "playground_external_link_inspect",
"title": "Inspect a supplied social link",
"description": "Fetch bounded metadata for an explicitly supplied HTTPS social-platform link. This does not watch its video or audio. Requires a creative-task grant because it invokes an external scraper.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"projectId",
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"maxLength": 2000
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
},
"annotations": {
"title": "Inspect a supplied social link",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description86/100
Discover every Playground node type, what it consumes and produces, and which agent actions are currently supported. Use this before planning graph changes.
The description explains the capability, when to use it, and what to expect.
Inputs0/100
0 of 1 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description92/100
Reconcile and read one media dispatch receipt by ID. Completed images include a native image preview, original media link and Playground URL; display the native image content when supported. Pass waitSeconds (up to 25) to have the server wait for the job to finish (completed, failed, or needs_reconciliation) before answering; retry_after_seconds is null once it has settled. Safe to poll after the run completes or the client disconnects.
The description explains the capability, when to use it, and what to expect.
Inputs25/100
1 of 3 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
dispatchId
Not provided
Missing description. Explain what this value means and how to supply it.
waitSeconds
Optional long poll: wait up to this many seconds (0–25, default 0) on the server for a change before returning.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
{
"title": "Get a Playground media job",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "playground_media_job_get",
"title": "Get a Playground media job",
"description": "Reconcile and read one media dispatch receipt by ID. Completed images include a native image preview, original media link and Playground URL; display the native image content when supported. Pass waitSeconds (up to 25) to have the server wait for the job to finish (completed, failed, or needs_reconciliation) before answering; retry_after_seconds is null once it has settled. Safe to poll after the run completes or the client disconnects.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"projectId",
"dispatchId"
],
"properties": {
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"dispatchId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"waitSeconds": {
"type": "integer",
"default": 0,
"maximum": 25,
"minimum": 0,
"description": "Optional long poll: wait up to this many seconds (0–25, default 0) on the server for a change before returning."
}
}
},
"annotations": {
"title": "Get a Playground media job",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description92/100
Cancel one queued agent image or video job and release its credit hold. A processing provider job cannot be cancelled by this tool. Requires project edit access.
The description explains the capability, when to use it, and what to expect.
Inputs0/100
0 of 2 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
dispatchId
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations100/100
All four behavior hints are declared.
{
"title": "Cancel a queued Playground media job",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "playground_media_job_cancel",
"title": "Cancel a queued Playground media job",
"description": "Cancel one queued agent image or video job and release its credit hold. A processing provider job cannot be cancelled by this tool. Requires project edit access.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"projectId",
"dispatchId"
],
"properties": {
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"dispatchId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
},
"annotations": {
"title": "Cancel a queued Playground media job",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description92/100
Remember a user decision or verified project fact, with optional source node citations. It takes effect immediately: the Playground agent reads remembered notes in every later turn, the same way it remembers what users tell it. Requires project edit access.
The description explains the capability, when to use it, and what to expect.
Inputs0/100
0 of 5 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
scope
Not provided
Missing description. Explain what this value means and how to supply it.
kind
Not provided
Missing description. Explain what this value means and how to supply it.
content
Not provided
Missing description. Explain what this value means and how to supply it.
sourceNodeIds
Not provided
Missing description. Explain what this value means and how to supply it.
Confirm a complete quoted generation batch in chat
Shorten the title to an action and subject; move usage details into the description.
Description95/100
After explicit user confirmation of exact inputs and total credits, submit all selected direct-generation approvals from one run in one call. Pass confirmation.items and totalCredits from the prepared request as items and maxCredits. Validates all client/user/run bindings before dispatch; preserves already-submitted items on retries and reports every partial failure. Never call before user confirmation. No Berrys review-page click is needed.
The description explains the capability, when to use it, and what to expect.
Inputs0/100
0 of 7 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
runId
Not provided
Missing description. Explain what this value means and how to supply it.
decision
Not provided
Missing description. Explain what this value means and how to supply it.
maxCredits
Not provided
Missing description. Explain what this value means and how to supply it.
items › items › approvalId
Not provided
Missing description. Explain what this value means and how to supply it.
items › items › inputFingerprint
Not provided
Missing description. Explain what this value means and how to supply it.
items › items › maxCredits
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations100/100
All four behavior hints are declared.
{
"title": "Confirm a complete quoted generation batch in chat",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "playground_generation_confirm",
"title": "Confirm a complete quoted generation batch in chat",
"description": "After explicit user confirmation of exact inputs and total credits, submit all selected direct-generation approvals from one run in one call. Pass confirmation.items and totalCredits from the prepared request as items and maxCredits. Validates all client/user/run bindings before dispatch; preserves already-submitted items on retries and reports every partial failure. Never call before user confirmation. No Berrys review-page click is needed.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"projectId",
"runId",
"decision",
"maxCredits",
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"approvalId",
"inputFingerprint",
"maxCredits"
],
"properties": {
"approvalId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"maxCredits": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"inputFingerprint": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
}
}
},
"maxItems": 20,
"minItems": 1
},
"runId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"decision": {
"enum": [
"approve",
"reject"
],
"type": "string"
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"maxCredits": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
}
},
"annotations": {
"title": "Confirm a complete quoted generation batch in chat",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description87/100
After showing the exact prompts, references and total credits in chat and receiving the user’s explicit confirmation, approve or reject one direct generation request created by this client. Approval submits a paid job. Pass its inputFingerprint and maxCredits from the prepared request. Never call approve before the user confirms. Cannot approve another client’s requests or delegated agent plans.
Describe the returned information so the agent knows whether it will answer the request.
Inputs0/100
0 of 5 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
approvalId
Not provided
Missing description. Explain what this value means and how to supply it.
decision
Not provided
Missing description. Explain what this value means and how to supply it.
inputFingerprint
Not provided
Missing description. Explain what this value means and how to supply it.
maxCredits
Not provided
Missing description. Explain what this value means and how to supply it.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description83/100
After two failed assembly attempts, validate the ordered Playground clips and queue another bounded FFmpeg assembly attempt. This does not submit a paid media generation job.
The description explains the capability, when to use it, and what to expect.
Inputs0/100
0 of 2 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
runId
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations100/100
All four behavior hints are declared.
{
"title": "Retry a prepared film assembly",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "playground_film_assembly_retry",
"title": "Retry a prepared film assembly",
"description": "After two failed assembly attempts, validate the ordered Playground clips and queue another bounded FFmpeg assembly attempt. This does not submit a paid media generation job.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"projectId",
"runId"
],
"properties": {
"runId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
},
"annotations": {
"title": "Retry a prepared film assembly",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description89/100
Read a run’s final response and persisted canvas or media receipts, with native image previews (up to four) and original media links. Display the native image content when supported; canvasUrl is a link, not a command to open a browser. For more than four images, follow previewPage.nextOffset with previewOffset to display every page without regenerating. The verified flag is false until all required output evidence is present.
The description explains the capability, when to use it, and what to expect.
Inputs0/100
0 of 3 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
runId
Not provided
Missing description. Explain what this value means and how to supply it.
previewOffset
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "playground_run_delivery",
"title": "Get verified Playground delivery",
"description": "Read a run’s final response and persisted canvas or media receipts, with native image previews (up to four) and original media links. Display the native image content when supported; canvasUrl is a link, not a command to open a browser. For more than four images, follow previewPage.nextOffset with previewOffset to display every page without regenerating. The verified flag is false until all required output evidence is present.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"projectId",
"runId"
],
"properties": {
"runId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"previewOffset": {
"type": "integer",
"default": 0,
"maximum": 1000,
"minimum": 0
}
}
},
"annotations": {
"title": "Get verified Playground delivery",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
Create a short-lived signed URL for one image, video, or audio reference. Upload bytes to signedUrl with the declared Content-Type, then call playground_media_upload_complete. The URL is scoped to your user, project, and OAuth client. For a file attached in chat, prefer playground_asset_import with file. If your environment cannot reach signedUrl, stop and ask the user to choose Add image on the Berrys canvas (playground_canvas_open) instead of retrying.
Describe the returned information so the agent knows whether it will answer the request.
Inputs0/100
0 of 3 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
filename
Not provided
Missing description. Explain what this value means and how to supply it.
mimeType
Not provided
Missing description. Explain what this value means and how to supply it.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "playground_media_upload_begin",
"title": "Start a Playground reference upload",
"description": "Create a short-lived signed URL for one image, video, or audio reference. Upload bytes to signedUrl with the declared Content-Type, then call playground_media_upload_complete. The URL is scoped to your user, project, and OAuth client. For a file attached in chat, prefer playground_asset_import with file. If your environment cannot reach signedUrl, stop and ask the user to choose Add image on the Berrys canvas (playground_canvas_open) instead of retrying.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"projectId",
"filename",
"mimeType"
],
"properties": {
"filename": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"mimeType": {
"enum": [
"image/png",
"image/jpeg",
"image/webp",
"video/mp4",
"audio/mpeg",
"audio/wav"
],
"type": "string"
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
},
"annotations": {
"title": "Start a Playground reference upload",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description90/100
Verify the signed upload by server-owned path, actual byte size and media signature, then add one editable file node at the current canvas revision. Repeating the same upload ID returns the original node receipt.
Describe the returned information so the agent knows whether it will answer the request.
Inputs0/100
0 of 3 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
uploadId
Not provided
Missing description. Explain what this value means and how to supply it.
expectedRevision
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations100/100
All four behavior hints are declared.
{
"title": "Attach an uploaded reference to Playground",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "playground_media_upload_complete",
"title": "Attach an uploaded reference to Playground",
"description": "Verify the signed upload by server-owned path, actual byte size and media signature, then add one editable file node at the current canvas revision. Repeating the same upload ID returns the original node receipt.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"projectId",
"uploadId",
"expectedRevision"
],
"properties": {
"uploadId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"expectedRevision": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
}
},
"annotations": {
"title": "Attach an uploaded reference to Playground",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description84/100
Create ready-to-generate video shot nodes connected to text nodes inside a selected text group. This only prepares nodes; it does not submit paid video jobs. Requires the latest canvas revision.
Describe the returned information so the agent knows whether it will answer the request.
Inputs0/100
0 of 9 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
expectedRevision
Not provided
Missing description. Explain what this value means and how to supply it.
sourceNodeId
Not provided
Missing description. Explain what this value means and how to supply it.
modelId
Not provided
Missing description. Explain what this value means and how to supply it.
aspectRatio
Not provided
Missing description. Explain what this value means and how to supply it.
shots › items › sourceTextNodeId
Not provided
Missing description. Explain what this value means and how to supply it.
shots › items › prompt
Not provided
Missing description. Explain what this value means and how to supply it.
shots › items › duration
Not provided
Missing description. Explain what this value means and how to supply it.
idempotencyKey
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations100/100
All four behavior hints are declared.
{
"title": "Prepare connected video shots from a text group",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "playground_storyboard_prepare",
"title": "Prepare connected video shots from a text group",
"description": "Create ready-to-generate video shot nodes connected to text nodes inside a selected text group. This only prepares nodes; it does not submit paid video jobs. Requires the latest canvas revision.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"projectId",
"expectedRevision",
"sourceNodeId",
"modelId",
"aspectRatio",
"shots",
"idempotencyKey"
],
"properties": {
"shots": {
"type": "array",
"items": {
"type": "object",
"required": [
"sourceTextNodeId",
"prompt",
"duration"
],
"properties": {
"prompt": {
"type": "string",
"maxLength": 1000,
"minLength": 1
},
"duration": {
"type": "integer",
"maximum": 15,
"minimum": 4
},
"sourceTextNodeId": {
"type": "string",
"maxLength": 150,
"minLength": 1
}
}
},
"maxItems": 12,
"minItems": 1
},
"modelId": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"aspectRatio": {
"enum": [
"16:9",
"9:16",
"1:1"
],
"type": "string"
},
"sourceNodeId": {
"type": "string",
"maxLength": 150,
"minLength": 1
},
"idempotencyKey": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"expectedRevision": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
}
},
"annotations": {
"title": "Prepare connected video shots from a text group",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
Update only the common title and/or canvas position of any user-facing Playground node. This is non-paid, revision-checked, idempotent, and returns the previous values for a follow-up undo command. Node-specific content is not changed.
The description explains the capability, when to use it, and what to expect.
Inputs0/100
0 of 7 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
nodeId
Not provided
Missing description. Explain what this value means and how to supply it.
title
Not provided
Missing description. Explain what this value means and how to supply it.
position › x
Not provided
Missing description. Explain what this value means and how to supply it.
position › y
Not provided
Missing description. Explain what this value means and how to supply it.
expectedRevision
Not provided
Missing description. Explain what this value means and how to supply it.
idempotencyKey
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations100/100
All four behavior hints are declared.
{
"title": "Rename or reposition a Playground node",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "playground_canvas_update_node_layout",
"title": "Rename or reposition a Playground node",
"description": "Update only the common title and/or canvas position of any user-facing Playground node. This is non-paid, revision-checked, idempotent, and returns the previous values for a follow-up undo command. Node-specific content is not changed.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"projectId",
"nodeId",
"expectedRevision",
"idempotencyKey"
],
"properties": {
"title": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"nodeId": {
"type": "string",
"maxLength": 150,
"minLength": 1
},
"position": {
"type": "object",
"required": [
"x",
"y"
],
"properties": {
"x": {
"type": "number",
"maximum": 1000000,
"minimum": -1000000
},
"y": {
"type": "number",
"maximum": 1000000,
"minimum": -1000000
}
}
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"idempotencyKey": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"expectedRevision": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
}
},
"annotations": {
"title": "Rename or reposition a Playground node",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description88/100
Apply one atomic, revision-checked, idempotent batch of non-paid canvas edits: create_node (text, image, video, video-stitch, comment, image-compare, output-gallery, video-frame-grab, list-node), update_node, connect, disconnect, group, ungroup, delete and tidy. Refer to nodes created earlier in the batch as "$name". Nodes without a position are placed in free space beside what feeds them. Connections use the same handle rules as the browser; image → video accepts role first_frame, last_frame or reference; image-compare takes two images, output-gallery collects images, and video-frame-grab takes one clip (framePosition first or last). A list-node takes items (text, one per run); connect it to an image node and that node runs once per item when generated (set batchCombineMode cross or zip on the image node for two lists). The batch commits as one reversible revision, or nothing changes. It never starts generation.
Describe the returned information so the agent knows whether it will answer the request.
Inputs0/100
0 of 57 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
expectedRevision
Not provided
Missing description. Explain what this value means and how to supply it.
idempotencyKey
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 0 › op
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 0 › ref
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 0 › type
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 0 › title
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 0 › position › x
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 0 › position › y
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 0 › text
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 0 › prompt
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 0 › instructions
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 0 › modelId
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 0 › aspectRatio
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 0 › duration
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 0 › framePosition
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 0 › items
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 0 › batchCombineMode
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 0 › voice
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 0 › style
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 1 › op
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 1 › node
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 1 › title
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 1 › position › x
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 1 › position › y
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 1 › text
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 1 › prompt
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 1 › instructions
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 1 › modelId
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 1 › aspectRatio
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 1 › duration
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 1 › framePosition
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 1 › items
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 1 › batchCombineMode
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 1 › voice
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 1 › style
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 2 › op
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 2 › source
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 2 › target
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 2 › role
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 3 › op
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 3 › edgeId
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 3 › source
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 3 › target
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 4 › op
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 4 › ref
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 4 › nodes
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 4 › title
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 4 › color
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 4 › grid › columns
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 5 › op
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 5 › group
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 6 › op
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 6 › nodes
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 7 › op
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 7 › nodes
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › oneOf › 7 › group
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations100/100
All four behavior hints are declared.
{
"title": "Edit the Playground canvas in one batch",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
Undo every canvas change one agent run made, newest first, as one new revision. If someone has edited those nodes since, nothing changes and the conflicting node/edge IDs are returned; pass force=true only after confirming the later edits may be discarded. Generated media and credits are not refunded by a revert.
Describe the returned information so the agent knows whether it will answer the request.
Inputs0/100
0 of 5 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
runId
Not provided
Missing description. Explain what this value means and how to supply it.
expectedRevision
Not provided
Missing description. Explain what this value means and how to supply it.
idempotencyKey
Not provided
Missing description. Explain what this value means and how to supply it.
force
Not provided
Missing description. Explain what this value means and how to supply it.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
Replace the whole canvas with a snapshot, as one new revision. The current canvas is snapshotted first, so the restore can itself be undone. Discards every change made after the snapshot; prefer playground_run_revert for undoing one run.
The description explains the capability, when to use it, and what to expect.
Inputs0/100
0 of 4 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
snapshotId
Not provided
Missing description. Explain what this value means and how to supply it.
expectedRevision
Not provided
Missing description. Explain what this value means and how to supply it.
idempotencyKey
Not provided
Missing description. Explain what this value means and how to supply it.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description80/100
Discover what you can make with Berrys without selecting or reading a project. Omit projectId for a general overview. For a chosen project, include projectId to check permissions before editing. Internal flags are for tool routing; explain only task-relevant limits to the user.
Describe the returned information so the agent knows whether it will answer the request.
Inputs0/100
0 of 1 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
{
"title": "Discover what you can make with Berrys",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "playground_capabilities_discover",
"title": "Discover what you can make with Berrys",
"description": "Discover what you can make with Berrys without selecting or reading a project. Omit projectId for a general overview. For a chosen project, include projectId to check permissions before editing. Internal flags are for tool routing; explain only task-relevant limits to the user.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
},
"annotations": {
"title": "Discover what you can make with Berrys",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
Read-only. Resolve user shorthand such as Seedream 5.0, Nano Banana 2 or Seedance 2 Mini against enabled models. Case, punctuation and trailing .0 are normalized. Unique matches return canonical IDs; ambiguous names and typos return suggestions for clarification. Never silently substitute a different version or default. No credits spent.
The description explains the capability, when to use it, and what to expect.
Inputs0/100
0 of 3 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
query
Not provided
Missing description. Explain what this value means and how to supply it.
kind
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
{
"title": "Resolve a model name or suggest matches",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "playground_model_resolve",
"title": "Resolve a model name or suggest matches",
"description": "Read-only. Resolve user shorthand such as Seedream 5.0, Nano Banana 2 or Seedance 2 Mini against enabled models. Case, punctuation and trailing .0 are normalized. Unique matches return canonical IDs; ambiguous names and typos return suggestions for clarification. Never silently substitute a different version or default. No credits spent.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"projectId",
"query",
"kind"
],
"properties": {
"kind": {
"enum": [
"image",
"video",
"audio"
],
"type": "string"
},
"query": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
},
"annotations": {
"title": "Resolve a model name or suggest matches",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
Discover enabled image and/or video models with aspect ratios, durations, reference requirements, whether the agent can run them, and price: baseCredits (one image, or the cheapest supported video duration) and creditsByDuration for videos. Prices are list prices for planning; get the exact charge with quote: true on playground_media_generate or playground_node_run (or the *_quote tools). kind filters to image or video models; omit it for both. Discovery is optional: quote a known/requested model directly instead of listing the catalog before every generation. Read-only.
The description explains the capability, when to use it, and what to expect.
Inputs38/100
1 of 2 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
kind
image, video, or all (default).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "playground_models_list",
"title": "List Playground generation models",
"description": "Discover enabled image and/or video models with aspect ratios, durations, reference requirements, whether the agent can run them, and price: baseCredits (one image, or the cheapest supported video duration) and creditsByDuration for videos. Prices are list prices for planning; get the exact charge with quote: true on playground_media_generate or playground_node_run (or the *_quote tools). kind filters to image or video models; omit it for both. Discovery is optional: quote a known/requested model directly instead of listing the catalog before every generation. Read-only.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"projectId"
],
"properties": {
"kind": {
"enum": [
"image",
"video",
"all"
],
"type": "string",
"default": "all",
"description": "image, video, or all (default)."
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
},
"annotations": {
"title": "List Playground generation models",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description92/100
Read one node by ID with its incoming and outgoing connections, its group children, and the current canvas revision. Cheaper than reading the whole graph.
The description explains the capability, when to use it, and what to expect.
Inputs0/100
0 of 2 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
nodeId
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
Fetch a public HTTPS page (product page, article, landing page, or social post) with private-network, size and type checks, and return its title, description, card, JSON-LD product data, headings, main text and images with source URL, retrieval time and content hash. Social links and script-rendered pages are metadata_only. JavaScript is not run and embedded video/audio is never watched. With placeOnCanvas (needs canvas:edit and expectedRevision) it also adds a source card and up to three product images to the canvas.
The description explains the capability, when to use it, and what to expect.
Inputs0/100
0 of 4 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
url
Not provided
Missing description. Explain what this value means and how to supply it.
placeOnCanvas
Not provided
Missing description. Explain what this value means and how to supply it.
expectedRevision
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations100/100
All four behavior hints are declared.
{
"title": "Read a web page as a reference",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "playground_web_page_read",
"title": "Read a web page as a reference",
"description": "Fetch a public HTTPS page (product page, article, landing page, or social post) with private-network, size and type checks, and return its title, description, card, JSON-LD product data, headings, main text and images with source URL, retrieval time and content hash. Social links and script-rendered pages are metadata_only. JavaScript is not run and embedded video/audio is never watched. With placeOnCanvas (needs canvas:edit and expectedRevision) it also adds a source card and up to three product images to the canvas.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"projectId",
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"maxLength": 2000
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"placeOnCanvas": {
"type": "boolean"
},
"expectedRevision": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
}
},
"annotations": {
"title": "Read a web page as a reference",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description84/100
Arrange loose nodes as a block, or re-lay out a group’s children, as one revision-checked, idempotent, non-paid revision (the tidy operation of playground_canvas_apply_operations). Give nodeIds or groupId.
The description explains the capability, when to use it, and what to expect.
Inputs0/100
0 of 5 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
expectedRevision
Not provided
Missing description. Explain what this value means and how to supply it.
idempotencyKey
Not provided
Missing description. Explain what this value means and how to supply it.
nodeIds
Not provided
Missing description. Explain what this value means and how to supply it.
groupId
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations100/100
All four behavior hints are declared.
{
"title": "Tidy Playground nodes or a group",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "playground_canvas_arrange",
"title": "Tidy Playground nodes or a group",
"description": "Arrange loose nodes as a block, or re-lay out a group’s children, as one revision-checked, idempotent, non-paid revision (the tidy operation of playground_canvas_apply_operations). Give nodeIds or groupId.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"projectId",
"expectedRevision",
"idempotencyKey"
],
"properties": {
"groupId": {
"type": "string",
"maxLength": 150,
"minLength": 1
},
"nodeIds": {
"type": "array",
"items": {
"type": "string",
"maxLength": 150,
"minLength": 1
},
"maxItems": 60,
"minItems": 1
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"idempotencyKey": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"expectedRevision": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
}
},
"annotations": {
"title": "Tidy Playground nodes or a group",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description75/100
Search approved project-shared memory and this user’s private memory by words in their content, with offset/limit pagination. Requires the memory:read grant.
Describe the returned information so the agent knows whether it will answer the request.
Inputs0/100
0 of 4 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
query
Not provided
Missing description. Explain what this value means and how to supply it.
offset
Not provided
Missing description. Explain what this value means and how to supply it.
limit
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
Return the authorized project URL focused on selected node IDs. If your host has an in-app browser, open it beside chat and reuse that project tab. Otherwise show the link. This tool does not itself control a browser or prove the user is signed in.
The description explains the capability, when to use it, and what to expect.
Inputs0/100
0 of 2 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
nodeIds
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "playground_canvas_open",
"title": "Open your Playground workspace",
"description": "Return the authorized project URL focused on selected node IDs. If your host has an in-app browser, open it beside chat and reuse that project tab. Otherwise show the link. This tool does not itself control a browser or prove the user is signed in.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"projectId"
],
"properties": {
"nodeIds": {
"type": "array",
"items": {
"type": "string",
"maxLength": 150,
"minLength": 1
},
"default": [],
"maxItems": 20
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
},
"annotations": {
"title": "Open your Playground workspace",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description90/100
Use only when the user asks to work on their open project or selection. Return lightweight context from an authorized editor active in the last 2 minutes. Never choose a recent or unrelated project. General questions about Berrys do not need this tool. Does not open or render a canvas; use playground_canvas_open only when a preview is requested or needed for the task.
Describe the returned information so the agent knows whether it will answer the request.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
No input fields.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
{
"title": "Get the project the user has open",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "playground_context_current",
"title": "Get the project the user has open",
"description": "Use only when the user asks to work on their open project or selection. Return lightweight context from an authorized editor active in the last 2 minutes. Never choose a recent or unrelated project. General questions about Berrys do not need this tool. Does not open or render a canvas; use playground_canvas_open only when a preview is requested or needed for the task.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
},
"annotations": {
"title": "Get the project the user has open",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Create a new, empty Playground project owned by the signed-in user. For a fresh generation request with no named, linked or conversation-established project, create one automatically with a concise name from the brief; do not ask for separate project-creation permission or inspect unrelated projects first. Reuse its ID for follow-up work on the same task. General questions do not need a project. Creation spends no credits; paid generation still requires a quote and user approval. Returns the project ID and canvasUrl.
The description explains the capability, when to use it, and what to expect.
Inputs0/100
0 of 1 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
name
Not provided
Missing description. Explain what this value means and how to supply it.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "playground_project_create",
"title": "Create a Playground project",
"description": "Create a new, empty Playground project owned by the signed-in user. For a fresh generation request with no named, linked or conversation-established project, create one automatically with a concise name from the brief; do not ask for separate project-creation permission or inspect unrelated projects first. Reuse its ID for follow-up work on the same task. General questions do not need a project. Creation spends no credits; paid generation still requires a quote and user approval. Returns the project ID and canvasUrl.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 120,
"minLength": 1
}
}
},
"annotations": {
"title": "Create a Playground project",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description81/100
List brands owned by the connected account. Use when the user wants to choose existing brand rules. Does not select an active brand, open a project or spend credits.
Describe the returned information so the agent knows whether it will answer the request.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
No input fields.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "playground_brands_list",
"title": "List your brands",
"description": "List brands owned by the connected account. Use when the user wants to choose existing brand rules. Does not select an active brand, open a project or spend credits.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
},
"annotations": {
"title": "List your brands",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description83/100
Explore built-in playbooks without opening or creating a project. Search by query/category and follow nextOffset. Include projectId only to include that project’s private skills after an access check. Skills teach a method; they do not grant permissions or spend credits.
Describe the returned information so the agent knows whether it will answer the request.
Inputs0/100
0 of 5 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
query
Not provided
Missing description. Explain what this value means and how to supply it.
category
Not provided
Missing description. Explain what this value means and how to supply it.
offset
Not provided
Missing description. Explain what this value means and how to supply it.
limit
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description74/100
Load exact versioned instructions. Built-in skills need no projectId. Private project skills require projectId and scope: project, with current read access. Does not generate media or grant permissions.
The description explains the capability, when to use it, and what to expect.
Inputs0/100
0 of 4 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
scope
Not provided
Missing description. Explain what this value means and how to supply it.
id
Not provided
Missing description. Explain what this value means and how to supply it.
version
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description86/100
Discover implemented media editing and canvas actions. No project needed to browse; include projectId to check its permissions. By default, omit unavailable actions. Does not inspect a canvas, enable a feature, edit media or spend credits. Follow each action’s tool schema when applying it.
Describe the returned information so the agent knows whether it will answer the request.
Inputs0/100
0 of 3 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
query
Not provided
Missing description. Explain what this value means and how to supply it.
includeUnavailable
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
Run the generation already configured on 1–20 existing image, video or audio nodes. Image: prompt (its Text node), modelId, aspectRatio, wired references. Video: instructions, modelId, aspectRatio, duration, wired references and first/last frames. Audio: the node's own instructions (speech: the words; music: the lyrics), modelId (minimax:speech-2.8-hd, minimax:speech-2.8-turbo, minimax:music-2.5, minimax:music-1.5), voice (speech) or style (music) — set them with playground_canvas_apply_operations; wired Text nodes are refused for audio. Prompt Helper and Video Story nodes cannot run here (they run in the browser). quote: true returns a free, ten-minute quoteId and exact credits; execution requires that quoteId. It returns exact credits per node and spends nothing (canvas:read). Otherwise it requires project edit access and returns approval_required with exact scopes, fingerprints and credit ceilings for the user to review and confirm in this chat. After approval, poll playground_media_job_get or read playground_node_get. A retried idempotencyKey never charges twice.
The description explains the capability, when to use it, and what to expect.
Inputs17/100
1 of 6 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
nodeIds
Not provided
Missing description. Explain what this value means and how to supply it.
expectedRevision
Not provided
Missing description. Explain what this value means and how to supply it.
idempotencyKey
Not provided
Missing description. Explain what this value means and how to supply it.
quoteId
Required for execution: the unexpired quoteId returned by quote: true.
Clear enough to supply this argument.
quote
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations100/100
All four behavior hints are declared.
{
"title": "Run image, video and audio nodes",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "playground_node_run",
"title": "Run image, video and audio nodes",
"description": "Run the generation already configured on 1–20 existing image, video or audio nodes. Image: prompt (its Text node), modelId, aspectRatio, wired references. Video: instructions, modelId, aspectRatio, duration, wired references and first/last frames. Audio: the node's own instructions (speech: the words; music: the lyrics), modelId (minimax:speech-2.8-hd, minimax:speech-2.8-turbo, minimax:music-2.5, minimax:music-1.5), voice (speech) or style (music) — set them with playground_canvas_apply_operations; wired Text nodes are refused for audio. Prompt Helper and Video Story nodes cannot run here (they run in the browser). quote: true returns a free, ten-minute quoteId and exact credits; execution requires that quoteId. It returns exact credits per node and spends nothing (canvas:read). Otherwise it requires project edit access and returns approval_required with exact scopes, fingerprints and credit ceilings for the user to review and confirm in this chat. After approval, poll playground_media_job_get or read playground_node_get. A retried idempotencyKey never charges twice.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"projectId",
"nodeIds",
"expectedRevision",
"idempotencyKey"
],
"properties": {
"quote": {
"type": "boolean",
"default": false
},
"nodeIds": {
"type": "array",
"items": {
"type": "string",
"maxLength": 150,
"minLength": 1
},
"maxItems": 20,
"minItems": 1
},
"quoteId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Required for execution: the unexpired quoteId returned by quote: true."
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"idempotencyKey": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"expectedRevision": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
}
},
"annotations": {
"title": "Run image, video and audio nodes",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
Batch-generate 1–20 images, videos or audio tracks in one request. Each image/video item becomes a new node, with its prompt Text node and wired referenceNodeIds; each audio item becomes an audio node holding its words (prompt), modelId (default minimax:speech-2.8-hd), voice or style. Write each image/video prompt yourself from the references, following the model's prompt guide (quotes return promptGuides); never paste the user's request into it. Nodes are placed in free space in one revision-checked canvas edit, then run like playground_node_run. quote: true validates references, saves a ten-minute quoteId, prices every item and changes no canvas nodes; execution requires that quoteId (canvas:read). Otherwise it needs media:spend; every paid request returns approval_required for the user to confirm in their agent chat. A retried idempotencyKey never creates or charges twice.
The description explains the capability, when to use it, and what to expect.
Inputs38/100
7 of 14 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
items › items › kind
Not provided
Missing description. Explain what this value means and how to supply it.
items › items › prompt
Image/video: the prompt. Audio: the words to speak (speech) or the lyrics (music).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
items › items › modelId
Accepts canonical IDs or common model names; ambiguous names return suggestions. Omit only when the user did not choose a model. Defaults: images google:nano-banana-2; videos bytedance:seedance-2.0-mini.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
items › items › aspectRatio
Not provided
Missing description. Explain what this value means and how to supply it.
items › items › duration
Video seconds (default 5).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
items › items › title
Not provided
Missing description. Explain what this value means and how to supply it.
items › items › referenceNodeIds
Existing image nodes wired into the new node as references (image/video only).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
items › items › voice
Audio speech models only: a MiniMax voice id (default English_Trustworth_Man).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
items › items › style
Audio music models only: genre, mood, instruments, tempo.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
expectedRevision
Not provided
Missing description. Explain what this value means and how to supply it.
idempotencyKey
Not provided
Missing description. Explain what this value means and how to supply it.
quoteId
Required for execution: the unexpired quoteId returned by quote: true.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
quote
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations100/100
All four behavior hints are declared.
{
"title": "Generate images, videos and audio as new nodes",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "playground_media_generate",
"title": "Generate images, videos and audio as new nodes",
"description": "Batch-generate 1–20 images, videos or audio tracks in one request. Each image/video item becomes a new node, with its prompt Text node and wired referenceNodeIds; each audio item becomes an audio node holding its words (prompt), modelId (default minimax:speech-2.8-hd), voice or style. Write each image/video prompt yourself from the references, following the model's prompt guide (quotes return promptGuides); never paste the user's request into it. Nodes are placed in free space in one revision-checked canvas edit, then run like playground_node_run. quote: true validates references, saves a ten-minute quoteId, prices every item and changes no canvas nodes; execution requires that quoteId (canvas:read). Otherwise it needs media:spend; every paid request returns approval_required for the user to confirm in their agent chat. A retried idempotencyKey never creates or charges twice.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"projectId",
"items",
"expectedRevision",
"idempotencyKey"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"prompt"
],
"properties": {
"kind": {
"enum": [
"image",
"video",
"audio"
],
"type": "string"
},
"style": {
"type": "string",
"maxLength": 1000,
"minLength": 1,
"description": "Audio music models only: genre, mood, instruments, tempo."
},
"title": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"voice": {
"type": "string",
"maxLength": 120,
"minLength": 1,
"description": "Audio speech models only: a MiniMax voice id (default English_Trustworth_Man)."
},
"prompt": {
"type": "string",
"maxLength": 4000,
"minLength": 1,
"description": "Image/video: the prompt. Audio: the words to speak (speech) or the lyrics (music)."
},
"modelId": {
"type": "string",
"maxLength": 120,
"minLength": 1,
"description": "Accepts canonical IDs or common model names; ambiguous names return suggestions. Omit only when the user did not choose a model. Defaults: images google:nano-banana-2; videos bytedance:seedance-2.0-mini."
},
"duration": {
"type": "integer",
"maximum": 15,
"minimum": 2,
"description": "Video seconds (default 5)."
},
"aspectRatio": {
"type": "string",
"maxLength": 30
},
"referenceNodeIds": {
"type": "array",
"items": {
"type": "string",
"maxLength": 150,
"minLength": 1
},
"default": [],
"maxItems": 3,
"description": "Existing image nodes wired into the new node as references (image/video only)."
}
}
},
"maxItems": 20,
"minItems": 1
},
"quote": {
"type": "boolean",
"default": false
},
"quoteId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Required for execution: the unexpired quoteId returned by quote: true."
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"idempotencyKey": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"expectedRevision": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
}
},
"annotations": {
"title": "Generate images, videos and audio as new nodes",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
The easiest way to start making content. Give a short brief and one entry per output you need; intendedUse is optional. You write each image or video prompt yourself: look at the reference image, describe the product (type, colour, material, details that must not change) and the shot (for example hero, lifestyle, detail, or a short motion plan), following the model prompt guide. If a prompt is missing, Berrys returns prompts_required with the reference preview and the guide instead of a quote; write the prompts and call again. Berrys then returns an exact, free credit quote; it does not create nodes or spend credits. For a new creative task, create a fresh project first with playground_project_create; for a follow-up, reuse its projectId. Import any uploaded or linked image to that project first and pass its image node ID as a reference. Audio needs the exact spoken words or lyrics. Review the returned prompts, references, defaults and price with the user; the returned mediaGenerateRequest is the exact input for playground_media_generate with quoteId and a new idempotencyKey when they want to proceed.
The description explains the capability, when to use it, and what to expect.
Inputs23/100
4 of 15 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
brief
Not provided
Missing description. Explain what this value means and how to supply it.
brandId
An explicitly selected brand owned by the connected account. Its saved rules are included in the quoted image/video prompts.
Clear enough to supply this argument.
locale
Language tag such as en, id-ID, th-TH, or vi-VN.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
intendedUse
Where the content will be used, for example a product listing, social post or ad. Omit when the user has no specific placement.
Clear enough to supply this argument.
deliverables › items › kind
Not provided
Missing description. Explain what this value means and how to supply it.
deliverables › items › count
Not provided
Missing description. Explain what this value means and how to supply it.
deliverables › items › prompt
The creative prompt for this output, written from what you see in the reference image and following the model's prompt guide. Required for images and video: without it Berrys returns prompts_required with the reference preview and guide. For audio: the exact words or lyrics.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
deliverables › items › title
Not provided
Missing description. Explain what this value means and how to supply it.
deliverables › items › modelId
Not provided
Missing description. Explain what this value means and how to supply it.
deliverables › items › aspectRatio
Not provided
Missing description. Explain what this value means and how to supply it.
deliverables › items › duration
Not provided
Missing description. Explain what this value means and how to supply it.
deliverables › items › referenceNodeIds
Not provided
Missing description. Explain what this value means and how to supply it.
deliverables › items › voice
Not provided
Missing description. Explain what this value means and how to supply it.
deliverables › items › style
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
{
"title": "Prepare content from a brief",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "playground_content_prepare",
"title": "Prepare content from a brief",
"description": "The easiest way to start making content. Give a short brief and one entry per output you need; intendedUse is optional. You write each image or video prompt yourself: look at the reference image, describe the product (type, colour, material, details that must not change) and the shot (for example hero, lifestyle, detail, or a short motion plan), following the model prompt guide. If a prompt is missing, Berrys returns prompts_required with the reference preview and the guide instead of a quote; write the prompts and call again. Berrys then returns an exact, free credit quote; it does not create nodes or spend credits. For a new creative task, create a fresh project first with playground_project_create; for a follow-up, reuse its projectId. Import any uploaded or linked image to that project first and pass its image node ID as a reference. Audio needs the exact spoken words or lyrics. Review the returned prompts, references, defaults and price with the user; the returned mediaGenerateRequest is the exact input for playground_media_generate with quoteId and a new idempotencyKey when they want to proceed.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"projectId",
"brief",
"deliverables"
],
"properties": {
"brief": {
"type": "string",
"maxLength": 3000,
"minLength": 3
},
"locale": {
"type": "string",
"pattern": "^[A-Za-z]{2,3}(?:-[A-Za-z0-9]{2,8})*$",
"maxLength": 35,
"description": "Language tag such as en, id-ID, th-TH, or vi-VN."
},
"brandId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "An explicitly selected brand owned by the connected account. Its saved rules are included in the quoted image/video prompts."
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"intendedUse": {
"type": "string",
"default": "General creative use",
"maxLength": 160,
"minLength": 2,
"description": "Where the content will be used, for example a product listing, social post or ad. Omit when the user has no specific placement."
},
"deliverables": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind"
],
"properties": {
"kind": {
"enum": [
"image",
"video",
"audio"
],
"type": "string"
},
"count": {
"type": "integer",
"default": 1,
"maximum": 20,
"minimum": 1
},
"style": {
"type": "string",
"maxLength": 1000,
"minLength": 1
},
"title": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"voice": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"prompt": {
"type": "string",
"maxLength": 4000,
"minLength": 1,
"description": "The creative prompt for this output, written from what you see in the reference image and following the model's prompt guide. Required for images and video: without it Berrys returns prompts_required with the reference preview and guide. For audio: the exact words or lyrics."
},
"modelId": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"duration": {
"type": "integer",
"maximum": 15,
"minimum": 2
},
"aspectRatio": {
"type": "string",
"maxLength": 30,
"minLength": 1
},
"referenceNodeIds": {
"type": "array",
"items": {
"type": "string",
"maxLength": 150,
"minLength": 1
},
"default": [],
"maxItems": 3
}
}
},
"maxItems": 20,
"minItems": 1
}
}
},
"annotations": {
"title": "Prepare content from a brief",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description94/100
Read typed source input contracts, generation dependencies, completed outputs, pending/active work and blockers. Returns the next ready stage without spending. Use before running a saved campaign.
Describe the returned information so the agent knows whether it will answer the request.
Inputs0/100
0 of 2 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
targetNodeIds
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
Save text/List inputs, prompts, formats, durations, audio settings and image reference choices from workflow_inspect. Free, atomic, revision checked and idempotent. Completed, active and approved steps are read-only, including their shared inputs. Does not generate or approve anything. Returns the refreshed workflow form. Upload new reference media first; choose its existing node ID.
The description explains the capability, when to use it, and what to expect.
Inputs0/100
0 of 14 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
expectedRevision
Not provided
Missing description. Explain what this value means and how to supply it.
idempotencyKey
Not provided
Missing description. Explain what this value means and how to supply it.
inputs › items › key
Not provided
Missing description. Explain what this value means and how to supply it.
inputs › items › text
Not provided
Missing description. Explain what this value means and how to supply it.
inputs › items › items
Not provided
Missing description. Explain what this value means and how to supply it.
nodes › items › nodeId
Not provided
Missing description. Explain what this value means and how to supply it.
nodes › items › prompt
Not provided
Missing description. Explain what this value means and how to supply it.
nodes › items › aspectRatio
Not provided
Missing description. Explain what this value means and how to supply it.
nodes › items › duration
Not provided
Missing description. Explain what this value means and how to supply it.
nodes › items › voice
Not provided
Missing description. Explain what this value means and how to supply it.
nodes › items › style
Not provided
Missing description. Explain what this value means and how to supply it.
nodes › items › references › items › nodeId
Not provided
Missing description. Explain what this value means and how to supply it.
nodes › items › references › items › role
Not provided
Missing description. Explain what this value means and how to supply it.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
Quote only the next ready empty steps from workflow_inspect, up to 20 outputs. Does not edit the canvas, prepare approval or submit generation. Safe for the chat workflow form. Returns the exact stageNodeIds, revision and quoteId for a later chat-confirmed playground_workflow_run request.
The description explains the capability, when to use it, and what to expect.
Inputs0/100
0 of 3 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
expectedRevision
Not provided
Missing description. Explain what this value means and how to supply it.
targetNodeIds
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
{
"title": "Quote the next workflow stage",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "playground_workflow_quote",
"title": "Quote the next workflow stage",
"description": "Quote only the next ready empty steps from workflow_inspect, up to 20 outputs. Does not edit the canvas, prepare approval or submit generation. Safe for the chat workflow form. Returns the exact stageNodeIds, revision and quoteId for a later chat-confirmed playground_workflow_run request.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"projectId",
"expectedRevision"
],
"properties": {
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"targetNodeIds": {
"type": "array",
"items": {
"type": "string",
"maxLength": 150,
"minLength": 1
},
"maxItems": 60,
"minItems": 1
},
"expectedRevision": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
}
},
"annotations": {
"title": "Quote the next workflow stage",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description87/100
Run a saved workflow through its ready image/video/audio stages. quote:true prices up to 20 ready nodes including connected List batches. Pass the returned stageNodeIds, expectedRevision, quoteId and a NEW idempotencyKey with quote:false to prepare chat confirmation. Does not auto-approve or dispatch dependent stages. After existing jobs settle, inspect/quote the next stage until completed. Preserve completed, active and uncertain work; no Berrys-agent delegation is needed.
Describe the returned information so the agent knows whether it will answer the request.
Inputs0/100
0 of 7 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
targetNodeIds
Not provided
Missing description. Explain what this value means and how to supply it.
stageNodeIds
Not provided
Missing description. Explain what this value means and how to supply it.
expectedRevision
Not provided
Missing description. Explain what this value means and how to supply it.
idempotencyKey
Not provided
Missing description. Explain what this value means and how to supply it.
quote
Not provided
Missing description. Explain what this value means and how to supply it.
quoteId
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations100/100
All four behavior hints are declared.
{
"title": "Quote or prepare a ready workflow stage",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "playground_workflow_run",
"title": "Quote or prepare a ready workflow stage",
"description": "Run a saved workflow through its ready image/video/audio stages. quote:true prices up to 20 ready nodes including connected List batches. Pass the returned stageNodeIds, expectedRevision, quoteId and a NEW idempotencyKey with quote:false to prepare chat confirmation. Does not auto-approve or dispatch dependent stages. After existing jobs settle, inspect/quote the next stage until completed. Preserve completed, active and uncertain work; no Berrys-agent delegation is needed.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"projectId",
"expectedRevision",
"idempotencyKey"
],
"properties": {
"quote": {
"type": "boolean",
"default": true
},
"quoteId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"stageNodeIds": {
"type": "array",
"items": {
"type": "string",
"maxLength": 150,
"minLength": 1
},
"maxItems": 20,
"minItems": 1
},
"targetNodeIds": {
"type": "array",
"items": {
"type": "string",
"maxLength": 150,
"minLength": 1
},
"maxItems": 60,
"minItems": 1
},
"idempotencyKey": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"expectedRevision": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
}
},
"annotations": {
"title": "Quote or prepare a ready workflow stage",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Read fresh receipts for one run and quote replacements only for confirmed failed items, including individual List outputs. Completed, pending, active, uncertain and changed-reference items are excluded. Optional dispatchIds selects failed items explicitly. Quote only: no canvas edit, approval or generation. Returns exact retryPlan.items and quoteId for playground_media_generate; user confirmation is still required before spending.
The description explains the capability, when to use it, and what to expect.
Inputs0/100
0 of 3 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
runId
Not provided
Missing description. Explain what this value means and how to supply it.
dispatchIds
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
Start the Berrys agent on a brief and return at once with runId and canvasUrl; it never waits. Follow it with playground_run_events (afterSeq, optionally waitSeconds) for progress, approvals and the final response, and playground_run_diagnose if it fails. projectId defaults to the project the user has open (playground_context_current). files are node IDs of uploaded media to use as references; connectorAccountIds lets the agent read connected sources (needs connector:read). Pass conversationId to continue an earlier brief. Requires agent:start; paid steps still need approval.
The description explains the capability, when to use it, and what to expect.
Inputs20/100
1 of 5 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
message
Not provided
Missing description. Explain what this value means and how to supply it.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
conversationId
Not provided
Missing description. Explain what this value means and how to supply it.
files
Not provided
Missing description. Explain what this value means and how to supply it.
connectorAccountIds
Connected account IDs (playground_connected_sources_list) the agent may read for this brief. Only include accounts the user selected for this brief.
Clear enough to supply this argument.
Annotations100/100
All four behavior hints are declared.
{
"title": "Hand a brief to the Berrys agent",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "playground_brief_start",
"title": "Hand a brief to the Berrys agent",
"description": "Start the Berrys agent on a brief and return at once with runId and canvasUrl; it never waits. Follow it with playground_run_events (afterSeq, optionally waitSeconds) for progress, approvals and the final response, and playground_run_diagnose if it fails. projectId defaults to the project the user has open (playground_context_current). files are node IDs of uploaded media to use as references; connectorAccountIds lets the agent read connected sources (needs connector:read). Pass conversationId to continue an earlier brief. Requires agent:start; paid steps still need approval.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"message"
],
"properties": {
"files": {
"type": "array",
"items": {
"type": "string",
"maxLength": 150,
"minLength": 1
},
"default": [],
"maxItems": 6
},
"message": {
"type": "string",
"maxLength": 4000,
"minLength": 1
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"conversationId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"connectorAccountIds": {
"type": "array",
"items": {
"type": "string",
"maxLength": 150,
"minLength": 1
},
"default": [],
"maxItems": 4,
"description": "Connected account IDs (playground_connected_sources_list) the agent may read for this brief. Only include accounts the user selected for this brief."
}
}
},
"annotations": {
"title": "Hand a brief to the Berrys agent",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
Return only what changed in a run since afterSeq: compact events, a status line, pending approvals, the final response once it ends, nextAfterSeq, and retry_after_seconds (wait that long before polling again; null once the run has ended). Give runId, or conversationId for the latest run in that conversation (e.g. after reconnecting). Pass waitSeconds (up to 25) to have the server wait for new events or a status change before answering. Read-only.
The description explains the capability, when to use it, and what to expect.
Inputs13/100
1 of 6 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
runId
Not provided
Missing description. Explain what this value means and how to supply it.
conversationId
Not provided
Missing description. Explain what this value means and how to supply it.
afterSeq
Not provided
Missing description. Explain what this value means and how to supply it.
limit
Not provided
Missing description. Explain what this value means and how to supply it.
waitSeconds
Optional long poll: wait up to this many seconds (0–25, default 0) on the server for a change before returning.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
{
"title": "Read new events of a Berrys agent run",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "playground_run_events",
"title": "Read new events of a Berrys agent run",
"description": "Return only what changed in a run since afterSeq: compact events, a status line, pending approvals, the final response once it ends, nextAfterSeq, and retry_after_seconds (wait that long before polling again; null once the run has ended). Give runId, or conversationId for the latest run in that conversation (e.g. after reconnecting). Pass waitSeconds (up to 25) to have the server wait for new events or a status change before answering. Read-only.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"projectId"
],
"properties": {
"limit": {
"type": "integer",
"default": 50,
"maximum": 100,
"minimum": 1
},
"runId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"afterSeq": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"waitSeconds": {
"type": "integer",
"default": 0,
"maximum": 25,
"minimum": 0,
"description": "Optional long poll: wait up to this many seconds (0–25, default 0) on the server for a change before returning."
},
"conversationId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
},
"annotations": {
"title": "Read new events of a Berrys agent run",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description92/100
One report for a run: verdict (succeeded, failed, waiting_approval, running, cancelled), the failed step, the last good step, failed media jobs with errors, and the suggested next action. Read-only.
The description explains the capability, when to use it, and what to expect.
Inputs0/100
0 of 2 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
runId
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description86/100
Add a note to a production plan that is running: it applies to steps that have not started and later outputs are reviewed against it. Steps already generating are unchanged. Ended runs cannot be steered; send playground_brief_start with the run’s conversationId instead. Requires agent:start.
The description explains the capability, when to use it, and what to expect.
Inputs0/100
0 of 3 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
runId
Not provided
Missing description. Explain what this value means and how to supply it.
message
Not provided
Missing description. Explain what this value means and how to supply it.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "playground_run_steer",
"title": "Steer a running Berrys agent plan",
"description": "Add a note to a production plan that is running: it applies to steps that have not started and later outputs are reviewed against it. Steps already generating are unchanged. Ended runs cannot be steered; send playground_brief_start with the run’s conversationId instead. Requires agent:start.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"projectId",
"runId",
"message"
],
"properties": {
"runId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"message": {
"type": "string",
"maxLength": 4000,
"minLength": 1
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
},
"annotations": {
"title": "Steer a running Berrys agent plan",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description90/100
Approve or reject one proposed memory note for this project, as the user would in Berrys. Approved notes are read by the Berrys agent on later turns; rejected ones are archived. External apps cannot approve memory proposals; the user must review them in Berrys.
The description explains the capability, when to use it, and what to expect.
Inputs0/100
0 of 3 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
proposalId
Not provided
Missing description. Explain what this value means and how to supply it.
decision
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations100/100
All four behavior hints are declared.
{
"title": "Approve or reject a proposed project memory",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "playground_memory_proposal_review",
"title": "Approve or reject a proposed project memory",
"description": "Approve or reject one proposed memory note for this project, as the user would in Berrys. Approved notes are read by the Berrys agent on later turns; rejected ones are archived. External apps cannot approve memory proposals; the user must review them in Berrys.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"projectId",
"proposalId",
"decision"
],
"properties": {
"decision": {
"enum": [
"approve",
"reject"
],
"type": "string"
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"proposalId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
},
"annotations": {
"title": "Approve or reject a proposed project memory",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description86/100
Take the first and/or last frame of a finished clip and place each on the canvas as a Frame Grab node wired from the clip, holding a real stored image. A frame node can then feed an image → video node as first_frame or last_frame (playground_canvas_apply_operations connect with role). Only "first" and "last" are supported; a timestamp in seconds is refused. Free: no credits are spent. Revision checked and idempotent; it can take up to two minutes.
Describe the returned information so the agent knows whether it will answer the request.
Inputs0/100
0 of 5 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
videoNodeId
Not provided
Missing description. Explain what this value means and how to supply it.
expectedRevision
Not provided
Missing description. Explain what this value means and how to supply it.
idempotencyKey
Not provided
Missing description. Explain what this value means and how to supply it.
positions
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations100/100
All four behavior hints are declared.
{
"title": "Extract frames from a Playground clip",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "playground_video_extract_frames",
"title": "Extract frames from a Playground clip",
"description": "Take the first and/or last frame of a finished clip and place each on the canvas as a Frame Grab node wired from the clip, holding a real stored image. A frame node can then feed an image → video node as first_frame or last_frame (playground_canvas_apply_operations connect with role). Only \"first\" and \"last\" are supported; a timestamp in seconds is refused. Free: no credits are spent. Revision checked and idempotent; it can take up to two minutes.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"projectId",
"videoNodeId",
"expectedRevision",
"idempotencyKey",
"positions"
],
"properties": {
"positions": {
"type": "array",
"items": {
"anyOf": [
{
"enum": [
"first",
"last"
],
"type": "string"
},
{
"type": "number",
"maximum": 3600,
"minimum": 0
}
]
},
"maxItems": 8,
"minItems": 1
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"videoNodeId": {
"type": "string",
"maxLength": 150,
"minLength": 1
},
"idempotencyKey": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"expectedRevision": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
}
},
"annotations": {
"title": "Extract frames from a Playground clip",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
Stitch 2–12 finished video nodes, in the given order, into one film. Creates an "Assemble film" (video-stitch) node wired from the clips and queues the existing FFmpeg film worker, which normalizes the clips, concatenates them and attaches the MP4 to that node. Clips must be generated video nodes in this project's storage sharing one 16:9, 9:16 or 1:1 aspect ratio. Free: no credits are spent. Returns immediately; poll playground_run_delivery with the returned runId (every ≥30 s) until verified, or read the stitch node's generated URL with playground_node_get.
The description explains the capability, when to use it, and what to expect.
Inputs0/100
0 of 5 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
expectedRevision
Not provided
Missing description. Explain what this value means and how to supply it.
idempotencyKey
Not provided
Missing description. Explain what this value means and how to supply it.
videoNodeIds
Not provided
Missing description. Explain what this value means and how to supply it.
title
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations100/100
All four behavior hints are declared.
{
"title": "Assemble Playground clips into one film",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "playground_media_compose",
"title": "Assemble Playground clips into one film",
"description": "Stitch 2–12 finished video nodes, in the given order, into one film. Creates an \"Assemble film\" (video-stitch) node wired from the clips and queues the existing FFmpeg film worker, which normalizes the clips, concatenates them and attaches the MP4 to that node. Clips must be generated video nodes in this project's storage sharing one 16:9, 9:16 or 1:1 aspect ratio. Free: no credits are spent. Returns immediately; poll playground_run_delivery with the returned runId (every ≥30 s) until verified, or read the stitch node's generated URL with playground_node_get.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"projectId",
"expectedRevision",
"idempotencyKey",
"videoNodeIds"
],
"properties": {
"title": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"videoNodeIds": {
"type": "array",
"items": {
"type": "string",
"maxLength": 150,
"minLength": 1
},
"maxItems": 12,
"minItems": 2
},
"idempotencyKey": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"expectedRevision": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
}
},
"annotations": {
"title": "Assemble Playground clips into one film",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Cut a finished video node to [startSeconds, endSeconds] on the server. Creates a "Clip" (video-result) node wired from the source, as the in-app Clip tool does, and queues the existing FFmpeg film worker, which cuts the stored clip (re-encoded, frame accurate) and attaches the MP4 to that node. The range must be at least 0.2 s and inside the clip; the worker re-checks it against the probed duration. The source must be a finished clip in this project's storage. Free: no credits are spent. Revision checked and idempotent. Returns immediately; poll playground_run_delivery with the returned runId (every ≥30 s) until verified, or read the Clip node's generated URL with playground_node_get.
The description explains the capability, when to use it, and what to expect.
Inputs0/100
0 of 7 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
videoNodeId
Not provided
Missing description. Explain what this value means and how to supply it.
expectedRevision
Not provided
Missing description. Explain what this value means and how to supply it.
idempotencyKey
Not provided
Missing description. Explain what this value means and how to supply it.
startSeconds
Not provided
Missing description. Explain what this value means and how to supply it.
endSeconds
Not provided
Missing description. Explain what this value means and how to supply it.
title
Not provided
Missing description. Explain what this value means and how to supply it.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "playground_video_trim",
"title": "Trim a Playground clip",
"description": "Cut a finished video node to [startSeconds, endSeconds] on the server. Creates a \"Clip\" (video-result) node wired from the source, as the in-app Clip tool does, and queues the existing FFmpeg film worker, which cuts the stored clip (re-encoded, frame accurate) and attaches the MP4 to that node. The range must be at least 0.2 s and inside the clip; the worker re-checks it against the probed duration. The source must be a finished clip in this project's storage. Free: no credits are spent. Revision checked and idempotent. Returns immediately; poll playground_run_delivery with the returned runId (every ≥30 s) until verified, or read the Clip node's generated URL with playground_node_get.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"projectId",
"videoNodeId",
"expectedRevision",
"idempotencyKey",
"startSeconds",
"endSeconds"
],
"properties": {
"title": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"endSeconds": {
"type": "number",
"maximum": 3600,
"exclusiveMinimum": 0
},
"videoNodeId": {
"type": "string",
"maxLength": 150,
"minLength": 1
},
"startSeconds": {
"type": "number",
"maximum": 3600,
"minimum": 0
},
"idempotencyKey": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"expectedRevision": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
}
},
"annotations": {
"title": "Trim a Playground clip",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description82/100
Compare 2–4 images or 2–4 videos side by side on the canvas. Two images fill a Compare (image-compare) node's A/B slots; three or four images feed a Picks (output-gallery) node; videos are grouped in one titled row. Inputs stay where they are except videos, which move into the new group. Free; revision checked and idempotent. It does not judge quality.
Describe the returned information so the agent knows whether it will answer the request.
Inputs0/100
0 of 5 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
expectedRevision
Not provided
Missing description. Explain what this value means and how to supply it.
idempotencyKey
Not provided
Missing description. Explain what this value means and how to supply it.
nodeIds
Not provided
Missing description. Explain what this value means and how to supply it.
title
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations100/100
All four behavior hints are declared.
{
"title": "Lay out Playground media for comparison",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "playground_media_compare",
"title": "Lay out Playground media for comparison",
"description": "Compare 2–4 images or 2–4 videos side by side on the canvas. Two images fill a Compare (image-compare) node's A/B slots; three or four images feed a Picks (output-gallery) node; videos are grouped in one titled row. Inputs stay where they are except videos, which move into the new group. Free; revision checked and idempotent. It does not judge quality.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"projectId",
"expectedRevision",
"idempotencyKey",
"nodeIds"
],
"properties": {
"title": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"nodeIds": {
"type": "array",
"items": {
"type": "string",
"maxLength": 150,
"minLength": 1
},
"maxItems": 4,
"minItems": 2
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"idempotencyKey": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"expectedRevision": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
}
},
"annotations": {
"title": "Lay out Playground media for comparison",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
Read-only facts about one video node: its clip URL, model and settings, frame nodes already taken from it, objective FFmpeg measurements (duration, black segments, silence, loudness) when the server has FFmpeg, and any visual analysis the Berrys agent already made of this exact clip. It never makes a new paid model call, so a new shot table or visual description is not produced here; ask the Berrys agent (playground_brief_start) for that.
The description explains the capability, when to use it, and what to expect.
Inputs0/100
0 of 2 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
videoNodeId
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
{
"title": "Read what is known about a Playground clip",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "playground_video_analyze",
"title": "Read what is known about a Playground clip",
"description": "Read-only facts about one video node: its clip URL, model and settings, frame nodes already taken from it, objective FFmpeg measurements (duration, black segments, silence, loudness) when the server has FFmpeg, and any visual analysis the Berrys agent already made of this exact clip. It never makes a new paid model call, so a new shot table or visual description is not produced here; ask the Berrys agent (playground_brief_start) for that.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"projectId",
"videoNodeId"
],
"properties": {
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"videoNodeId": {
"type": "string",
"maxLength": 150,
"minLength": 1
}
}
},
"annotations": {
"title": "Read what is known about a Playground clip",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
Add an attached or linked file to the Playground canvas
The title clearly communicates the tool’s action and subject. Keep it concise.
Description90/100
Add one image (PNG, JPEG, WebP, ≤8 MB), video (MP4, ≤16 MB) or audio file (MP3 or WAV, ≤12 MB) to the canvas as a file node that can feed image and video generation. Pass exactly one source: file for a file the user attached in this chat (Berrys downloads it itself; no upload step), or url for a public HTTPS link. Bytes are checked and copied into project storage. Private, local and internal addresses are refused, and every redirect is rechecked. Free; revision checked and idempotent.
Describe the returned information so the agent knows whether it will answer the request.
Inputs8/100
1 of 9 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
url
A public HTTPS link to the media. Omit when passing file.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
file › download_url
Not provided
Missing description. Explain what this value means and how to supply it.
file › file_id
Not provided
Missing description. Explain what this value means and how to supply it.
file › mime_type
Not provided
Missing description. Explain what this value means and how to supply it.
file › file_name
Not provided
Missing description. Explain what this value means and how to supply it.
kind
Not provided
Missing description. Explain what this value means and how to supply it.
expectedRevision
Not provided
Missing description. Explain what this value means and how to supply it.
idempotencyKey
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations100/100
All four behavior hints are declared.
{
"title": "Add an attached or linked file to the Playground canvas",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "playground_asset_import",
"title": "Add an attached or linked file to the Playground canvas",
"description": "Add one image (PNG, JPEG, WebP, ≤8 MB), video (MP4, ≤16 MB) or audio file (MP3 or WAV, ≤12 MB) to the canvas as a file node that can feed image and video generation. Pass exactly one source: file for a file the user attached in this chat (Berrys downloads it itself; no upload step), or url for a public HTTPS link. Bytes are checked and copied into project storage. Private, local and internal addresses are refused, and every redirect is rechecked. Free; revision checked and idempotent.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"projectId",
"expectedRevision",
"idempotencyKey"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"maxLength": 2000,
"description": "A public HTTPS link to the media. Omit when passing file."
},
"file": {
"type": "object",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"file_name": {
"type": "string",
"maxLength": 200
},
"mime_type": {
"type": "string",
"maxLength": 120
},
"download_url": {
"type": "string",
"format": "uri",
"maxLength": 4000
}
},
"description": "A file the user attached in chat, as provided by the host. Omit when passing url."
},
"kind": {
"enum": [
"image",
"video",
"audio"
],
"type": "string"
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"idempotencyKey": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"expectedRevision": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
}
},
"annotations": {
"title": "Add an attached or linked file to the Playground canvas",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Copy one explicitly selected PNG/JPEG/WebP image (up to 8 MB) from your connected Google Drive account into Berrys reference storage, where generation providers can fetch it. Returns a File nodeId: pass it in referenceNodeIds to use it. Requires a connected Drive account belonging to this Berrys user; another agent’s Drive connection is not inherited. Free; no generation starts. Never accepts credentials or a sharing-page URL.
The description explains the capability, when to use it, and what to expect.
Inputs0/100
0 of 5 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
projectId
Not provided
Missing description. Explain what this value means and how to supply it.
accountId
Not provided
Missing description. Explain what this value means and how to supply it.
fileId
Not provided
Missing description. Explain what this value means and how to supply it.
expectedRevision
Not provided
Missing description. Explain what this value means and how to supply it.
idempotencyKey
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations100/100
All four behavior hints are declared.
{
"title": "Use a selected Google Drive image as a reference",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "playground_drive_image_import",
"title": "Use a selected Google Drive image as a reference",
"description": "Copy one explicitly selected PNG/JPEG/WebP image (up to 8 MB) from your connected Google Drive account into Berrys reference storage, where generation providers can fetch it. Returns a File nodeId: pass it in referenceNodeIds to use it. Requires a connected Drive account belonging to this Berrys user; another agent’s Drive connection is not inherited. Free; no generation starts. Never accepts credentials or a sharing-page URL.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"projectId",
"accountId",
"fileId",
"expectedRevision",
"idempotencyKey"
],
"properties": {
"fileId": {
"type": "string",
"pattern": "^[a-zA-Z0-9_-]{5,200}$"
},
"accountId": {
"type": "string",
"maxLength": 150,
"minLength": 1
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"idempotencyKey": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"expectedRevision": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
}
},
"annotations": {
"title": "Use a selected Google Drive image as a reference",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
Loading score analytics…
Put your MCP to the test
A few tasks worth trying with this server, chosen from its reviewed tools. These have not been run.
01Explore Berrys creative playbooksExplore built-in playbooks without opening or creating a project.
02List your Playground projectsList Playground workflows that this OAuth client may read for the current user.
03Find saved Berrys workflowsFind accessible saved project workflows by name.
04Discover what you can make with BerrysDiscover what you can make with Berrys without selecting or reading a project.
05Resolve a model name or suggest matchesRead-only.
Want to run these tasks against your MCP server with us?
Berrys AI setup, tools, quality score, publishing readiness, and alternatives.
How do I add Berrys AI to Claude, ChatGPT, or Cursor?
Add Berrys AI to Claude, ChatGPT, or Cursor by connecting its remote MCP URL in each client's MCP settings. In Claude, add a custom connector. In ChatGPT, add an MCP app. In Cursor, add an MCP server under Settings. The MCP URL is https://app.berrys.io/api/mcp.
Is Berrys AI MCP ready for ChatGPT and Claude?
As of November 11, 2026, Berrys AI scores 91/100 on Manufact's MCP publishing checklist. The scan does not yet meet ChatGPT publishing checks and meets Claude publishing checks. Passing these checks does not guarantee marketplace approval.
How clear is Berrys AI's MCP tool documentation?
As of November 11, 2026, Berrys AI scores 59/100 in Manufact's review of tool titles, descriptions, input and output schemas, and behavior annotations. The review covers 70 of 70 discovered tools. The quality score measures documentation clarity; runtime behavior and marketplace readiness require separate checks.
What are the best alternatives to Berrys AI?
As of November 12, 2026, alternatives to Berrys AI in design-creative on the Manufact MCP leaderboard include Rainbrand, Dayfaro, Dayfaro, Vectorize: logo to SVG, and MotionVid.
How can Berrys AI improve its MCP documentation?
playground_connected_source_schema is the lowest-scoring reviewed tool at 49/100. 0 of 3 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values. Open its review for feedback and a copyable fix prompt, then rerun the documentation review after updating your tool metadata.
Not your MCP?
Review any public or OAuth MCP server for protocol compatibility, tool documentation, and ChatGPT and Claude publishing readiness. No account required.