Kalpana Batch
Server Details
Fill templates from product data and render banners, ads and listing images in bulk.
- Status
- Healthy
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Score is being calculated.
Available Tools
18 toolscancel_batchCancel a batch's unfinished jobsDestructiveIdempotentInspect
Stops a batch: every job still pending or processing becomes cancelled. A cancelled job is final and is not charged; a render already under way may finish, but its result is discarded. Jobs that already rendered keep their output and their charge. Cancelled jobs cannot be resumed; to render them again, create_batch a new batch with those rows. get_batch shows the cancelled count, and repeating the call cancels nothing more. Needs batches:create on the connection and renders:create in the user's workspace role.
| Name | Required | Description | Default |
|---|---|---|---|
| batchId | Yes | Batch ID returned by create_batch or list_batches |
Output Schema
| Name | Required | Description |
|---|---|---|
| cancelled | Yes | Jobs this call cancelled; 0 when they had all finished |
| stoppedMessages | Yes | Queued renders removed before they started |
cancel_jobCancel one unfinished jobDestructiveIdempotentInspect
Stops one job that is pending or processing: it becomes cancelled, final and not charged; a render already under way may finish, but its result is discarded. A job that already finished is left as it is. Other jobs in its batch keep rendering; cancel_batch stops them all. Needs batches:create on the connection and renders:create in the user's workspace role.
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | Yes | Job ID from get_batch_jobs |
Output Schema
| Name | Required | Description |
|---|---|---|
| cancelled | Yes | Jobs this call cancelled; 0 when they had all finished |
| stoppedMessages | Yes | Queued renders removed before they started |
create_batchCreate a draft batchInspect
Saves a new draft batch in the template's workspace with one pending job per row, an image, or a video when outputFormat is mp4, gif, webm or mov; nothing renders and no credits are spent until run_batch. The result's creditCost is the exact number of credits run_batch will spend on these jobs. Every call creates a separate batch, so repeating a call duplicates it; changing an existing draft is update_batch's job. Rows are checked as in validate_batch, and one invalid row rejects the whole request with nothing saved. An animated template renders each image at one moment of its motion: stillTime, else the page's own still time, else the last frame; a video renders all of it and takes no stillTime. Needs templates:read and batches:create.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Batch name shown in Kalpana and used in output filenames, 1 to 200 characters | |
| rows | Yes | 1 to 500 rows. Each keys a layer by its name (case aside) or id, the key get_template_inputs gives, to a plain value: text as a string, an image as an asset id or file name, or { asset, fit, zoom, panX, panY } and { text, visible } when framing or visibility changes. rowExample in get_template_inputs is a ready row. With columns, a row is instead an array of cells in column order, which keeps large batches small. null leaves a layer at the template's own value. Layers left out keep the template's value, or the one in defaults. | |
| pageId | No | One page of the template (the designer connection's page_id). A template's pages are separate designs, each with its own inputs; the first page when omitted. | |
| columns | No | For array rows: the layer key of each cell, in order, like a spreadsheet header | |
| defaults | No | Values every row gets unless it gives its own, such as a logo or call to action shared by all rows | |
| stillTime | No | Animated templates only: the second of the motion that each image shows. Omit it to use the page's own still time (get_template_inputs stillTime), else the last frame. If the page has no still time, ask the user, because an outro or a loop can make the last frame a bad image. | |
| templateId | Yes | Template ID returned by search_templates | |
| outputFormat | No | Output format. png, jpeg and webp render one image per row and pdf one vector page; mp4 and gif render each row's whole motion as a video, and webm (VP9) and mov (ProRes 4444) as a transparent video for overlaying on other footage. Video needs an animated template (get_template_inputs isAnimated) and costs more credits per row | png |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | batchId for run_batch and the other batch tools |
| rowCount | Yes | Jobs created, one per row |
| creditCost | Yes | Actual credit cost to run every job in this batch. |
| workspaceId | Yes |
get_batchCheck batch progressRead-onlyIdempotentInspect
Returns one batch's overall status with its total, completed, failed, and processing job counts. Rendering after run_batch happens in the background, so repeated calls track it until processing reaches 0. list_batches gives the same counts for many batches at once; per-job values and render errors are in get_batch_jobs, and download URLs in get_batch_outputs. Needs batches:read.
| Name | Required | Description | Default |
|---|---|---|---|
| batchId | Yes | Batch ID returned by create_batch or list_batches |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| name | Yes | |
| total | Yes | Jobs in the batch |
| failed | Yes | Jobs that failed |
| status | Yes | processing while any job renders; pending while jobs wait for run_batch; once every job has finished: completed when all rendered, partial when some rendered and others failed or were cancelled, failed when none rendered and at least one failed, cancelled when none rendered, none failed and at least one was cancelled. The counts carry the detail |
| cancelled | No | Jobs cancelled |
| completed | Yes | Jobs rendered |
| createdAt | Yes | Creation time, ISO 8601 |
| processing | Yes | Jobs rendering now |
| workspaceId | Yes |
get_batch_jobsList jobs in a batchRead-onlyIdempotentInspect
Lists a batch's jobs in row order, one page at a time, with each job's ID, template, current row (keyed and shaped as rows are written), status, render error, and whether it can still be edited. These job IDs and values are the input for update_batch and update_job, and error explains why a render failed. Download URLs are not included (get_batch_outputs has them), and get_batch is lighter for overall progress. Needs batches:read.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, starting at 1 | |
| limit | No | Results per page (default 10); values above 20 are capped at 20 | |
| batchId | Yes | Batch ID returned by create_batch or list_batches |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | |
| items | Yes | |
| limit | Yes | Page size actually applied |
| total | Yes | Count of all matches across every page |
| batchStatus | Yes | draft until run_batch first succeeds; update_batch adds and removes jobs only in drafts |
get_batch_outputsGet rendered imagesRead-onlyIdempotentInspect
Returns the download URLs of a batch's rendered images, one page of jobs at a time, with each job's status and format; downloadUrl is null until that job has rendered. URLs are temporary, so a later call returns fresh ones. Row values and render errors are not included (get_batch_jobs has them), and get_batch is lighter for checking progress. inspect_image can view a downloadUrl. Needs batches:read, renders:read, and creatives:read.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, starting at 1 | |
| limit | No | Results per page (default 10); values above 20 are capped at 20 | |
| batchId | Yes | Batch ID returned by create_batch or list_batches |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | |
| items | Yes | |
| limit | Yes | Page size actually applied |
get_template_inputsDescribe a template's fillable inputsRead-onlyIdempotentInspect
Returns the inputs of one template that batch rows can fill: each input's id, label, text or image type, whether it is required, its default (a text input's value, an image input's asset and preview), image slot size and fit, the key rows use for it (its name, or its id when two layers share the name), a text input's styles (s1, s2, ...) when it has several, and a valueExample; rowExample is a whole ready row. Those keys and values are what validate_batch, create_batch, update_batch, and update_job accept. It needs a template ID; finding templates is search_templates' job. Inputs the author turned off or placed on hidden layers are left out unless requested, and omittedInputs names them: their template text still renders, so check them (dates, terms, links) when the copy changes theme; a row can fill them by key. The template's internal layout is not returned. An animated template also gives its duration and its stillTime, the second its images show unless create_batch gives another. Needs templates:read.
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | No | One page of the template (the designer connection's page_id). A template's pages are separate designs, each with its own inputs; the first page when omitted. | |
| templateId | Yes | Template ID returned by search_templates | |
| includeHidden | No | Also return inputs on layers hidden in the template | |
| includeDisabled | No | Also return inputs the template author turned off |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| name | Yes | |
| pages | No | The template's pages; each is a separate design with its own inputs |
| width | Yes | Width in pixels; null if unknown |
| height | Yes | Height in pixels; null if unknown |
| inputs | Yes | |
| pageId | No | The page these inputs are from (pass it as pageId to the batch tools) |
| openUrl | Yes | Link that opens the template in the Kalpana app |
| duration | No | An animated template's timeline length in seconds |
| stillTime | No | The second the page's still image shows, set by its designer. Images use it unless create_batch gives stillTime; without either, they show the last frame |
| isAnimated | No | True when the template moves; each image shows one moment of the motion |
| rowExample | No | A row filling every input, keyed and shaped as rows are: copy and edit it |
| description | Yes | |
| omittedInputs | No | Inputs left out of `inputs`. Their template text renders as designed unless a row fills them by key; check them when the copy changes theme (dates, terms, links) |
inspect_imageView an imageRead-onlyIdempotentInspect
Fetches one PNG, JPEG, or WebP image from a Kalpana URL (a template or asset previewUrl, or a downloadUrl from get_batch_outputs) and returns it as image content with its content type and byte size. Other hosts, other file types, and files over 5 MB are rejected, and a fetch gives up after 15 seconds. It shows one image per call; it does not build contact sheets or render templates, whose look comes from their previewUrl.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | previewUrl or downloadUrl returned by another Kalpana tool |
Output Schema
| Name | Required | Description |
|---|---|---|
| sizeBytes | Yes | |
| contentType | Yes | MIME type of the returned image |
list_asset_collectionsList image collectionsRead-onlyIdempotentInspect
Lists the image collections (named groups of images) in the workspace, most recently updated first, with each collection's ID, description, and image count. All matches come back in one response, without pages. A collection ID only narrows search_assets to that collection; finding images by filename, or across the whole workspace, is search_assets alone. Needs assets:read in the workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | Text matched against collection names; omit to list all collections |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes |
list_batchesList batchesRead-onlyIdempotentInspect
Lists the workspace's batches, newest first, one page at a time, with each batch's ID, name, status, and total, completed, failed, and processing job counts; total counts every match, so it also answers how many batches exist. Filters narrow by batch name or template. For one known batch ID, get_batch returns the same counts, and job details are in get_batch_jobs. Needs batches:read.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, starting at 1 | |
| limit | No | Results per page (default 10); values above 20 are capped at 20 | |
| search | No | Text matched against batch names | |
| templateId | No | Only batches with jobs for this template |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | |
| items | Yes | |
| limit | Yes | Page size actually applied |
| total | Yes | Count of all matches across every page |
list_workspacesThe connected workspaceRead-onlyIdempotentInspect
Returns the one Kalpana workspace this connection covers, chosen when the user connected: its ID, name, slug, the user's role, and what that role allows here, both as permission codes and in plain words (for example whether it can render batches). Every other tool works in this workspace, so none takes a workspace ID. A missing permission explains a 403 from another tool, such as run_batch without renders:create. Working in another workspace needs a reconnect that chooses it. Needs workspaces:read.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes |
run_batchRender a batch (spends credits)DestructiveIdempotentInspect
Queues every pending job in a batch for rendering and returns once they are queued; images render in the background, tracked by get_batch and collected with get_batch_outputs. It spends the workspace organization's credits equal to the pending jobs' cost, which is create_batch's creditCost unless jobs were added or removed since. When the balance is too low nothing is queued, the error says not enough credits, and the batch stays a draft. A successful run publishes a draft, which ends add and remove edits through update_batch; archived batches return an error. Only pending jobs are queued, so a repeat call adds no work and no cost, and jobs reset to pending by update_batch or update_job render on the next call. If the workspace has webhook endpoints, the run's results are sent to them unless webhooks is false. Needs batches:create on the connection and renders:create in the user's workspace role.
| Name | Required | Description | Default |
|---|---|---|---|
| batchId | Yes | Batch ID returned by create_batch or list_batches | |
| webhooks | No | Whether this run sends its results (batch.completed, job.completed) to the workspace's webhook endpoints. Omit to keep the batch's setting, which is on; pass false only when the user asks not to notify their endpoints |
Output Schema
| Name | Required | Description |
|---|---|---|
| failed | Yes | Jobs that could not be queued |
| message | Yes | |
| dispatched | Yes | Pending jobs queued by this call; 0 on a repeat call |
search_assetsFind image assetsRead-onlyIdempotentInspect
Finds images to put into template image inputs: the ready PNG, JPEG, and WebP files under 5 MB in the workspace, one page at a time, with a previewUrl each. With no filters it lists the most recently updated images; collectionId limits results to one collection, query matches filenames, and both combine. An asset's id is the asset_id of an image input in batch rows. Collection IDs come from list_asset_collections; inspect_image shows a previewUrl; the user's own files are added with upload_images. Needs assets:read in the workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, starting at 1 | |
| limit | No | Results per page (default 8); values above 12 are capped at 12 | |
| query | No | Filename text to search for, 2 to 100 characters; omit to browse | |
| collectionId | No | Collection ID from list_asset_collections; limits results to that collection |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | |
| items | Yes | |
| limit | Yes | Page size actually applied |
| total | Yes | Count of all matches across every page |
search_templatesFind templatesRead-onlyIdempotentInspect
Finds the workspace's templates to fill with data, one page at a time, with each template's ID, workspace, pixel size, input count, previewUrl, and a link that opens it in Kalpana. Without query it lists recently updated templates; query matches an exact template ID, name, description, or campaign topic, and the filters narrow by preview availability or exact size. Animated templates are included and marked isAnimated: their images show one moment of the motion. A template's fillable inputs are not included; get_template_inputs returns them for one ID, and inspect_image shows a previewUrl. Needs templates:read.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, starting at 1 | |
| limit | No | Results per page (default 10); values above 20 are capped at 20 | |
| query | No | Exact template UUID or name, description, or campaign topic; at least 3 characters. Omit to browse. | |
| width | No | Exact template width in pixels | |
| height | No | Exact template height in pixels | |
| hasPreview | No | Set true to exclude templates without a preview URL |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | |
| items | Yes | |
| limit | Yes | Page size actually applied |
| total | Yes | Count of all matches across every page |
update_batchEdit a draft batchDestructiveInspect
Renames a batch and, while it is a draft (until run_batch first succeeds), changes, adds, or removes its editable jobs (pending, or failed with no output) in one request. update merges the given fields into each listed job's values and resets it to pending; unlisted jobs are untouched. remove deletes those jobs permanently, and each add creates new jobs, so repeating a request with add duplicates them. Processing and rendered jobs cannot change. Nothing renders until run_batch, and adding or removing jobs changes what it costs. One pending job in a batch that is no longer a draft is update_job's case. Needs templates:read and batches:create.
| Name | Required | Description | Default |
|---|---|---|---|
| add | No | New jobs to append, up to 500 | |
| name | No | New batch name, 1 to 200 characters; omit to keep it | |
| remove | No | IDs of editable jobs to delete permanently | |
| update | No | Jobs to change, up to 500 | |
| batchId | Yes | Batch ID returned by create_batch or list_batches |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| deleted | Yes | Jobs removed |
| updated | Yes | Jobs changed |
| inserted | Yes | Jobs added |
update_jobEdit one pending jobDestructiveIdempotentInspect
Changes one pending job that has no output yet, in any batch, including batches that are no longer drafts. The given fields replace those fields' previous values and other fields stay as they are, so repeating the same request gives the same result. Failed, processing, and rendered jobs are rejected; a failed job in a draft can still change through update_batch. Nothing renders until run_batch. Several jobs at once, or adding and removing jobs, is update_batch's case. Needs templates:read and batches:create.
| Name | Required | Description | Default |
|---|---|---|---|
| row | Yes | Only the layers to change, keyed and valued as create_batch rows are | |
| jobId | Yes | Pending job ID from get_batch_jobs | |
| outputFormat | No | New output format; omit to keep the job's format. mp4, gif, webm or mov makes it a video, which needs an animated template and costs more credits. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| status | Yes | pending waits for run_batch, processing is rendering, success has rendered, failed has a render error, cancelled was stopped by cancel_batch or cancel_job (final, not charged) |
| batchId | Yes | |
| creditCost | Yes | Credits run_batch spends on this job |
| outputKind | Yes | image for still renders (png, jpeg, webp, pdf); video for mp4, gif, webm or mov |
| outputFormat | Yes | File format the job renders to |
upload_imagesAdd the user's imagesIdempotentInspect
Brings the user's own images (PNG, JPEG, or WebP, up to 5 MB each) into the workspace, optionally into a collection, which is made when no collection has that name. Without files it returns a link to the workspace's Images page (the collection's page with collection) for the user to drop the images into; after they say they are done, search_assets finds them. An agent that has the files (a shell, files on disk) passes files with each one's SHA-256 hash, content type, and size, PUTs each file's bytes to its uploadUrl with that Content-Type header, then calls again with done (each hash and file name) to record them. The recorded images come back with their id, the asset_id of an image input in batch rows. Image data is not accepted inline as base64. Needs assets:create.
| Name | Required | Description | Default |
|---|---|---|---|
| done | No | Files you uploaded, to record them | |
| files | No | Files you will upload yourself | |
| collection | No | Collection to put the images in, by name |
Output Schema
| Name | Required | Description |
|---|---|---|
| link | No | The workspace's Images page for the user |
| step | Yes | link: give the user the link; uploads: PUT each file, then call with done; done: the images are recorded |
| failed | No | |
| images | No | |
| uploads | No | |
| collection | No |
validate_batchCheck rows before creating a batchRead-onlyIdempotentInspect
Checks batch rows against a template and reports every problem by row index and field, without saving anything or spending credits. It runs the same row checks as create_batch, so rows that pass here are accepted there, while create_batch saves nothing if any row fails. Each row comes back as the server understood it (layer keys, text, and each image resolved to its asset id and file name), so a misread value shows before any credits are spent. A layer name two layers share is refused with their ids: fill each by id and tell the user, who can rename one. It does not measure text, so copy longer than the template's sample can still overflow its box. Needs templates:read.
| Name | Required | Description | Default |
|---|---|---|---|
| rows | Yes | 1 to 500 rows. Each keys a layer by its name (case aside) or id, the key get_template_inputs gives, to a plain value: text as a string, an image as an asset id or file name, or { asset, fit, zoom, panX, panY } and { text, visible } when framing or visibility changes. rowExample in get_template_inputs is a ready row. With columns, a row is instead an array of cells in column order, which keeps large batches small. null leaves a layer at the template's own value. Layers left out keep the template's value, or the one in defaults. | |
| pageId | No | One page of the template (the designer connection's page_id). A template's pages are separate designs, each with its own inputs; the first page when omitted. | |
| columns | No | For array rows: the layer key of each cell, in order, like a spreadsheet header | |
| defaults | No | Values every row gets unless it gives its own, such as a logo or call to action shared by all rows | |
| templateId | Yes | Template ID returned by search_templates |
Output Schema
| Name | Required | Description |
|---|---|---|
| rows | No | Each row as the server understood it, keyed by layer key, images as { asset, name } |
| valid | Yes | True when every row passes |
| issues | Yes | Every problem found; empty when valid |
| rowCount | Yes | |
| validRows | Yes | |
| invalidRows | Yes | |
| sharedNames | No | Layer names more than one layer has; rows key those layers by id. Mention them to the user. |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
18 tool updates
- First observed
cancel_batch - First observed
cancel_job - First observed
create_batch - First observed
get_batch - First observed
get_batch_jobs - First observed
get_batch_outputs - First observed
get_template_inputs - First observed
inspect_image - First observed
list_asset_collections - First observed
list_batches - First observed
list_workspaces - First observed
run_batch - First observed
search_assets - First observed
search_templates - First observed
update_batch - First observed
update_job - First observed
upload_images - First observed
validate_batch
Publisher details
- Operator
- Shreekaram Technologies · Publisher source
- Operator website
- https://kalpana.one · Publisher source
- Vendor relationship
- First-party
- Documentation
- https://docs.kalpana.one/mcp/quickstart
- Trust center
- Not applicable
- Restrictions
- Free Kalpana account at app.kalpana.one. Rendering batches spends render credits. Each connection covers one workspace chosen at sign-in, within the user’s role there. · Publisher source
Related MCP Connectors
Generate branded images at scale: design templates and render them to PNGs by prompt.
Design editable social, banner and ad templates from a brief, checked by rendering.
- OrshotOAuthcom.orshot
Render on-brand images, PDFs and videos from templates. 60+ tools: brand kit, folders, workflows.
Deterministic image rendering for agents: JSON template in, on-brand PNG out.
Related MCP Servers
AlicenseAqualityBmaintenanceRenders PDFs from HTML templates or saved templates and spreadsheet data, with batch job support and document retrieval.1158 npm1MIT- AlicenseNot gradedqualityBmaintenanceProduct mockup rendering API for e-commerce and print-on-demand. Upload Photoshop PSD templates, render photorealistic mockups by placing your designs onto smart object layers. 9 tools including AI-powered render (no PSD needed), template management, and account info. Supports remote HTTP (OAuth) and local stdio (npx) transports.169 npmMIT
- AlicenseAqualityCmaintenanceEnables creating and editing Amazon listing images and product videos from live catalog data, with Amazon compliance rules, character-consistent generation, and resumable video generation.12MIT
- AlicenseNot gradedqualityDmaintenanceGenerates logos, social media posts, app-store screenshots, comic panels, and visual-novel assets from natural-language prompts using 119 templates.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.