send_setup_mail #

View this page as Markdown

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

Contract description #

Send the setup email once to each builder account you list that has not connected an AI coding tool, one to fifty a call, and read each account's outcome by name. Super-admin (platform operator) only. The messages count in the invitation window, five builder-realm messages an hour, so a long list takes several hourly calls. The production estate alone sends; the development estate refuses the call.

Access and action metadata #

{
  "name": "send_setup_mail",
  "resource": "account",
  "tier": "reversible",
  "grant": "super_admin",
  "summary": "Super-admin: send the setup email once to each builder account you list that has not connected an AI coding tool, one to fifty accounts a call. The answer gives each account's outcome by name: `sent`, `already_sent`, `connected`, `synthetic`, `unbilled`, `suspended`, `no_such_account`, or the send's outcome. The messages count in the builder invitation window of five an hour, beside the invitations and the setup-mail pass. The production estate alone sends; the development estate refuses the call `setup_mail_production_only`. The answer lists accounts and outcomes, never an address.",
  "annotations": {
    "readOnlyHint": false,
    "destructiveHint": false,
    "openWorldHint": true
  }
}

MCP catalog entry #

{
  "name": "send_setup_mail",
  "title": "Send setup email",
  "tier": "reversible",
  "scenario": "API-L0-12",
  "summary": "Send the setup email once to each builder account you list that has not connected an AI coding tool, one to fifty a call, and read each account's outcome by name. Super-admin (platform operator) only. The messages count in the invitation window, five builder-realm messages an hour, so a long list takes several hourly calls. The production estate alone sends; the development estate refuses the call.",
  "owners": [
    "ACS-L0-08",
    "ACS-L0-23"
  ]
}

request #

JSON pointer Description and constraints
"" (root) Type: object
Required fields: ["accounts"]
Additional properties: false
/properties/accounts The accounts to send the setup email to, by id, from `list_accounts` or `list_sign_up_clicks`: one to fifty. You get one answer for each.

Type: array
Minimum items: 1
Maximum items: 50
/properties/accounts/items Type: string
Minimum length: 1

response #

JSON pointer Description and constraints
"" (root) Type: object
Required fields: ["contract_version","results","sent"]
Additional properties: false
/properties/contract_version Required value: 1
/properties/results One entry per distinct account you list, in the order you list them.

Type: array
/properties/results/items Type: object
Required fields: ["account","outcome"]
Additional properties: false
/properties/results/items/properties/account Type: string
/properties/results/items/properties/outcome An account with the outcome `sent` was sent the email at every verified address whose domain takes mail. One with `already_sent` was claimed before, by this action or the pass: sent, or settled `no_address`, `undeliverable`, or `not_sent`, and it is never sent again. One with `connected` has connected an AI coding tool. One with `synthetic`, `unbilled`, or `suspended` is that kind of account. The answer `no_such_account` means no builder account exists under the id. The answer `window_full` means the invitation window has no room this hour, and the account stays unclaimed for a later call. The answers `no_address` and `undeliverable` mean the account holds no verified address, or none whose domain takes mail. The answer `no_sender` means the plane holds no sender. The answer `not_sent` means the provider refused the message or the send passed its bound. The answer `failed` means a store read failed before the claim.

Allowed values: ["sent","already_sent","connected","synthetic","unbilled","suspended","no_such_account","window_full","no_address","undeliverable","no_sender","not_sent","failed"]
/properties/sent The count of accounts with the outcome `sent`.

Type: integer
Minimum: 0
/properties/detail Type: string

Complete payload contract #

{
  "request": {
    "type": "object",
    "required": [
      "accounts"
    ],
    "properties": {
      "accounts": {
        "type": "array",
        "minItems": 1,
        "maxItems": 50,
        "items": {
          "type": "string",
          "minLength": 1
        },
        "description": "The accounts to send the setup email to, by id, from `list_accounts` or `list_sign_up_clicks`: one to fifty. You get one answer for each."
      }
    },
    "additionalProperties": false
  },
  "response": {
    "type": "object",
    "required": [
      "contract_version",
      "results",
      "sent"
    ],
    "properties": {
      "contract_version": {
        "const": 1
      },
      "results": {
        "type": "array",
        "description": "One entry per distinct account you list, in the order you list them.",
        "items": {
          "type": "object",
          "required": [
            "account",
            "outcome"
          ],
          "properties": {
            "account": {
              "type": "string"
            },
            "outcome": {
              "enum": [
                "sent",
                "already_sent",
                "connected",
                "synthetic",
                "unbilled",
                "suspended",
                "no_such_account",
                "window_full",
                "no_address",
                "undeliverable",
                "no_sender",
                "not_sent",
                "failed"
              ],
              "description": "An account with the outcome `sent` was sent the email at every verified address whose domain takes mail. One with `already_sent` was claimed before, by this action or the pass: sent, or settled `no_address`, `undeliverable`, or `not_sent`, and it is never sent again. One with `connected` has connected an AI coding tool. One with `synthetic`, `unbilled`, or `suspended` is that kind of account. The answer `no_such_account` means no builder account exists under the id. The answer `window_full` means the invitation window has no room this hour, and the account stays unclaimed for a later call. The answers `no_address` and `undeliverable` mean the account holds no verified address, or none whose domain takes mail. The answer `no_sender` means the plane holds no sender. The answer `not_sent` means the provider refused the message or the send passed its bound. The answer `failed` means a store read failed before the claim."
            }
          },
          "additionalProperties": false
        }
      },
      "sent": {
        "type": "integer",
        "minimum": 0,
        "description": "The count of accounts with the outcome `sent`."
      },
      "detail": {
        "type": "string"
      }
    },
    "additionalProperties": false
  }
}

Shared contracts #