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"]
/properties/name 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}$
/properties/plan 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"]
/properties/contract_version Required value: 1
/properties/reference 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}$
/properties/application id, name, label, created_at, and plan — the plan named at creation (ACB-L0-22)

Type: object
/properties/outcome 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