Skip to main content
Glama

SpringRoll

Deploy a project

springroll.deploy
Idempotent

Registers the project if it is new, attaches whatever source you give it, and deploys it using the application's Deployment workflow. Direct applications go to Production; Staged applications go to Development. Returns the live URL, or a deployment id to poll if the build is still running.

You do not decide whether this project needs git. Send what you have and SpringRoll works it out: • a pushed git remote → pass repositoryUrl (and ref if not the default branch) • no remote, or uncommitted work → pass archive, a base64 tar+gzip of the source: tar --exclude=node_modules --exclude=.next --exclude=.git --exclude='.env*'
-czf - . | base64 -w0 • both → SpringRoll builds from git, and falls back to your files if the ref cannot be resolved (an unpushed branch, typically) • neither, on an app that already exists → redeploys its current source

Upload SOURCE, not build output: SpringRoll runs the build. node_modules, .next, dist, build, out, coverage and .log files are dropped automatically and reported. Every .env file and .git/ is REFUSED outright, naming the offending path: configuration belongs in SpringRoll, not in the bundle. Upload limits are about 3 MB compressed on the wire (a platform request-body cap, not a preference), 20 MB expanded, 2000 files, 512 KB per file; a project past them should pass repositoryUrl instead, which SpringRoll clones directly with no size limit. Sending the same files twice is free, because bundles are addressed by content.

Direct to Production skips workflow approvals but keeps production safety checks. Staged applications continue to use explicit promotion and approvals.

Input Schema

NameRequiredDescriptionDefault
refNoBranch, tag, or full commit SHA. Defaults to the app's default revision.
nameNo
slugNo
tagsNo
filesNoPath-to-contents map. Use `archive` for anything beyond a few files.
archiveNoBase64 of a gzipped tar of the project source. Preferred over `files`.
contextYesExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization."
manifestNoA SpringRoll manifest. Supersedes the metadata fields below; the source fields still apply.
frameworkNo
placementNoOptional, provider-neutral hints about what this application needs. SpringRoll chooses the provider and plan; these only inform that choice. Leave out anything you do not actually know: monthly billing quantities remain unknown; ordinary workload hints are inferred from the source and named on the placement receipt, which is more useful to the user than a confident guess.
departmentNo
applicationNoAn existing app's slug or id. Omit on the first ship; `name` implies it.
descriptionNo
waitSecondsNoHow long to wait for the build before returning. Defaults to 20. A real build usually outlasts this; poll springroll.deploy.status after.
buildCommandNo
preferSourceNoTie-breaker when both a repository and files are given. Defaults to git.
filesEncodingNo
repositoryUrlNo
rootDirectoryNo
idempotencyKeyYesRequired. A stable, caller-generated key. Retrying with the same key returns the original result instead of creating a duplicate.
installCommandNo
supportContactNoTeam channel or email for users of this app. Required before production.
outputDirectoryNo
dataClassificationNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate a mutating, idempotent operation, but the description goes much further: it explains that build output is not accepted, that .env and .git are refused, that upload limits exist, that duplicate bundles are content-addressed, and that production safety checks still apply even when approvals are skipped. This is rich behavioral context well beyond the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long, but the tool is complex and every sentence adds critical information: source selection, exclusions, limits, environment safety, and workflow routing. It is front-loaded with the core process and return behavior, then uses bullets to keep the decision logic scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 24 parameters, no output schema, and significant operational caveats, the description covers the full lifecycle: what gets registered, which source form to send, what is rejected, size limits, build behavior, workflow differences, return values, and how to follow up on an ongoing build. Nothing an agent needs to invoke this tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 46%, so the description carries real parameter meaning: it clarifies repositoryUrl, ref, archive, files-as-source, preferSource-like fallback behavior, waitSeconds polling, and the source-vs-build distinction. It does not explain every underspecified parameter, but the most consequential decision parameters are given practical, non-obvious semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear, specific process: register if new, attach source, deploy through the application's workflow, and return a live URL or deployment id. It also distinguishes Direct vs Staged routing, so an agent understands exactly what the tool accomplishes beyond its title.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use guidance for the key alternatives: pass repositoryUrl for a pushed git remote, pass archive for local/uncommitted source, send both for fallback behavior, and send neither to redeploy existing source. It also points to springroll.deploy.status for polling and notes that staged applications use explicit promotion and approvals, routing the agent to the right sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources