read_plan_quotas

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/read_plan_quotas, with a bearer credential and the action's payload as the JSON body. It also accepts GET.

Contract description

Read what each of the three plans includes, without holding an application on the plan. The answer holds the selected plans' enforced entries and served values, every customer plan's where the call names neither `plan` nor `measure`, each row with its quantity (null for an Unset cell), its stamp, and its author. Any signed-in credential reads them, an application-bounded token included. Each quantity is in its entry's base unit: `schedule-minimum-interval` in minutes, `free-idle-stop` in seconds, `development-halt-after-days` in days, `stored-data-capacity` in bytes, `data-transfer-capacity` in bytes, `log-retained-capacity` in bytes, `egress-bytes-per-day` in bytes, `gemini-flash-allowance` in token units, and every other entry a count. A platform setting that is the same on every plan has no row here, the schedule window among them: `window_seconds` in `read_schedules` and `submit_manifest` answers it.

A call naming neither `plan` nor `measure` answers every row. `plan` (`free`, `standard`, or `pro`) answers that plan's rows, `measure` that entry's row on each plan that sets it, and both at most one row. Every plan admits a development environment, turned on with `create_environment`; its `development-` rows give its bounds.

Access and action metadata

{
  "name": "read_plan_quotas",
  "resource": "account",
  "tier": "observe",
  "summary": "The served quantities of the plans the call selects, every customer plan's where it names neither `plan` nor `measure` — the enforced entries and the served values each plan sets, each selected row of the quota table with its stamp and author, in `read_platform_usage`'s order — under any signed-in credential, an application-bounded token included, so a caller reads a plan's quotas without holding an application on it.",
  "annotations": {
    "readOnlyHint": true,
    "destructiveHint": false,
    "openWorldHint": false,
    "idempotentHint": true
  }
}

MCP catalog entry

{
  "name": "read_plan_quotas",
  "tier": "observe",
  "scenario": "CHI-L0-09",
  "summary": "Read what each of the three plans includes, without holding an application on the plan. The answer holds the selected plans' enforced entries and served values, every customer plan's where the call names neither `plan` nor `measure`, each row with its quantity (null for an Unset cell), its stamp, and its author. Any signed-in credential reads them, an application-bounded token included. Each quantity is in its entry's base unit: `schedule-minimum-interval` in minutes, `free-idle-stop` in seconds, `development-halt-after-days` in days, `stored-data-capacity` in bytes, `data-transfer-capacity` in bytes, `log-retained-capacity` in bytes, `egress-bytes-per-day` in bytes, `gemini-flash-allowance` in token units, and every other entry a count. A platform setting that is the same on every plan has no row here, the schedule window among them: `window_seconds` in `read_schedules` and `submit_manifest` answers it.\n\nA call naming neither `plan` nor `measure` answers every row. `plan` (`free`, `standard`, or `pro`) answers that plan's rows, `measure` that entry's row on each plan that sets it, and both at most one row. Every plan admits a development environment, turned on with `create_environment`; its `development-` rows give its bounds.",
  "owners": []
}

request

JSON pointer Description and constraints
"" (root) Type: object
Additional properties: false
/properties/plan Answers that plan's rows alone; with `measure`, at most one row. A call naming neither `plan` nor `measure` answers every customer plan's rows. Over the HTTP route an unlisted value is refused `invalid_request`.

Type: string
Allowed values: ["free","standard","pro"]
/properties/measure Answers that entry's row on each plan that sets it; with `plan`, at most one row, and none where that plan sets no such value, the `detail` then saying so. Over the HTTP route an unlisted value is refused `invalid_request`.

Type: string
Allowed values: ["stored-data-capacity","backend-actions-capacity","data-transfer-capacity","database-connection-limit","schedule-minimum-interval","schedule-count-limit","deploys-per-day","log-retained-capacity","gemini-flash-allowance","free-idle-stop","development-halt-after-days","development-realm-account-limit","signin-code-sends-per-hour","egress-connections-per-minute","egress-bytes-per-day","push-messages-capacity"]

response

JSON pointer Description and constraints
"" (root) The rows of the quota table the plans serve that the call selected, every row where it named neither `plan` nor `measure`. They come in `read_platform_usage`'s order: per plan, the ten enforced entries and then the served values the plan sets, six on Free and five on Standard and Pro, the idle stop being Free's alone. Each row carries its quantity in base units (null for an Unset cell), its stamp, and its author (PRC-L0-16). The retired entry `issue-tracking-calls` is not answered.

Type: object
Required fields: ["contract_version","quotas"]
Additional properties: false
/properties/contract_version Required value: 1
/properties/quotas Type: array
/properties/quotas/items Type: object
Required fields: ["plan","measure","quantity","set_at","set_by"]
/properties/quotas/items/properties/plan Type: string
Allowed values: ["free","standard","pro"]
/properties/quotas/items/properties/measure Type: string
Allowed values: ["stored-data-capacity","backend-actions-capacity","data-transfer-capacity","database-connection-limit","schedule-minimum-interval","schedule-count-limit","deploys-per-day","log-retained-capacity","gemini-flash-allowance","free-idle-stop","development-halt-after-days","development-realm-account-limit","signin-code-sends-per-hour","egress-connections-per-minute","egress-bytes-per-day","push-messages-capacity"]
/properties/quotas/items/properties/quantity The quantity in its entry's base unit, null for an Unset cell: `schedule-minimum-interval` in minutes, `free-idle-stop` in seconds, `development-halt-after-days` in days, `stored-data-capacity` in bytes, `data-transfer-capacity` in bytes, `log-retained-capacity` in bytes, `egress-bytes-per-day` in bytes, `gemini-flash-allowance` in token units, and every other entry a count.

Type: ["integer","null"]
/properties/quotas/items/properties/set_at Type: string
/properties/quotas/items/properties/set_by Type: string
/properties/detail What the rows are, and each quantity's base unit, `schedule-minimum-interval` in minutes among them.

Type: string

Complete payload contract

{
  "request": {
    "type": "object",
    "properties": {
      "plan": {
        "type": "string",
        "enum": [
          "free",
          "standard",
          "pro"
        ],
        "description": "Answers that plan's rows alone; with `measure`, at most one row. A call naming neither `plan` nor `measure` answers every customer plan's rows. Over the HTTP route an unlisted value is refused `invalid_request`."
      },
      "measure": {
        "type": "string",
        "enum": [
          "stored-data-capacity",
          "backend-actions-capacity",
          "data-transfer-capacity",
          "database-connection-limit",
          "schedule-minimum-interval",
          "schedule-count-limit",
          "deploys-per-day",
          "log-retained-capacity",
          "gemini-flash-allowance",
          "free-idle-stop",
          "development-halt-after-days",
          "development-realm-account-limit",
          "signin-code-sends-per-hour",
          "egress-connections-per-minute",
          "egress-bytes-per-day",
          "push-messages-capacity"
        ],
        "description": "Answers that entry's row on each plan that sets it; with `plan`, at most one row, and none where that plan sets no such value, the `detail` then saying so. Over the HTTP route an unlisted value is refused `invalid_request`."
      }
    },
    "additionalProperties": false
  },
  "response": {
    "type": "object",
    "required": [
      "contract_version",
      "quotas"
    ],
    "properties": {
      "contract_version": {
        "const": 1
      },
      "quotas": {
        "type": "array",
        "items": {
          "type": "object",
          "required": [
            "plan",
            "measure",
            "quantity",
            "set_at",
            "set_by"
          ],
          "properties": {
            "plan": {
              "type": "string",
              "enum": [
                "free",
                "standard",
                "pro"
              ]
            },
            "measure": {
              "type": "string",
              "enum": [
                "stored-data-capacity",
                "backend-actions-capacity",
                "data-transfer-capacity",
                "database-connection-limit",
                "schedule-minimum-interval",
                "schedule-count-limit",
                "deploys-per-day",
                "log-retained-capacity",
                "gemini-flash-allowance",
                "free-idle-stop",
                "development-halt-after-days",
                "development-realm-account-limit",
                "signin-code-sends-per-hour",
                "egress-connections-per-minute",
                "egress-bytes-per-day",
                "push-messages-capacity"
              ]
            },
            "quantity": {
              "type": [
                "integer",
                "null"
              ],
              "description": "The quantity in its entry's base unit, null for an Unset cell: `schedule-minimum-interval` in minutes, `free-idle-stop` in seconds, `development-halt-after-days` in days, `stored-data-capacity` in bytes, `data-transfer-capacity` in bytes, `log-retained-capacity` in bytes, `egress-bytes-per-day` in bytes, `gemini-flash-allowance` in token units, and every other entry a count."
            },
            "set_at": {
              "type": "string"
            },
            "set_by": {
              "type": "string"
            }
          }
        }
      },
      "detail": {
        "type": "string",
        "description": "What the rows are, and each quantity's base unit, `schedule-minimum-interval` in minutes among them."
      }
    },
    "additionalProperties": false,
    "description": "The rows of the quota table the plans serve that the call selected, every row where it named neither `plan` nor `measure`. They come in `read_platform_usage`'s order: per plan, the ten enforced entries and then the served values the plan sets, six on Free and five on Standard and Pro, the idle stop being Free's alone. Each row carries its quantity in base units (null for an Unset cell), its stamp, and its author (PRC-L0-16). The retired entry `issue-tracking-calls` is not answered."
  }
}

Shared contracts