SpringRoll
by springrolldev · remote · no sign-in to list tools · v0.1.0 · published by GitHub user springrolldev
Register, deploy, review, and govern internal applications built with coding agents.
21 tools: 13 change things and 8 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things13Claude Code: ask: see these tools
- Only reads8Claude Code: allow: see these tools
29 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http springroll https://springroll.dev/api/mcpFindings
Matches of fixed checks, with the text they matched.
The description refers to ".env*" and ".env".
What this check looks forMatched text
description: "...exclude=.next --exclude=.git --exclude='.env*' \ -czf - . | base64 -w0 •..."
The server marks "springroll.deploy.status" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "springroll.deploy.status" says "deploy": a word for a change.
The description mentions "credentials".
What this check looks forMatched text
description: "...he authenticated member. Do not include credentials. Reuse the idempotency key when retryin..."
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."
The description mentions "credentials".
What this check looks forMatched text
description: "...ent can actually land. It never returns credentials."
Show 23 more findingsShow fewer
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."
The description mentions "credentials".
What this check looks forMatched text
description: "...puted from the public catalog alone and credentials never affect it: connecting an account..."
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."
The description mentions "credential".
What this check looks forMatched text
description: "...a source supports) but never a host, a credential, a table name, or a connection string...."
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."
The description mentions "credential".
What this check looks forMatched text
description: "...eadable until then. You never receive a credential: an approved grant lets the deployed ap..."
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."
The description mentions "credentials".
What this check looks forMatched text
description: "...e application record. SpringRoll scrubs credentials it recognises before writing (agent tok..."
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
21 tools
Changes things 13Claude Code: ask
springroll.app.presentation.generate_iconQueue one premium icon draft from the app's reviewed purpose.1 finding
Why it is in this group
- The name "springroll.app.presentation.generate_icon" says "generate": a word for a change.
Findings
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."
Description, as the server wrote it Queue one premium icon draft from the app's reviewed purpose. Requests are limited and deduplicated. Artwork never blocks deployment or publishes itself.
Annotations the server declares
- title: Prepare an app icon draft
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
springroll.app.presentation.saveSave listing copy and selected image IDs to a private draft.1 finding
Why it is in this group
- The name "springroll.app.presentation.save" says "save": a word for a change.
Findings
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."
Description, as the server wrote it Save listing copy and selected image IDs to a private draft. Read the revision first. Use factual copy and real, reviewed screenshots. Only the owner or admin can publish in SpringRoll.
Annotations the server declares
- title: Prepare app presentation draft
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
springroll.app.presentation.uploadUpload a real screenshot or app icon as base64 PNG, JPEG, or WebP (8 MB maximum).1 finding
Why it is in this group
- The name "springroll.app.presentation.upload" says "upload": a word for a change.
Findings
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."
Description, as the server wrote it Upload a real screenshot or app icon as base64 PNG, JPEG, or WebP (8 MB maximum). Metadata is stripped. Images remain private until selected in an owner-published snapshot. Never upload confidential screen content.
Annotations the server declares
- title: Upload app presentation image
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
springroll.app.record_promptsAttaches the conversation that produced this application to its record, as reference for whoever maintains it next and for the reviewer who has to approve it.2 findings
Why it is in this group
- The description's first verb is "attach": a word for a change.
Findings
- Info
The description mentions "credentials".
What this check looks forMatched text
description: "...e application record. SpringRoll scrubs credentials it recognises before writing (agent tok..."
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."
Description, as the server wrote it Attaches the conversation that produced this application to its record, as reference for whoever maintains it next and for the reviewer who has to approve it. Ask the user before calling this, every time. The transcript is STORED and is READABLE BY ANYONE who can see the application record. SpringRoll scrubs credentials it recognises before writing (agent tokens, cloud keys, private keys, connection strings, and assignment lines whose key looks like a secret), but that scrubbing is best-effort and cannot be complete. If the conversation contained a real secret, do not record it. Send turns in order. Keep `sessionKey` stable across calls for one build so they join up; retrying with the same key and turn indexes overwrites rather than duplicating.
Annotations the server declares
- title: Record the build transcript
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
springroll.app.updateUpdates App Portal metadata: description, icon, tags, department, support contact, and data classification.1 finding
Why it is in this group
- The name "springroll.app.update" says "update": a word for a change.
Findings
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."
Description, as the server wrote it Updates App Portal metadata: description, icon, tags, department, support contact, and data classification. Visibility is deliberately not editable here, because widening an audience requires an approval request (sec. 15.4).
Annotations the server declares
- title: Update application metadata
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
springroll.approval.submitSubmits an approval request of any supported type: UAT_PROMOTION, UAT_SIGN_OFF, PRODUCTION_PROMOTION, VISIBILITY_CHANGE, OWNERSHIP_TRANSFER, RETIREMENT, DOMAIN_CHANGE, or ROLLBACK.1 finding
Why it is in this group
- The name "springroll.approval.submit" says "submit": a word for a change.
Findings
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."
Description, as the server wrote it Submits an approval request of any supported type: UAT_PROMOTION, UAT_SIGN_OFF, PRODUCTION_PROMOTION, VISIBILITY_CHANGE, OWNERSHIP_TRANSFER, RETIREMENT, DOMAIN_CHANGE, or ROLLBACK. **An agent may submit but never decide**: SpringRoll requires a human approver, and an agent token cannot approve its own request. Confirm with the user before calling this. It creates review work for named people. Type-specific behaviour: • `PRODUCTION_PROMOTION`: this does NOT deploy. It asks. `releaseId` defaults to the application's latest release, and `targetEnvironmentType` to 'production'. Once approved, call springroll.deploy.promote. • `UAT_PROMOTION`: `targetEnvironmentType` is required, 'uat' (or 'development' where Development needs approval). An approval only unlocks the environment it names. • `UAT_SIGN_OFF`: `targetEnvironmentType` defaults to 'uat'. • `ROLLBACK`: `justification` and `targetEnvironmentType` (the environment to roll back) are required. Put the deployment to restore in `payload.targetDeploymentId`; it defaults to the last successful one. • `RETIREMENT`: `justification` is required. • Every other type takes no `targetEnvironmentType`.
Annotations the server declares
- title: Submit an approval request
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
springroll.connect.data_productsWithout `dataProduct`, lists the governed data products this organization publishes: what each one holds, who owns it, and how sensitive it is.2 findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Info
The description mentions "credential".
What this check looks forMatched text
description: "...a source supports) but never a host, a credential, a table name, or a connection string...."
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."
Description, as the server wrote it Without `dataProduct`, lists the governed data products this organization publishes: what each one holds, who owns it, and how sensitive it is. With `dataProduct`, returns that product's schema: its datasets, the available fields with their types and sensitivity, the business glossary its owner wrote, and what the underlying source can compute. Read this before requesting access, so you request the fields the application actually needs. Either way you learn the *kind* of system behind a product (so you know, for example, which query capabilities a source supports) but never a host, a credential, a table name, or a connection string. Request access with springroll.connect.request_access; a data owner must approve it.
Annotations the server declares
- title: List or describe data products
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
springroll.connect.request_accessRequests access to a data product for one environment, naming the exact fields the application needs.2 findings
Why it is in this group
- The name "springroll.connect.request_access" says "request": a word for a change.
Findings
- Info
The description mentions "credential".
What this check looks forMatched text
description: "...eadable until then. You never receive a credential: an approved grant lets the deployed ap..."
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."
Description, as the server wrote it Requests access to a data product for one environment, naming the exact fields the application needs. A data owner must approve, and may narrow the field list or add a row filter before doing so. Nothing is readable until then. You never receive a credential: an approved grant lets the deployed application ask questions through the SpringRoll Connect gateway, which enforces the grant on every request.
Annotations the server declares
- title: Request data product access
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
springroll.deployRegisters the project if it is new, attaches whatever source you give it, and deploys it using the application's Deployment workflow.2 findings
Why it is in this group
- The name "springroll.deploy" says "deploy": a word for a change.
Findings
- High
The description refers to ".env*" and ".env".
What this check looks forMatched text
description: "...exclude=.next --exclude=.git --exclude='.env*' \ -czf - . | base64 -w0 •..."
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."
Description, as the server wrote it 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.
Annotations the server declares
- title: Deploy a project
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
springroll.deploy.promotePromotes a tested deployment into the next environment (development -> uat, uat -> production).1 finding
Why it is in this group
- The name "springroll.deploy.promote" says "deploy": a word for a change.
Findings
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."
Description, as the server wrote it Promotes a tested deployment into the next environment (development -> uat, uat -> production). Reuses the already-built artifact rather than rebuilding, so the bytes that were tested are the bytes that ship. Promotion into an environment that requires approval will be refused until the approval exists. For production, submit the request first.
Annotations the server declares
- title: Promote a deployment
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
springroll.deploy.statusReturns a deployment's current status, refreshing it from the runtime provider when the build is still in progress.2 findings
Why it is in this group
- The name "springroll.deploy.status" says "deploy": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."
- Warn
The server marks "springroll.deploy.status" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "springroll.deploy.status" says "deploy": a word for a change.
Description, as the server wrote it Returns a deployment's current status, refreshing it from the runtime provider when the build is still in progress. Statuses: QUEUED, VALIDATING, BUILDING, DEPLOYING, READY, FAILED, CANCELLED, SUPERSEDED, ROLLED_BACK. Poll this after deploying rather than assuming success. Pass `includeLogs` to get the normalised build and deploy log lines alongside the status. Do that once the status is FAILED, rather than guessing at the cause.
Annotations the server declares
- title: Get deployment status
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
springroll.feedback.submitSubmit a bug report, idea, or other feedback about SpringRoll on behalf of the authenticated member.2 findings
Why it is in this group
- The name "springroll.feedback.submit" says "submit": a word for a change.
Findings
- Info
The description mentions "credentials".
What this check looks forMatched text
description: "...he authenticated member. Do not include credentials. Reuse the idempotency key when retryin..."
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."
Description, as the server wrote it Submit a bug report, idea, or other feedback about SpringRoll on behalf of the authenticated member. Do not include credentials. Reuse the idempotency key when retrying the same submission.
Annotations the server declares
- title: Send feedback
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
springroll.policy.checkReports which governance policies an application would pass or fail for an environment.1 finding
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."
Description, as the server wrote it Reports which governance policies an application would pass or fail for an environment. Send `manifest` (YAML or JSON) to validate a document without creating anything. Call this before springroll.deploy to avoid a rejected submission. Read the `springroll://manifest/example` resource for the document's shape. Send `application` instead to explain why an existing application cannot deploy or promote to `environmentType`, with specific remediation for each failing rule. Call this when a deployment is rejected with POLICY_BLOCKED. Send exactly one of the two.
Annotations the server declares
- title: Check governance policy
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
Only reads 8Claude Code: allow
springroll.app.getReturns an application's registry record: metadata, lifecycle stage, risk score, and whichever of the optional sections you ask for.1 finding
Why it is in this group
- The name "springroll.app.get" says "get": a word for reading.
Findings
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."
Description, as the server wrote it Returns an application's registry record: metadata, lifecycle stage, risk score, and whichever of the optional sections you ask for. No secrets are included. Sections, all returned by default: • `source`: repository or uploaded bundle, and `cannotBuildReason` when a deploy would be refused for want of a source • `history`: recent releases and deployments • `status`: each environment's current deployment, outstanding approvals, and usage. This answers "where is my app up to?" • `grants`: data access grants and dependencies Pass a narrower `include` when you only need part of it; each section costs a query.
Annotations the server declares
- title: Get an application
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
springroll.app.listLists applications in this organization, newest first.1 finding
Why it is in this group
- The name "springroll.app.list" says "list": a word for reading.
Findings
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."
Description, as the server wrote it Lists applications in this organization, newest first. Use `search` to find one by name or slug.
Annotations the server declares
- title: List applications
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
springroll.app.presentation.getRead a private app listing draft and available artwork.1 finding
Why it is in this group
- The name "springroll.app.presentation.get" says "get": a word for reading.
Findings
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."
Description, as the server wrote it Read a private app listing draft and available artwork. Does not publish or expose the app.
Annotations the server declares
- title: Read app presentation draft
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
springroll.approval.getReturns an approval request with its assigned reviewers, decisions so far, and the policy snapshot taken at submission.1 finding
Why it is in this group
- The name "springroll.approval.get" says "get": a word for reading.
Findings
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."
Description, as the server wrote it Returns an approval request with its assigned reviewers, decisions so far, and the policy snapshot taken at submission. Poll this to find out whether a release has been approved.
Annotations the server declares
- title: Get an approval request
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
springroll.connect.access_statusReturns the status of a data access request: REQUESTED, APPROVED, REJECTED, REVOKED, or EXPIRED, with the fields actually approved.1 finding
Why it is in this group
- The name "springroll.connect.access_status" says "status": a word for reading.
Findings
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."
Description, as the server wrote it Returns the status of a data access request: REQUESTED, APPROVED, REJECTED, REVOKED, or EXPIRED, with the fields actually approved. Approved fields are often narrower than requested, and a row filter may restrict which rows the application can see at all.
Annotations the server declares
- title: Get data access status
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
springroll.contextReturns the organization, identity, and permissions this agent token acts as, together with the deployment runtimes configured for it.2 findings
Why it is in this group
- The description's first verb is "return": a word for reading.
Findings
- Info
The description mentions "credentials".
What this check looks forMatched text
description: "...ent can actually land. It never returns credentials."
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."
Description, as the server wrote it Returns the organization, identity, and permissions this agent token acts as, together with the deployment runtimes configured for it. Call this first: it tells you which tenant you are in, what you are allowed to do, and whether a deployment can actually land. It never returns credentials.
Annotations the server declares
- title: Get SpringRoll context
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
springroll.feedback.listList only the authenticated member's SpringRoll feedback in the current organization, newest first.1 finding
Why it is in this group
- The name "springroll.feedback.list" says "list": a word for reading.
Findings
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."
Description, as the server wrote it List only the authenticated member's SpringRoll feedback in the current organization, newest first. Use nextOffset for the next page.
Annotations the server declares
- title: Read your feedback
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
springroll.placement.previewScores where SpringRoll would place this application and what it would cost, without deploying or writing anything.2 findings
Why it is in this group
- The name "springroll.placement.preview" says "preview": a word for reading.
Findings
- Info
The description mentions "credentials".
What this check looks forMatched text
description: "...puted from the public catalog alone and credentials never affect it: connecting an account..."
- Info
The input schema at properties.context.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.context.description: "...R include sensitive information such as credentials, passwords, or personal data. Example (..."
Description, as the server wrote it Scores where SpringRoll would place this application and what it would cost, without deploying or writing anything. It shares its implementation with springroll.deploy, so the receipt it returns is what a deploy right now would decide: the provider and plan, the estimated monthly cost range, every limit the plan carries, what was inferred rather than declared, and why each other candidate lost. It works before any provider account is connected. The ranking is computed from the public catalog alone and credentials never affect it: connecting an account changes only whether a plan is deployable, never how it ranks. Each ranked alternative carries its readiness and the action that unlocks it, so you can tell the user both what is recommended and what would deploy today. Use it to put the cost and the limits in front of the user before deploying, or to ask what-if questions by varying the placement hints.
Annotations the server declares
- title: Preview a placement
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 0.1.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http springroll https://springroll.dev/api/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__springroll__springroll_feedback_list",
"mcp__springroll__springroll_context",
"mcp__springroll__springroll_placement_preview",
"mcp__springroll__springroll_app_get",
"mcp__springroll__springroll_app_list",
"mcp__springroll__springroll_app_presentation_get",
"mcp__springroll__springroll_approval_get",
"mcp__springroll__springroll_connect_access_status"
],
"ask": [
"mcp__springroll__springroll_feedback_submit",
"mcp__springroll__springroll_deploy",
"mcp__springroll__springroll_deploy_status",
"mcp__springroll__springroll_deploy_promote",
"mcp__springroll__springroll_app_update",
"mcp__springroll__springroll_app_presentation_save",
"mcp__springroll__springroll_app_presentation_upload",
"mcp__springroll__springroll_app_presentation_generate_icon",
"mcp__springroll__springroll_approval_submit",
"mcp__springroll__springroll_policy_check",
"mcp__springroll__springroll_connect_data_products",
"mcp__springroll__springroll_connect_request_access",
"mcp__springroll__springroll_app_record_prompts"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as springroll. Review it before you use it.
