Create an application
Create an application from a repository, a completed source upload, or files sent here: files as [{path, content}] (base64 with encoding: "base64" for binary files) or a whole ZIP as base64 in archive, within the 1 MiB request limit, become the first source upload, and sending them also needs source:write. This requires an organisation key and an available project allowance. Environment variables, build arguments and build secrets sent here are in place for the first deploy; sending any of them also needs configuration:write. staticUnknownPaths decides what a static site serves for a path with no file: auto (the default) serves the home page for a single-page app and a 404 page for any other site, spa always serves the home page, not_found always returns a 404; a 404.html in the site is the 404 page. When the plan has no room (its project count, or the memory or storage the new app needs), it is refused with HTTP 403 quota_exceeded and details.quota naming the resource, used, limit, requested and free; this refusal used to come back as 403 forbidden.
Queued work: send an idempotencyKey and reuse the same value when retrying this exact call.
Arguments
| Name | Type | Required | Limits |
|---|---|---|---|
name | string | Yes | At least 1 character(s) |
description | string | No | See schema |
framework | string | No | See schema |
repositoryUrl | string | No | See schema |
branch | string | No | See schema |
githubInstallationId | integer | No | Minimum 1 |
rootDirectory | string | No | See schema |
buildType | string | No | See schema |
installCommand | string | No | See schema |
buildCommand | string | No | See schema |
startCommand | string | No | See schema |
outputDirectory | string | No | See schema |
healthCheckPath | string | No | See schema |
dockerfilePath | string | No | See schema |
dockerContextPath | string | No | See schema |
dockerBuildStage | string | No | See schema |
staticUnknownPaths | "auto" | "spa" | "not_found" | No | See schema |
sourceType | "github" | "upload" | No | See schema |
sourceUploadId | string | No | At least 1 character(s) |
frameworkPort | integer | No | See schema |
runtimeIntent | string | No | See schema |
autoDeployOnCreate | boolean | No | See schema |
envVars | object[] | No | See schema |
dockerBuildArgs | string | No | See schema |
dockerBuildSecrets | string | No | See schema |
files | object[] | No | See schema |
archive | string | No | At least 1 character(s) |
idempotencyKey | string | Yes | At least 1 character(s) |
Full input schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"description": {
"type": "string"
},
"framework": {
"type": "string"
},
"repositoryUrl": {
"type": "string"
},
"branch": {
"type": "string"
},
"githubInstallationId": {
"type": "integer",
"minimum": 1
},
"rootDirectory": {
"type": "string"
},
"buildType": {
"type": "string"
},
"installCommand": {
"type": "string"
},
"buildCommand": {
"type": "string"
},
"startCommand": {
"type": "string"
},
"outputDirectory": {
"type": "string"
},
"healthCheckPath": {
"type": "string"
},
"dockerfilePath": {
"type": "string"
},
"dockerContextPath": {
"type": "string"
},
"dockerBuildStage": {
"type": "string"
},
"staticUnknownPaths": {
"type": "string",
"enum": [
"auto",
"spa",
"not_found"
]
},
"sourceType": {
"type": "string",
"enum": [
"github",
"upload"
]
},
"sourceUploadId": {
"type": "string",
"minLength": 1
},
"frameworkPort": {
"type": "integer"
},
"runtimeIntent": {
"type": "string"
},
"autoDeployOnCreate": {
"type": "boolean"
},
"envVars": {
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string",
"minLength": 1
},
"value": {
"type": "string"
},
"isSecret": {
"type": "boolean"
}
},
"required": [
"key",
"value"
],
"additionalProperties": false
}
},
"dockerBuildArgs": {
"type": "string"
},
"dockerBuildSecrets": {
"type": "string"
},
"files": {
"type": "array",
"items": {
"type": "object",
"properties": {
"path": {
"type": "string",
"minLength": 1
},
"content": {
"type": "string"
},
"encoding": {
"type": "string",
"enum": [
"utf8",
"base64"
]
}
},
"required": [
"path",
"content"
],
"additionalProperties": false
}
},
"archive": {
"type": "string",
"minLength": 1
},
"idempotencyKey": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Unique request key. Reuse this exact value when retrying the same operation."
}
},
"required": [
"name",
"idempotencyKey"
],
"additionalProperties": false
}Example call
The params of a tools/call request. Replace the placeholder values with your own IDs.
{
"name": "createApplicationProject",
"arguments": {
"name": "example-app",
"idempotencyKey": "REPLACE_WITH_IDEMPOTENCY_KEY"
}
} Result
The same data as the API operation, wrapped as {"untrusted_data": true, "source": "createApplicationProject", "note": "...", "data": ...} so the model treats project content as data, not instructions.