How it works
Install the skill. Ask it to deploy. Share the URL.
Install the SpringRoll skill in the coding agent you already use, then ask it to deploy your AI-built app. SpringRoll hosts the app and returns a live URL you can share with your team. When the app is ready, you can securely connect it to approved company data without exposing source credentials.
For the bounded handoff and the evidence to keep at each step, read how to deploy an AI-built internal app.
Recommended setup
Install the skill, then ask for the outcome.
The SpringRoll skill covers the full control plane: app records, deployment, promotion, approvals, governed data access, and provenance. On the first live operation, your MCP client opens a browser so you can choose an organization and authorize it; there is no token to copy or store.
Install the SpringRoll skill
One command teaches your coding agent how to deploy with SpringRoll, request approvals, and access governed data.
npx skills add springroll-dev/springroll-skill --skill springroll
Ask your agent to deploy
The agent registers the application, freezes an immutable release, and deploys it. The first live call opens your browser once so you can choose an organization and authorize. There is no token to paste.
/springroll deploy
Open and share the URL
SpringRoll returns a live URL your colleague can open, with ownership and approval already recorded.
https://your-app.comlive
Advanced: Connect SpringRoll MCP manually
Choose your client to configure and authorize the SpringRoll MCP endpoint yourself.
Terminal. One command, then authorize.
- 01
Add SpringRoll
Run this once, from anywhere.claude mcp add --transport http springroll https://springroll.dev/api/mcp
Then start Claude and authorize. Your browser opens by itself./mcp
- 02
Authorize
Choose your organization in the browser and approve the connection. No credential is exposed for you to store.
- 03
Deploy
Ask the agent to register, validate, and deploy the project.
/springroll deploy
Also claude.ai. Added as a custom connector.
Custom connectors are a paid feature on Claude: Pro, Max, Team, or Enterprise.
- 01
Add SpringRoll
Open Settings, then Connectors.
Choose Add custom connector.
NameSpringRoll
URLhttps://springroll.dev/api/mcp
Save, then connect. Claude opens this authorization page itself.
- 02
Authorize
Choose your organization in the browser and approve the connection. No credential is exposed for you to store.
- 03
Deploy
Ask the agent to register, validate, and deploy the project.
Deploy this project to SpringRoll.
Web. Needs developer mode turned on first.
Connectors are available on ChatGPT Pro and Plus on the web. Use your public SpringRoll MCP endpoint below; ChatGPT must be able to reach it over the internet.
- 01
Add SpringRoll
In Settings, open Connectors, then Advanced settings, and turn on Developer mode.
Back in Connectors, choose Create.
NameSpringRoll
MCP server URLhttps://springroll.dev/api/mcp
AuthenticationOAuth
Create, then authorize. The connector appears under Developer mode in the composer.
- 02
Authorize
Choose your organization in the browser and approve the connection. No credential is exposed for you to store.
- 03
Deploy
Ask the agent to register, validate, and deploy the project.
Deploy this project to SpringRoll.
Terminal. The CLI finds the authorization server itself.
- 01
Add SpringRoll
Run this once. Codex probes the URL, sees it supports OAuth, and opens your browser.codex mcp add springroll --url https://springroll.dev/api/mcp
The entry is written to ~/.codex/config.toml. Add it inside a project to scope it to that project instead.
- 02
Authorize
Choose your organization in the browser and approve the connection. No credential is exposed for you to store.
- 03
Deploy
Ask the agent to register, validate, and deploy the project.
Deploy this project to SpringRoll.
Editor and CLI. One project file, then OAuth login.
- 01
Add SpringRoll
Create .cursor/mcp.json in your project. Cursor and Cursor Agent both read this file.
.cursor/mcp.json{"mcpServers":{"springroll":{"url":"https://springroll.dev/api/mcp"}}}Authorize SpringRoll from Cursor Agent. Your browser opens for organization approval.cursor-agent mcp login springroll
- 02
Authorize
Choose your organization in the browser and approve the connection. No credential is exposed for you to store.
- 03
Deploy
Ask the agent to register, validate, and deploy the project.
Deploy this project to SpringRoll.
One URL. Nothing else to configure.
- 01
Add SpringRoll
Remote MCP endpointhttps://springroll.dev/api/mcp
Any MCP client that speaks streamable HTTP can be pointed straight at this URL. It still opens a browser to authorize. The endpoint advertises its own authorization server, so the URL is the only thing to configure.
Clients that register a private-use redirect scheme without a dot in it are refused at registration. Use a client path with an HTTPS, loopback, or reverse-domain callback.
- 02
Authorize
Choose your organization in the browser and approve the connection. No credential is exposed for you to store.
- 03
Deploy
Ask the agent to register, validate, and deploy the project.
Deploy this project to SpringRoll.
The simplified MCP flow
One deploy call does the heavy lifting.
- 01
springroll.contextCheck which organization you are acting in and what you are allowed to do.
- 02
springroll.deployRegister the app, capture its release, and start the deployment in one call.
- 03
springroll.deploy.statusFollow the build and get the public URL when it is ready.
- 04
springroll.approval.submitRequest production approval when your organization requires it.
- 05
springroll.deploy.promotePromote the approved release to production.
- 06
springroll.connect.data_productsFind the company data products available to the app.
- 07
springroll.connect.request_accessRequest a governed view of a data product for the app.
- 08
springroll.connect.access_statusCheck the grant and learn what the approved app can query.
The everyday path is context, deploy, then status. SpringRoll creates the app record and release as part of the deploy call. Approval is optional by organization policy; Connect stays separate so data access can be granted, limited, or revoked without redeploying the app.
Machine-readable reference
Every SpringRoll interface, at a predictable URL.
Nothing here needs an account. An agent can read all of it before deciding whether SpringRoll is the right tool, and every page on this site is also available as markdown. Request it with Accept: text/markdown.
- Detailed API reference
- Authentication, versioning, quotas, errors, and the machine-readable descriptions behind the REST and MCP surfaces.
- OpenAPI 3.1 specification
- The full REST surface. Every operation carries a unique operationId, a description, and typed request and response schemas, so it converts straight into function-calling tool definitions.
- API index
- An unauthenticated index of every documented endpoint, plus how to authenticate. The right first fetch.
- Capabilities
- Every MCP tool with its summary and read-only flag, and the current application manifest contract with a worked example.
- MCP Server Card
- The MCP server, to the SEP-1649 discovery standard: streamable-http transport, endpoint, OAuth metadata, protocol versions, and every tool with a typed input schema. Also answered at /.well-known/mcp.json for clients using the older convention.
- Agent instructions
- When to reach for SpringRoll, when not to, and the normal call sequence.
- llms.txt
- The short version of all of the above, in the llmstxt.org format.
- Health
- Unauthenticated liveness and readiness probe.
Security
The controls stay in the request path.
Security is built into the route between an app and your data. SpringRoll checks the organization, the person, the app identity, and the approved data rules on every request. Change or revoke a grant and the next request follows the new rule; the audit trail shows who changed it.
- 01
Deployment stays governed
Tenant Admins choose Direct to Production or a staged approval route. Direct deployments skip only the workflow approval: runtime readiness, ownership, support, access, data, configuration, scan, authorization, and provider checks still apply. Staged production deployment, connector access, scope increases, tenant-wide visibility, ownership changes, domain changes, rollback, and retirement require a person. Agent tokens cannot record an approval decision.
- 02
No secret is ever displayed
Connector credentials, runtime tokens, and secret environment variables are write-only. The interface shows names, scopes, and shapes. An approved connector grant injects environment variables into the deployed application; neither the coding agent that requested the grant nor the person who approved it can read the value back out. Agent tokens and invitation links are shown exactly once, at creation, with the reason stated.
- 03
Organizations are isolated twice
Multi-tenant from the first migration. Primary isolation is the application's own query scope, which injects and asserts the tenant id on every read and write. Behind it, PostgreSQL row-level security reads a tenant id set inside the transaction and makes a cross-tenant row unreachable even if a future query gets its filter wrong. FORCE ROW LEVEL SECURITY is applied so those policies bind the table owner, which is the role the application connects as. It is a second line of defence for scoped work rather than a substitute for the scope. A schema test suite fails if a policy is dropped.
- 04
The audit log cannot be rewritten
Every governed action appends an event carrying the actor, the tenant, the resource, the correlation id, and a hash of the previous entry. The chain is verifiable, and database triggers refuse UPDATE and DELETE on the table outright. Pruning requires an explicit session flag an application connection does not have. The question it exists to answer is who deployed what, when, with which permissions, using which data sources.
- 05
Identity comes from your directory
SCIM 2.0 provisioning for users and groups, plus OIDC and SAML for sign-in. Deprovisioning in your identity provider removes access here. Roles are Tenant Admin, App Creator, App Owner, Approver, and App User, with a separate platform superadmin path that is not a tenant role.
- 06
Agents authenticate like software, not like people
The remote MCP endpoint implements OAuth 2.1 with PKCE, RFC 7591 dynamic client registration, and RFC 9728 protected-resource metadata. A client discovers the authorization server from the endpoint itself, opens a browser, and receives its own credential. Nobody pastes a token anywhere. Every credential resolves to exactly one membership, so an agent acts as a named person and inherits only that person's permissions.
- 07
Where enforcement reaches
SpringRoll controls who can discover and launch an application through the App Portal, and which approved data and connector grants that application holds. A provider URL is not behind SpringRoll. Anyone who knows a deployment's own hostname reaches the provider directly, so treat that hostname as reachable and put nothing behind it that the grant model is not already protecting.
Things the control plane refuses
- Redirect URIs must be https, loopback http, or a reverse-domain private-use scheme. Clients registering a bare custom scheme are refused, because two of them could collide and receive each other's authorization codes.
- Authorization is enforced server-side. The interface never hides an action the server would allow, and never offers one it would refuse.
- Promotion always references an immutable release. There is no deploy latest operation that quietly rebuilds from a branch that has moved.
- Requests are rate limited before authentication as well as after, so an unauthenticated flood is bounded.
These are current product controls. SpringRoll does not claim a certification, compliance status, benchmark, uptime figure, or availability commitment here.
