Raw schema
{
"type": "object",
"properties": {
"was": {
"default": "start",
"description": "Which step to run. Defaults to start — the entry point. Only set it when you need a later step.",
"type": "string",
"enum": [
"start",
"thema",
"weiter",
"texte",
"stand",
"seite",
"verbinden",
"faehigkeiten",
"ausfuehren",
"trennen",
"handoff",
"technik",
"frage",
"status"
]
},
"tool": {
"description": "Only with was=ausfuehren: the ability name exactly as was=faehigkeiten reported it, e.g. webinarignition_create_webinar. Slashes and hyphens are accepted too, but the site publishes underscores.",
"type": "string"
},
"args": {
"description": "Only with was=ausfuehren: the arguments for that ability, shaped by its input_schema.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"text": {
"description": "What the host said (thema · weiter) or the question in the host's language (frage).",
"type": "string"
},
"session_id": {
"description": "From an earlier turn (weiter · texte · stand).",
"type": "string"
},
"job_id": {
"description": "Only with was=texte: the job number from an earlier call, to check whether the texts are ready. Without job_id a new job is started; only one text job runs at a time.",
"type": "string"
},
"url": {
"description": "The WordPress address (seite). With was=handoff: the host's WordPress address to point the handover link at.",
"type": "string"
},
"content": {
"description": "Only with was=handoff: finished text to carry over, if the session alone does not hold it.",
"type": "string"
},
"rating": {
"description": "Only with was=handoff: the host's rating (1-10), if any.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"language": {
"default": "de",
"description": "The language the host writes in.",
"type": "string"
},
"known_facts": {
"description": "Everything you already know — send it every turn so nothing is lost on a restart. On the FIRST call (was=start or was=thema) this is how a chat/assistant hands over what it already learned about the host (topic, audience, offer, style/tone) instead of making them repeat it.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"focus": {
"description": "Only with was=start: what it should be about.",
"type": "string",
"enum": [
"thema",
"texte",
"technik",
"fragen",
"alles"
]
},
"situation": {
"description": "Only with was=start or was=thema: what the host just said, in their own words. On was=start this also starts a real conversation (seeded with known_facts) instead of only showing the menu — use it when the host already wrote something about their webinar.",
"type": "string"
},
"type": {
"description": "Only with was=texte: invites (default), starter, or custom. custom = the invitation is for a channel that is NOT one of the eight built-in platforms — pass the channel name in custom_channel. A channel outside the eight built-ins is written as custom, not as one of the eight.",
"type": "string"
},
"custom_channel": {
"description": "Only with was=texte and type=\"custom\": the exact name of the channel or format the invitation is for when it is not one of the eight built-in platforms — e.g. Xing, WeChat, Line, KakaoTalk, Viber, Threads, Mastodon, a guest article, or the host's own format. The text is then written for exactly this channel, not for a built-in platform.",
"type": "string"
},
"invite_type": {
"description": "Only with was=texte, when the invitation is for a specific platform: list = email list, personal = personal message, facebook = Facebook post, whatsapp = WhatsApp status, instagram = Instagram post, linkedin = LinkedIn post, telegram = Telegram channel, youtube = YouTube post.",
"type": "string",
"enum": [
"list",
"personal",
"facebook",
"whatsapp",
"instagram",
"linkedin",
"telegram",
"youtube"
]
},
"direction": {
"description": "Optional with was=texte: the angle/framing of the invitation (natural language), e.g. 'Zeitersparnis und Skalierung ohne neue Mitarbeiter' for an agency. If missing, the invitation is written at once without a special angle.",
"type": "string"
},
"skip_direction": {
"description": "Only with was=texte: true when the host wants NO special angle — then it generates without an angle.",
"type": "boolean"
},
"has_wordpress": {
"description": "Only with was=start: true when the host already has a WordPress site.",
"type": "boolean"
},
"has_wi": {
"description": "Only with was=start: true when WebinarIgnition is already installed on the host's site.",
"type": "boolean"
},
"has_mcp": {
"description": "Only with was=start: true when the host already uses an MCP/connector — the connector normally sets this itself.",
"type": "boolean"
},
"wants": {
"description": "Only with was=start: what the host wants, as short keywords (e.g. \"thema\", \"texte\", \"technik\").",
"type": "array",
"items": {
"type": "string"
}
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}