Skip to main content

Berrys AI

io.github.GeneralBerrys/berrys-canvasVersion 0.3.5

Your agent turns product photos into on-brand listing images, ads, and short videos on one canvas.

Status

Responds1355 msAnswered our handshake without sign-in.

Registry data may be out of date

We could not refresh it, so this page shows the last copy.
Last checked
Nov 14, 2026, 14:38 UTC
Latency
1355 ms
Remotes responding
1 of 1
Sign-in
No sign-in
Hosting
Hosted outside the EU (detected)
Registry data as of
Nov 14, 2026, 22:14 UTC

Data from the official MCP Registry, checked by run.zero. How we check

Connect

Streamable HTTP
https://app.berrys.io/api/mcpResponds1355 ms
No sign-in

Claude Code

claude mcp add --transport http berrys-canvas https://app.berrys.io/api/mcp

Claude Desktop and claude.ai

Settings > Connectors > Add custom connector
Name: berrys-canvas
Remote MCP server URL: https://app.berrys.io/api/mcp

Cursor

{
  "mcpServers": {
    "berrys-canvas": {
      "url": "https://app.berrys.io/api/mcp"
    }
  }
}

VS Code

code --add-mcp '{"name":"berrys-canvas","type":"http","url":"https://app.berrys.io/api/mcp"}'

Built your own server? run.zero hosts MCP servers on European infrastructure.

Host your own MCP server on run.zero

Tools

70 tools

