create_application
Generated automatically from the published contract sources.
Build metadata: Registered in this build. Registration describes the default dispatcher in this build. It does not guarantee that a caller has the required credential or grant, that a tool is listed for that connection, or that the required service is configured.
A script calls this action over HTTPS at POST https://turnzero.ai/api/v1/actions/create_application, with a bearer credential and the action's payload as the JSON body.
Contract description
Create an application under this account and return its record, including the id other tools take as `application`. The answer's `label`, the name with a unique key, is the readable half of both hostnames: production's `<label>` and development's `<label>-dev`, under the platform's domain. Before calling, ask the builder which plan the application starts on: `free`, `standard`, or `pro`. Pass the builder's answer as `plan`, which is required. Do not choose a plan for the builder, since the plan sets what the application costs and what it may use. This creates the record only: services are declared with `submit_manifest`; a new application has one environment, production, so its first `deploy` serves on production; call `create_environment` first to deploy to development instead.
Access and action metadata
{
"name": "create_application",
"resource": "application",
"tier": "reversible",
"summary": "Create an application for the account.",
"annotations": {
"readOnlyHint": false,
"destructiveHint": false,
"openWorldHint": false
}
}
MCP catalog entry
{
"name": "create_application",
"tier": "reversible",
"scenario": "CHI-L0-07",
"summary": "Create an application under this account and return its record, including the id other tools take as `application`. The answer's `label`, the name with a unique key, is the readable half of both hostnames: production's `<label>` and development's `<label>-dev`, under the platform's domain. Before calling, ask the builder which plan the application starts on: `free`, `standard`, or `pro`. Pass the builder's answer as `plan`, which is required. Do not choose a plan for the builder, since the plan sets what the application costs and what it may use. This creates the record only: services are declared with `submit_manifest`; a new application has one environment, production, so its first `deploy` serves on production; call `create_environment` first to deploy to development instead.",
"owners": [
"ACB-L0-22",
"PRC-L0-04",
"ACB-L0-83"
]
}
request
| JSON pointer | Description and constraints |
|---|---|
| "" (root) | Type: object Required fields: ["name","plan"] |
| / |
The application's readable name: a lowercase letter first, then lowercase letters, digits, and hyphens — 1 to 40 characters in all. It becomes the readable half of the application's hostname; the platform adds a unique key. Type: string Pattern: ^[a-z][a-z0-9-]{0,39}$ |
| / |
The plan the application starts on: `free`, `standard`, or `pro`. Required: ask the builder which plan and pass the answer, never a value chosen for them. Naming `free` while the account already holds its one live free application refuses `free_application_limit`, and naming a plan whose quantity is unset refuses `plan_quantity_unset`. Through the beta, naming `standard` or `pro` while the account already holds its one live application on that plan refuses `beta_plan_limit`. Type: string Allowed values: ["free","standard","pro"] |
response
| JSON pointer | Description and constraints |
|---|---|
| "" (root) | Type: object Required fields: ["contract_version","application","outcome"] |
| / |
Required value: 1 |
| / |
The short reference the platform recorded this call under, ten lowercase hexadecimal characters, the value the call’s record row carries; quote it when reporting the call. Type: string Pattern: ^[0-9a-f]{10}$ |
| / |
id, name, label, created_at, and plan — the plan named at creation (ACB-L0-22) Type: object |
| / |
Type: string Pattern: ^created$ |
Complete payload contract
{
"request": {
"type": "object",
"required": [
"name",
"plan"
],
"properties": {
"name": {
"type": "string",
"pattern": "^[a-z][a-z0-9-]{0,39}$",
"description": "The application's readable name: a lowercase letter first, then lowercase letters, digits, and hyphens — 1 to 40 characters in all. It becomes the readable half of the application's hostname; the platform adds a unique key."
},
"plan": {
"type": "string",
"enum": [
"free",
"standard",
"pro"
],
"description": "The plan the application starts on: `free`, `standard`, or `pro`. Required: ask the builder which plan and pass the answer, never a value chosen for them. Naming `free` while the account already holds its one live free application refuses `free_application_limit`, and naming a plan whose quantity is unset refuses `plan_quantity_unset`. Through the beta, naming `standard` or `pro` while the account already holds its one live application on that plan refuses `beta_plan_limit`."
}
}
},
"response": {
"type": "object",
"required": [
"contract_version",
"application",
"outcome"
],
"properties": {
"contract_version": {
"const": 1
},
"reference": {
"type": "string",
"pattern": "^[0-9a-f]{10}$",
"description": "The short reference the platform recorded this call under, ten lowercase hexadecimal characters, the value the call’s record row carries; quote it when reporting the call."
},
"application": {
"type": "object",
"description": "id, name, label, created_at, and plan — the plan named at creation (ACB-L0-22)"
},
"outcome": {
"type": "string",
"pattern": "^created$"
}
}
}
}
Shared contracts
- Refusals: every refusal, by surface, with its cause and its remedy
- schemas/wire_error.schema.json
- schemas/wire_errors.json
- schemas/action_payloads.json (includes shared shapes)
- management_api_contract.md