Skip to main content
Glama

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

TableJSON 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: omitted fields are inferred from the source and every inference is 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

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already signal a non-read-only, idempotent operation, and the description adds substantial behavioral context: it registers new projects, redeploys existing ones, falls back from git to uploaded files, drops build artifacts, refuses .env and .git paths, imposes upload limits, and reports offending paths. This goes well beyond the structured fields and gives an agent accurate expectations for side effects and constraints.

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 dense and front-loaded: the first sentence states what the tool does and what it returns, followed by tightly organized source-selection bullets and constraint callouts. Every paragraph earns its place given the complexity of the tool, and the formatting makes scanning easy.

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?

For a 24-parameter deployment tool with no output schema, the description covers the return behavior, source options, environment routing, approval semantics, upload limits, and failure-prone bundling pitfalls. Nothing essential to calling the 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 description coverage is only 46%, so the description carries real parameter-semantic weight. It clarifies the archive format and exact tar command, explains when repositoryUrl is appropriate and that it has no size limit, and adds nuance to ref and fallback behavior. Not every optional parameter is discussed, but the schema already documents those adequately.

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 names a specific action on a specific resource: registering/attaching source/deploying a project through SpringRoll's Deployment workflow. It also distinguishes itself from sibling tools by explaining the Direct-to-Production vs Staged routing and by deferring polling and promotion elsewhere.

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?

The description gives explicit decision rules for when to pass repositoryUrl vs archive, what happens when both or neither are supplied, and why source rather than build output should be uploaded. It even tells the agent which cases should use a different tool path, such as Staged applications requiring explicit promotion and approvals.

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.

TDQS

A4.4/5.0
Disambiguation5/5

Each tool targets a distinct resource and action: app metadata, approvals, connect grants, deployments, placement, and policy are cleanly separated by namespace and verb. Even close pairs like placement.preview vs deploy or approval.submit vs deploy.promote are explicitly differentiated in their descriptions.

Naming Consistency4/5

Most tools follow a clear springroll.<area>.<verb> pattern (app.get, approval.submit, deploy.promote, policy.check). The pattern is weakened by a few noun-style or verb-only exceptions: springroll.context, springroll.deploy, and connect.data_products do not fit the same verb shape.

Tool Count5/5

Fifteen tools is at the upper bound of a well-scoped set, and each tool covers a distinct, justified part of the deployment and governance lifecycle. The count is appropriate for a platform that spans apps, approvals, data access, deployment, placement, and policy.

Completeness4/5

Core workflows are well covered: deploy, promote, poll status, preview placement, check policy, request/check data access, and submit/get approvals. Minor gaps exist around executing rollbacks or retirements after approval and listing/cancelling deployments, but these do not break the main agent workflows.

Resources