SpringRoll
Qué hace este MCP
Registers, deploys, promotes, monitors, and governs applications built with coding agents, including approvals, policy checks, environment placement, and governed data access.
Herramientas
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['application', 'context'], 'properties': {'context': {'type': 'string', 'description': 'Explain 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."'}, 'include': {'type': 'array', 'items': {'enum': ['source', 'history', 'status', 'grants'], 'type': 'string'}, 'description': 'Sections to return. Defaults to all of them.'}, 'application': {'type': 'string', 'minLength': 1, 'description': 'Application slug or id.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['context'], 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1}, 'search': {'type': 'string', 'maxLength': 200}, 'context': {'type': 'string', 'description': 'Explain 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."'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['application', 'purpose', 'idempotencyKey', 'context'], 'properties': {'context': {'type': 'string', 'description': 'Explain 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."'}, 'purpose': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'application': {'type': 'string'}, 'idempotencyKey': {'type': 'string', 'maxLength': 200, 'minLength': 8, 'description': 'Required. A stable, caller-generated key. Retrying with the same key returns the original result instead of creating a duplicate.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['application', 'context'], 'properties': {'context': {'type': 'string', 'description': 'Explain 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."'}, 'application': {'type': 'string'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['application', 'revision', 'draft', 'context'], 'properties': {'draft': {'type': 'object', 'required': ['name', 'tagline'], 'properties': {'name': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'creator': {'type': 'string', 'default': '', 'maxLength': 100}, 'tagline': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'shareText': {'type': 'string', 'default': '', 'maxLength': 240}, 'description': {'type': 'string', 'default': '', 'maxLength': 4000}, 'iconAssetId': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, {'type': 'null'}], 'default': None}, 'screenshots': {'type': 'array', 'items': {'type': 'object', 'required': ['assetId'], 'properties': {'assetId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'caption': {'type': 'string', 'default': '', 'maxLength': 180}}}, 'default': [], 'maxItems': 6}}}, 'context': {'type': 'string', 'description': 'Explain 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."'}, 'revision': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'application': {'type': 'string'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['application', 'kind', 'base64', 'idempotencyKey', 'context'], 'properties': {'kind': {'enum': ['icon', 'screenshot'], 'type': 'string'}, 'base64': {'type': 'string', 'pattern': '^[A-Za-z0-9+/]+={0,2}$', 'maxLength': 11184812, 'minLength': 1}, 'context': {'type': 'string', 'description': 'Explain 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."'}, 'application': {'type': 'string'}, 'idempotencyKey': {'type': 'string', 'maxLength': 200, 'minLength': 8, 'description': 'Required. A stable, caller-generated key. Retrying with the same key returns the original result instead of creating a duplicate.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['application', 'sessionKey', 'turns', 'idempotencyKey', 'context'], 'properties': {'turns': {'type': 'array', 'items': {'type': 'object', 'required': ['role', 'content'], 'properties': {'role': {'enum': ['user', 'assistant', 'system', 'tool'], 'type': 'string'}, 'content': {'type': 'string', 'minLength': 1}, 'occurredAt': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$'}}}, 'maxItems': 50, 'minItems': 1, 'description': 'Up to 50 turns per call, in order.'}, 'context': {'type': 'string', 'description': 'Explain 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."'}, 'agentName': {'type': 'string', 'maxLength': 120}, 'modelName': {'type': 'string', 'maxLength': 120}, 'releaseId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'sessionKey': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Stable identifier for this build conversation.'}, 'application': {'type': 'string', 'minLength': 1, 'description': 'Application slug or id.'}, 'inputTokens': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'outputTokens': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'idempotencyKey': {'type': 'string', 'maxLength': 200, 'minLength': 8, 'description': 'Required. A stable, caller-generated key. Retrying with the same key returns the original result instead of creating a duplicate.'}, 'startTurnIndex': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Where this batch starts. Defaults to after the last recorded turn.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['approvalRequestId', 'context'], 'properties': {'context': {'type': 'string', 'description': 'Explain 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."'}, 'approvalRequestId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['application', 'requestType', 'idempotencyKey', 'context'], 'properties': {'context': {'type': 'string', 'description': 'Explain 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."'}, 'payload': {'type': 'object', 'description': "Type-specific detail, e.g. { visibility: 'TENANT' }, { newOwnerMembershipId: '…' }, or { targetDeploymentId: '…' } for a rollback.", 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'releaseId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Release this concerns. For PRODUCTION_PROMOTION, defaults to the latest release.'}, 'application': {'type': 'string', 'minLength': 1, 'description': 'Application slug or id.'}, 'requestType': {'enum': ['UAT_PROMOTION', 'UAT_SIGN_OFF', 'PRODUCTION_PROMOTION', 'VISIBILITY_CHANGE', 'OWNERSHIP_TRANSFER', 'RETIREMENT', 'DOMAIN_CHANGE', 'ROLLBACK'], 'type': 'string'}, 'justification': {'type': 'string', 'maxLength': 2000, 'description': 'Why this should happen. Shown to reviewers. Required for ROLLBACK and RETIREMENT, and at least 10 characters when required.'}, 'idempotencyKey': {'type': 'string', 'maxLength': 200, 'minLength': 8, 'description': 'Required. A stable, caller-generated key. Retrying with the same key returns the original result instead of creating a duplicate.'}, 'targetEnvironmentType': {'enum': ['development', 'uat', 'production'], 'type': 'string', 'description': 'Canonical environment class. SpringRoll promotes development -> uat -> production.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['application', 'context'], 'properties': {'tags': {'type': 'array', 'items': {'type': 'string', 'maxLength': 40, 'minLength': 1}, 'maxItems': 20}, 'context': {'type': 'string', 'description': 'Explain 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."'}, 'iconUrl': {'type': 'string', 'format': 'uri'}, 'department': {'type': 'string', 'maxLength': 120}, 'application': {'type': 'string', 'minLength': 1, 'description': 'Application slug or id.'}, 'description': {'type': 'string', 'maxLength': 2000}, 'supportContact': {'type': 'string', 'maxLength': 200}, 'dataClassification': {'enum': ['public', 'internal', 'confidential', 'restricted'], 'type': 'string'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['grantId', 'context'], 'properties': {'context': {'type': 'string', 'description': 'Explain 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."'}, 'grantId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['context'], 'properties': {'context': {'type': 'string', 'description': 'Explain 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."'}, 'dataProduct': {'type': 'string', 'minLength': 1, 'description': 'Data product slug. Omit to list every product this organization publishes.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['application', 'dataProduct', 'environmentType', 'fields', 'context'], 'properties': {'fields': {'type': 'array', 'items': {'type': 'string', 'maxLength': 260, 'minLength': 1}, 'maxItems': 200, 'minItems': 1, 'description': 'Qualified field names to request, as `dataset.field`. Ask for what the application actually reads, because a narrower request is approved faster and survives review.'}, 'context': {'type': 'string', 'description': 'Explain 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."'}, 'purpose': {'type': 'string', 'maxLength': 2000, 'description': 'Why the application needs this data. Shown to the data owner.'}, 'application': {'type': 'string', 'minLength': 1, 'description': 'Application slug or id.'}, 'dataProduct': {'type': 'string', 'minLength': 1, 'description': 'Data product slug from springroll.connect.data_products.'}, 'environmentType': {'enum': ['development', 'uat', 'production'], 'type': 'string', 'description': 'Canonical environment class. SpringRoll promotes development -> uat -> production.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['context'], 'properties': {'context': {'type': 'string', 'description': 'Explain 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."'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['idempotencyKey', 'context'], 'properties': {'ref': {'type': 'string', 'maxLength': 200, 'description': "Branch, tag, or full commit SHA. Defaults to the app's default revision."}, 'name': {'type': 'string', 'maxLength': 120, 'minLength': 2}, 'slug': {'type': 'string', 'pattern': '^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$', 'maxLength': 63, 'minLength': 2}, 'tags': {'type': 'array', 'items': {'type': 'string', 'maxLength': 60, 'minLength': 1}, 'maxItems': 20}, 'files': {'type': 'object', 'description': 'Path-to-contents map. Use `archive` for anything beyond a few files.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'string'}}, 'archive': {'type': 'string', 'description': 'Base64 of a gzipped tar of the project source. Preferred over `files`.'}, 'context': {'type': 'string', 'description': 'Explain 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."'}, 'manifest': {'type': 'string', 'description': 'A SpringRoll manifest. Supersedes the metadata fields below; the source fields still apply.'}, 'framework': {'enum': ['nextjs', 'static'], 'type': 'string'}, 'placement': {'type': 'object', 'properties': {'needs': {'type': 'array', 'items': {'enum': ['static', 'serverless', 'server', 'container', 'database', 'postgres', 'auth', 'storage', 'realtime', 'edge-functions'], 'type': 'string'}, 'description': "Everything this application needs, in one list. At most one shape of thing being run ('static', 'serverless', 'server', or 'container'), plus any services it needs beside its own code: 'postgres', 'auth', 'storage', 'realtime', 'edge-functions'. A provider that cannot supply an entry is excluded, so ask only for what the app actually uses, and leave the shape out unless the project does something the source does not show."}, 'region': {'type': 'string', 'maxLength': 64, 'description': 'A required region, when the data has to stay somewhere specific.'}, 'memoryMb': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'storageGb': {'type': 'number', 'minimum': 0, 'description': 'Persistent disk needed, in gigabytes.'}, 'computeVcpu': {'type': 'number', 'minimum': 0, 'description': 'Sustained vCPU. Fractional is normal.'}, 'monthlyUsage': {'type': 'object', 'properties': {'kv': {'type': 'object', 'properties': {'lists': {'type': 'integer', 'maximum': 1000000000000000, 'minimum': 0}, 'reads': {'type': 'integer', 'maximum': 1000000000000000, 'minimum': 0}, 'writes': {'type': 'integer', 'maximum': 1000000000000000, 'minimum': 0}, 'deletes': {'type': 'integer', 'maximum': 1000000000000000, 'minimum': 0}, 'storageGbMonths': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}}, 'additionalProperties': False}, 'build': {'type': 'object', 'properties': {'starts': {'type': 'integer', 'maximum': 1000000000000000, 'minimum': 0}, 'minutes': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'activeCpuHours': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'dataTransferGb': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'artifactDataTransferGb': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'artifactStorageGbMonths': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'registryStorageGbMonths': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'artifactSimpleOperations': {'type': 'integer', 'maximum': 1000000000000000, 'minimum': 0}, 'provisionedMemoryGbHours': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'artifactAdvancedOperations': {'type': 'integer', 'maximum': 1000000000000000, 'minimum': 0}}, 'additionalProperties': False}, 'cache': {'type': 'object', 'properties': {'commands': {'type': 'integer', 'maximum': 1000000000000000, 'minimum': 0}, 'dataTransferGb': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'storageGbMonths': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}}, 'additionalProperties': False}, 'worker': {'type': 'object', 'properties': {'cpuMilliseconds': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'dispatchRequests': {'type': 'integer', 'maximum': 1000000000000000, 'minimum': 0}}, 'additionalProperties': False}, 'runtime': {'type': 'object', 'properties': {'invocations': {'type': 'integer', 'maximum': 1000000000000000, 'minimum': 0}, 'activeCpuHours': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'originTransferGb': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'provisionedMemoryGbHours': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}}, 'additionalProperties': False}, 'database': {'type': 'object', 'properties': {'rowsRead': {'type': 'integer', 'maximum': 1000000000000000, 'minimum': 0}, 'rowsWritten': {'type': 'integer', 'maximum': 1000000000000000, 'minimum': 0}, 'computeCuHours': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'storageGbMonths': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'extraBranchHours': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'extraBranchMonths': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'publicDataTransferGb': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'restoreHistoryGbMonths': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'snapshotStorageGbMonths': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}}, 'additionalProperties': False}, 'container': {'type': 'object', 'properties': {'egressNaEuGb': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'egressOtherGb': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'billedVcpuSeconds': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'billedDiskGbSeconds': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'billedMemoryGibSeconds': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'egressOceaniaKoreaTaiwanGb': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}}, 'additionalProperties': False}, 'durableObject': {'type': 'object', 'properties': {'rowsRead': {'type': 'integer', 'maximum': 1000000000000000, 'minimum': 0}, 'rowsWritten': {'type': 'integer', 'maximum': 1000000000000000, 'minimum': 0}, 'storageGbMonths': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'billableRequests': {'type': 'integer', 'maximum': 1000000000000000, 'minimum': 0}, 'durationGbSeconds': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}}, 'additionalProperties': False}, 'objectStorage': {'type': 'object', 'properties': {'dataTransferGb': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'storageGbMonths': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'simpleOperations': {'type': 'integer', 'maximum': 1000000000000000, 'minimum': 0}, 'advancedOperations': {'type': 'integer', 'maximum': 1000000000000000, 'minimum': 0}}, 'additionalProperties': False}}, 'description': 'Optional monthly billing quantities supplied by the user or actual usage evidence. Never invent values or default missing fields to zero. CPU-hours mean active CPU time; memory GB-hours include billable wait time and provider minimums. Build minutes do not substitute for Sandbox CPU/memory. Database and object storage are separate from local disk. Cloudflare Worker dispatch requests and CPU are separate from container active vCPU, provisioned memory, disk and regional egress. Rows read/written mean billed rows including indexes, not SQL query counts. Cache commands include internal operations and realtime polling. On redeploy this replaces the previous monthlyUsage forecast; omit the whole object to keep it.', 'additionalProperties': False}, 'needsWebSockets': {'type': 'boolean', 'description': 'Set true if the app holds a live connection. Inferred from the dependency list otherwise, and getting it wrong puts the app on a runtime that drops the socket on every request.'}, 'budgetUsdPerMonth': {'type': 'number', 'minimum': 0, 'description': 'A real ceiling, if the user gave one. Leave it out otherwise: a budget of zero that nobody asked for would exclude every qualified plan with a non-zero estimate.'}, 'coldStartTolerant': {'type': 'boolean', 'description': 'False if the first visitor after an idle period must not wait. Set this when the user says the app has to be instant; it excludes plans that sleep, which are otherwise the cheapest ones.'}, 'productionCritical': {'type': 'boolean', 'description': 'Whether a colleague depends on this during their working day. Defaults to true for production and false elsewhere.'}, 'expectedBandwidthGb': {'type': 'number', 'minimum': 0, 'description': 'Egress in gigabytes a month. Only if the user told you.'}, 'needsBackgroundWork': {'type': 'boolean', 'description': 'Set true if the app runs jobs or a scheduler outside a request.'}, 'needsPersistentDisk': {'type': 'boolean', 'description': 'Set true if the app writes files it expects to read back later.'}, 'expectedRequestsPerMonth': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': "Only if the user actually told you. Do not estimate: an invented number is indistinguishable from a measured one once it gets here, and SpringRoll's own default for an internal tool is more honest than a guess."}}, 'description': 'Optional, 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.', 'additionalProperties': False}, 'department': {'type': 'string', 'maxLength': 120}, 'application': {'type': 'string', 'minLength': 1, 'description': "An existing app's slug or id. Omit on the first ship; `name` implies it."}, 'description': {'type': 'string', 'maxLength': 2000}, 'waitSeconds': {'type': 'integer', 'maximum': 60, 'minimum': 0, 'description': 'How long to wait for the build before returning. Defaults to 20. A real build usually outlasts this; poll springroll.deploy.status after.'}, 'buildCommand': {'type': 'string', 'maxLength': 500}, 'preferSource': {'enum': ['git', 'upload'], 'type': 'string', 'description': 'Tie-breaker when both a repository and files are given. Defaults to git.'}, 'filesEncoding': {'enum': ['utf-8', 'base64'], 'type': 'string'}, 'repositoryUrl': {'type': 'string', 'format': 'uri'}, 'rootDirectory': {'type': 'string', 'maxLength': 300}, 'idempotencyKey': {'type': 'string', 'maxLength': 200, 'minLength': 8, 'description': 'Required. A stable, caller-generated key. Retrying with the same key returns the original result instead of creating a duplicate.'}, 'installCommand': {'type': 'string', 'maxLength': 500}, 'supportContact': {'type': 'string', 'maxLength': 200, 'description': 'Team channel or email for users of this app. Required before production.'}, 'outputDirectory': {'type': 'string', 'maxLength': 300}, 'dataClassification': {'enum': ['public', 'internal', 'confidential', 'restricted'], 'type': 'string'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['deploymentId', 'targetEnvironmentType', 'idempotencyKey', 'context'], 'properties': {'context': {'type': 'string', 'description': 'Explain 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."'}, 'deploymentId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'The tested deployment to promote.'}, 'idempotencyKey': {'type': 'string', 'maxLength': 200, 'minLength': 8, 'description': 'Required. A stable, caller-generated key. Retrying with the same key returns the original result instead of creating a duplicate.'}, 'targetEnvironmentType': {'enum': ['development', 'uat', 'production'], 'type': 'string', 'description': 'Canonical environment class. SpringRoll promotes development -> uat -> production.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['deploymentId', 'context'], 'properties': {'context': {'type': 'string', 'description': 'Explain 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."'}, 'logLimit': {'type': 'integer', 'maximum': 500, 'minimum': 1, 'description': 'How many log lines to return, counting from the end. Defaults to 200.'}, 'includeLogs': {'type': 'boolean', 'description': 'Include build and deploy log lines. Defaults to false.'}, 'deploymentId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['application', 'context'], 'properties': {'context': {'type': 'string', 'description': 'Explain 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."'}, 'placement': {'type': 'object', 'properties': {'needs': {'type': 'array', 'items': {'enum': ['static', 'serverless', 'server', 'container', 'database', 'postgres', 'auth', 'storage', 'realtime', 'edge-functions'], 'type': 'string'}, 'description': "Everything this application needs, in one list. At most one shape of thing being run ('static', 'serverless', 'server', or 'container'), plus any services it needs beside its own code: 'postgres', 'auth', 'storage', 'realtime', 'edge-functions'. A provider that cannot supply an entry is excluded, so ask only for what the app actually uses, and leave the shape out unless the project does something the source does not show."}, 'region': {'type': 'string', 'maxLength': 64, 'description': 'A required region, when the data has to stay somewhere specific.'}, 'memoryMb': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'storageGb': {'type': 'number', 'minimum': 0, 'description': 'Persistent disk needed, in gigabytes.'}, 'computeVcpu': {'type': 'number', 'minimum': 0, 'description': 'Sustained vCPU. Fractional is normal.'}, 'monthlyUsage': {'type': 'object', 'properties': {'kv': {'type': 'object', 'properties': {'lists': {'type': 'integer', 'maximum': 1000000000000000, 'minimum': 0}, 'reads': {'type': 'integer', 'maximum': 1000000000000000, 'minimum': 0}, 'writes': {'type': 'integer', 'maximum': 1000000000000000, 'minimum': 0}, 'deletes': {'type': 'integer', 'maximum': 1000000000000000, 'minimum': 0}, 'storageGbMonths': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}}, 'additionalProperties': False}, 'build': {'type': 'object', 'properties': {'starts': {'type': 'integer', 'maximum': 1000000000000000, 'minimum': 0}, 'minutes': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'activeCpuHours': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'dataTransferGb': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'artifactDataTransferGb': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'artifactStorageGbMonths': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'registryStorageGbMonths': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'artifactSimpleOperations': {'type': 'integer', 'maximum': 1000000000000000, 'minimum': 0}, 'provisionedMemoryGbHours': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'artifactAdvancedOperations': {'type': 'integer', 'maximum': 1000000000000000, 'minimum': 0}}, 'additionalProperties': False}, 'cache': {'type': 'object', 'properties': {'commands': {'type': 'integer', 'maximum': 1000000000000000, 'minimum': 0}, 'dataTransferGb': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'storageGbMonths': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}}, 'additionalProperties': False}, 'worker': {'type': 'object', 'properties': {'cpuMilliseconds': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'dispatchRequests': {'type': 'integer', 'maximum': 1000000000000000, 'minimum': 0}}, 'additionalProperties': False}, 'runtime': {'type': 'object', 'properties': {'invocations': {'type': 'integer', 'maximum': 1000000000000000, 'minimum': 0}, 'activeCpuHours': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'originTransferGb': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'provisionedMemoryGbHours': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}}, 'additionalProperties': False}, 'database': {'type': 'object', 'properties': {'rowsRead': {'type': 'integer', 'maximum': 1000000000000000, 'minimum': 0}, 'rowsWritten': {'type': 'integer', 'maximum': 1000000000000000, 'minimum': 0}, 'computeCuHours': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'storageGbMonths': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'extraBranchHours': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'extraBranchMonths': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'publicDataTransferGb': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'restoreHistoryGbMonths': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'snapshotStorageGbMonths': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}}, 'additionalProperties': False}, 'container': {'type': 'object', 'properties': {'egressNaEuGb': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'egressOtherGb': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'billedVcpuSeconds': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'billedDiskGbSeconds': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'billedMemoryGibSeconds': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'egressOceaniaKoreaTaiwanGb': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}}, 'additionalProperties': False}, 'durableObject': {'type': 'object', 'properties': {'rowsRead': {'type': 'integer', 'maximum': 1000000000000000, 'minimum': 0}, 'rowsWritten': {'type': 'integer', 'maximum': 1000000000000000, 'minimum': 0}, 'storageGbMonths': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'billableRequests': {'type': 'integer', 'maximum': 1000000000000000, 'minimum': 0}, 'durationGbSeconds': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}}, 'additionalProperties': False}, 'objectStorage': {'type': 'object', 'properties': {'dataTransferGb': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'storageGbMonths': {'type': 'number', 'maximum': 1000000000000000, 'minimum': 0}, 'simpleOperations': {'type': 'integer', 'maximum': 1000000000000000, 'minimum': 0}, 'advancedOperations': {'type': 'integer', 'maximum': 1000000000000000, 'minimum': 0}}, 'additionalProperties': False}}, 'description': 'Optional monthly billing quantities supplied by the user or actual usage evidence. Never invent values or default missing fields to zero. CPU-hours mean active CPU time; memory GB-hours include billable wait time and provider minimums. Build minutes do not substitute for Sandbox CPU/memory. Database and object storage are separate from local disk. Cloudflare Worker dispatch requests and CPU are separate from container active vCPU, provisioned memory, disk and regional egress. Rows read/written mean billed rows including indexes, not SQL query counts. Cache commands include internal operations and realtime polling. On redeploy this replaces the previous monthlyUsage forecast; omit the whole object to keep it.', 'additionalProperties': False}, 'needsWebSockets': {'type': 'boolean', 'description': 'Set true if the app holds a live connection. Inferred from the dependency list otherwise, and getting it wrong puts the app on a runtime that drops the socket on every request.'}, 'budgetUsdPerMonth': {'type': 'number', 'minimum': 0, 'description': 'A real ceiling, if the user gave one. Leave it out otherwise: a budget of zero that nobody asked for would exclude every qualified plan with a non-zero estimate.'}, 'coldStartTolerant': {'type': 'boolean', 'description': 'False if the first visitor after an idle period must not wait. Set this when the user says the app has to be instant; it excludes plans that sleep, which are otherwise the cheapest ones.'}, 'productionCritical': {'type': 'boolean', 'description': 'Whether a colleague depends on this during their working day. Defaults to true for production and false elsewhere.'}, 'expectedBandwidthGb': {'type': 'number', 'minimum': 0, 'description': 'Egress in gigabytes a month. Only if the user told you.'}, 'needsBackgroundWork': {'type': 'boolean', 'description': 'Set true if the app runs jobs or a scheduler outside a request.'}, 'needsPersistentDisk': {'type': 'boolean', 'description': 'Set true if the app writes files it expects to read back later.'}, 'expectedRequestsPerMonth': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': "Only if the user actually told you. Do not estimate: an invented number is indistinguishable from a measured one once it gets here, and SpringRoll's own default for an internal tool is more honest than a guess."}}, 'description': 'Optional, 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.', 'additionalProperties': False}, 'application': {'type': 'string', 'minLength': 1, 'description': 'Application slug or id.'}, 'environmentType': {'enum': ['development', 'uat', 'production'], 'type': 'string', 'description': 'Environment class to score for. Defaults to production, which is the strictest: plans published as unsuitable for production are excluded there.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['context'], 'properties': {'context': {'type': 'string', 'description': 'Explain 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."'}, 'manifest': {'type': 'string', 'minLength': 10, 'description': 'The manifest document, as YAML or JSON. Mutually exclusive with `application`.'}, 'releaseId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Release to evaluate. Only meaningful with `application`.'}, 'application': {'type': 'string', 'minLength': 1, 'description': 'An existing application to explain. Mutually exclusive with `manifest`.'}, 'environmentType': {'enum': ['development', 'uat', 'production'], 'type': 'string', 'description': 'Environment to evaluate against. Defaults to production.'}}}
Cambios recientes en herramientas
Servidores MCP similares
shiply
Publishes and manages web applications with SQL databases, serverless functions, domains, email tests, client intake, contracts, …
Fine Structure
Builds and hosts full-stack applications from prompts and supports agent communication through WhatsApp and email.
mcp
Provisions and manages cloud instances, networks, storage, databases, backups, VPNs, application deployments, and autocoding-agen…
EchoRelay
Manages a hosted API relay runtime, including projects, endpoints, credentials, publishing, keys, delivery logs, and dead-letter …
Supero
Builds, validates, publishes, tests, and deploys multi-tenant applications with schemas, CRUD operations, external data connector…
Replicate
Provides access to Replicate models, versions, collections, hardware, predictions, and deployments for running and managing hoste…
Relin
Configures webhook sources and destinations, monitors delivery health, investigates failures, manages retries, and replays events.
Scalix Cloud
Provides managed databases, SQL tools, container builds, persistent Linux machines, domains, scheduled functions, storage, and pr…