Tools of Berrys AI
Read-only
Idempotent
Open world
playground_actions_discoverDiscover 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. Returns matching actions with availability and requirements.NoYesYesNo
playground_approval_decideAfter 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. Returns the approval decision result, including dispatch or rejection status.YesNoNoYes
playground_approvals_listRead pending proposals, exact scopes, expiry, and price ceilings for the current user and project.NoYesYesNo
playground_asset_importAdd 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. Returns imported asset node details, revision and Playground URL.NoNoYesYes
playground_brand_getRead the connected account’s selected brand and saved Brand DNA. Does not change the account’s active brand or apply the rules to a generation. Returns the selected brand’s saved Brand DNA and creative guidance.NoYesYesNo
playground_brands_listList 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. Returns the user’s saved brands and their identifying details.NoYesYesNo
playground_brief_startStart 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.NoNoYesNo
playground_canvas_add_textAdd an editable text node to a Playground workflow. Supply the latest canvas revision; stale edits are rejected. Returns the text node ID, updated revision and replay status.NoNoYesNo
playground_canvas_apply_operationsApply 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. Returns the mutation receipt, updated revision and created or changed canvas references.YesNoYesNo
playground_canvas_arrangeArrange 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.NoNoYesNo
playground_canvas_openReturn 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.NoYesYesNo
playground_canvas_readRead the current node graph and revision for a Berrys Canvas Playground workflow. Returns the graph, current revision and Playground URL with a canvas preview.NoYesYesNo
playground_canvas_snapshot_restoreReplace 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.YesNoYesNo
playground_canvas_snapshots_listList recent whole-canvas snapshots taken before agent runs, MCP writes, reverts and restores. Read-only. Returns snapshot IDs, revisions, reasons and node counts.NoYesYesNo
playground_canvas_update_node_layoutUpdate 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.NoNoYesNo
playground_canvas_update_textReplace the editable text content of an existing text node. Requires project edit access, the node ID and the current expectedRevision from canvas_read. Reuse idempotencyKey only for an identical retry. On revision_conflict, read the canvas and rebuild the change. Returns the node ID, updated canvas revision and replay status.YesNoYesNo
playground_capabilities_discoverDiscover 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. Returns a general capability overview, or project-specific permissions, available tools and usage conventions.NoYesYesNo
playground_connected_source_readExecute 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. Returns bounded source data, a provenance receipt and an optional next-page token.NoYesYesYes
playground_connected_source_schemaGet the current exact input schema and tool version for one selected account and allowlisted read operation. Returns the operation version, input schema and pagination guidance.NoYesYesNo
playground_connected_sources_listList active Drive, Shopify, Meta Ads, and Gmail accounts and read-only operation names. Uses the signed-in user’s connected accounts and project access. Returns connected accounts and available read operations.NoYesYesNo
playground_content_prepareThe 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.NoYesNoNo
playground_context_currentUse 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. Returns whether editor context exists and, when available, the current project and selection.NoYesYesNo
playground_drive_image_importCopy 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.NoNoYesYes
playground_external_link_inspectFetch 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. Returns source metadata, coverage, provenance and a content hash; it does not imply full video inspection.NoYesNoYes
playground_film_assembly_retryAfter 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.NoNoNoNo
playground_generation_confirmAfter 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.YesNoNoYes
playground_image_quoteRead the current credit cost for one image and up to three image references. Does not submit a job. Returns model pricing and the quoted image settings.NoYesYesNo
playground_media_compareCompare 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. Returns comparison layout, selected node IDs, summaries, revision and Playground URL.NoNoYesNo
playground_media_composeStitch 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.NoNoYesNo
playground_media_generateBatch-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.NoNoYesYes
playground_media_job_cancelCancel 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.YesNoYesNo
playground_media_job_getReconcile 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.NoYesYesNo
playground_media_jobs_listList recent agent image and video dispatch receipts for an authorized Playground project. Returns media job receipts and their current statuses.NoYesYesNo
playground_media_retry_quoteRead 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.NoYesNoNo
playground_media_upload_beginCreate 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. Returns an upload ID, signed upload URL, MIME type, byte limit and expiry.NoNoNoNo
playground_media_upload_completeVerify 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. Returns the created node ID, canvas revision and replay status.NoNoYesNo
playground_memory_listRead approved project-shared memory and this user’s private memory. Requires project view access. Returns the project’s available memories.NoYesYesNo
playground_memory_proposal_reviewApprove 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.NoNoYesNo
playground_memory_proposeRemember 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.NoNoNoNo
playground_memory_searchSearch approved project-shared memory and this user’s private memory by words in their content, with offset/limit pagination. Requires the memory:read grant. Returns matching memories, total count and next-page offset.NoYesYesNo
playground_model_resolveRead-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.NoYesYesNo
playground_models_listDiscover 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.NoYesYesNo
playground_node_getRead one node by ID with its incoming and outgoing connections, its group children, and the current canvas revision. Cheaper than reading the whole graph.NoYesYesNo
playground_node_runRun 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.NoNoYesYes
playground_node_types_listDiscover every Playground node type, what it consumes and produces, and which agent actions are currently supported. Use this before planning graph changes.NoYesYesNo
playground_nodes_searchSearch node IDs, types, titles, text, and prompts. Returns bounded summaries with pagination.NoYesYesNo
playground_output_feedback_listRead this user’s accept/change verdicts for media still attached to the Playground project. Requires project view access. Returns recorded output feedback for the project.NoYesYesNo
playground_project_createCreate 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.NoNoNoNo
playground_project_skill_proposeSubmit instructional Markdown for human review in Playground. The proposal is inactive and grants no tools, connections, or billing rights. Returns skill and proposal IDs, version and proposed status.NoNoNoNo
playground_projects_listList Playground workflows that this OAuth client may read for the current user. Returns accessible project IDs, names and effects, with a truncation indicator.NoYesYesNo
playground_run_cancelStop further agent effects for a run. Provider jobs already submitted may continue and retain their receipts and charges.YesNoYesNo
playground_run_deliveryRead 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.NoYesYesNo
playground_run_diagnoseOne 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.NoYesYesNo
playground_run_eventsReturn 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.NoYesYesNo
playground_run_revertUndo 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. Returns revert status, revision and any conflicting or overridden changes.YesNoYesNo
playground_run_steerAdd 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.NoNoNoNo
playground_skill_loadLoad 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.NoYesYesNo
playground_skills_discoverExplore 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. Returns matching skill summaries and pagination information.NoYesYesNo
playground_storyboard_prepareCreate 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. Returns shot node IDs, source node ID, optional stitch/group IDs and revision.NoNoYesNo
playground_video_analyzeRead-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.NoYesYesNo
playground_video_batch_quoteRead the exact prepared text-to-video shot inputs and total credit ceiling in the requested order. This does not submit or approve jobs. Returns per-node video quotes and the total credit cost.NoYesYesNo
playground_video_extract_framesTake 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. Returns created frame node IDs, image URLs, revision and Playground URL.NoNoYesNo
playground_video_quoteQuote a supported text-to-video model for one prepared clip. This is read only and does not submit a job. Returns model pricing and the quoted video settings.NoYesYesNo
playground_video_trimCut 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.NoNoYesNo
playground_web_page_readFetch 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.NoNoNoYes
playground_workflow_inputs_setSave 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.YesNoYesNo
playground_workflow_inspectRead 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. Returns typed editable inputs, dependencies, stages and workflow readiness.NoYesYesNo
playground_workflow_quoteQuote 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.NoYesNoNo
playground_workflow_runRun 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. Returns a stage quote or execution/approval result with run and job tracking information.YesNoNoYes
playground_workflow_searchFind accessible saved project workflows by name. Returns workflow IDs for inspection and staged execution. This does not search public templates.NoYesYesNo

Details

Registry status
Active
Published
Nov 11, 2026
Updated
Nov 11, 2026
Website
Not given
Categories (suggested)
Design and mediaSuggested categories are assigned automatically from the registry text and may be wrong. Verified operators can correct them.
GDPR
Not declared

Are you the operator? Claim this listing