Server definition
- Hash
- sha256:0740ac32bbde9535a306aca0098ae609fbf478dd5e621194998b75dbe74fc389
- What it is
- What a remote MCP server returned when asked what it offers: 11 tools
The blob, as servednamed by its sha256
{
"instructions": "Dreamlit is a database-driven notification workflow platform for Supabase and Postgres apps.\nPrefer outcome-oriented prompts: describe the event or schedule, audience, recipient, message goal, timing, business rules, and unsubscribe intent.\nUse get_status for workspace, project, setup, and prompting context before authoring.\nUse list_brand_styles when the user wants to inspect saved project brand styles for generated email drafts.\nUse get_workflow_and_preview_url before editing an existing workflow.\nUse get_analytics for bounded analytics queries. Filter large datasets and paginate with returned cursors instead of asking for exports or bulk dumps.\nCreate or update workflow drafts with create_or_update_workflow.\nDrafts are not live after authoring. Ask the user to open the preview link and confirm workflow tests for important email or Slack messages before publishing.\nPublish only with prepare_publish and confirm_publish after explicit user confirmation.",
"tools": [
{
"description": "Use only after explicit user confirmation and a prior prepare_publish result to publish or schedule a Dreamlit workflow. Side effect: installs live database/repeating/auth triggers, schedules or sends broadcasts, and may enable notification delivery; sandbox mode can hold notifications for inspection. Returns the published workflow status and app URLs. Do not call speculatively or without carrying forward the prepare_publish safety fields.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"expectedEditableVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Editable version id returned by prepare_publish, used as a safety check."
},
"expectedPublishedVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Published version id returned by prepare_publish, used as a safety check."
},
"expectedUpdatedAtIso": {
"anyOf": [
{
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Workflow updatedAt timestamp returned by prepare_publish, used as a safety check."
},
"isSandboxed": {
"description": "Whether to publish in sandbox mode so notifications are held for inspection.",
"type": "boolean"
},
"workflowId": {
"description": "Workflow id to publish.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId"
],
"type": "object"
},
"name": "confirm_publish",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"result": {
"description": "Dreamlit MCP result. success responses contain data and appUrls when relevant; auth_required, clarification_required, confirmation_required, handoff_required, and error responses explain the next action.",
"oneOf": [
{
"additionalProperties": false,
"properties": {
"data": {
"additionalProperties": {},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"status": {
"const": "success",
"type": "string"
}
},
"required": [
"status",
"data"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"auth": {
"additionalProperties": false,
"properties": {
"reason": {
"type": "string"
}
},
"required": [
"reason"
],
"type": "object"
},
"message": {
"type": "string"
},
"status": {
"const": "auth_required",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"clarification": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"appUrls": {
"additionalProperties": false,
"properties": {
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"workflows"
],
"type": "object"
},
"assistantMessageId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"chatSessionId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"message": {
"type": "string"
},
"orgId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"projectId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"userMessageId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"message",
"workflowId",
"projectId",
"orgId",
"chatSessionId",
"userMessageId",
"assistantMessageId",
"appUrls"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"appUrls": {
"additionalProperties": false,
"properties": {
"preview": {
"format": "uri",
"type": "string"
},
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"preview"
],
"type": "object"
},
"kind": {
"const": "test_message_selection",
"type": "string"
},
"message": {
"type": "string"
},
"orgId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"projectId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"testableMessages": {
"items": {
"additionalProperties": false,
"properties": {
"description": {
"type": "string"
},
"destination": {
"type": "string"
},
"label": {
"type": "string"
},
"messageType": {
"enum": [
"email",
"slack"
],
"type": "string"
},
"requiresRecipient": {
"type": "boolean"
},
"testTargetId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"testTargetId",
"messageType",
"label",
"requiresRecipient"
],
"type": "object"
},
"minItems": 2,
"type": "array"
},
"workflowId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"kind",
"message",
"workflowId",
"projectId",
"orgId",
"testableMessages",
"appUrls"
],
"type": "object"
}
]
},
"status": {
"const": "clarification_required",
"type": "string"
}
},
"required": [
"status",
"clarification"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"confirmation": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"action": {
"const": "confirm_publish",
"type": "string"
},
"appUrls": {
"additionalProperties": false,
"properties": {
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow"
],
"type": "object"
},
"input": {
"additionalProperties": false,
"properties": {
"expectedEditableVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Editable version id returned by prepare_publish, used as a safety check."
},
"expectedPublishedVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Published version id returned by prepare_publish, used as a safety check."
},
"expectedUpdatedAtIso": {
"anyOf": [
{
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Workflow updatedAt timestamp returned by prepare_publish, used as a safety check."
},
"isSandboxed": {
"description": "Whether to publish in sandbox mode so notifications are held for inspection.",
"type": "boolean"
},
"workflowId": {
"description": "Workflow id to publish.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId"
],
"type": "object"
},
"kind": {
"const": "publish",
"type": "string"
},
"message": {
"type": "string"
},
"previewUrl": {
"format": "uri",
"type": "string"
},
"summary": {
"items": {
"type": "string"
},
"type": "array"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"kind",
"action",
"input",
"message",
"previewUrl",
"summary",
"warnings"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"action": {
"const": "send_workflow_test",
"type": "string"
},
"appUrls": {
"additionalProperties": false,
"properties": {
"preview": {
"format": "uri",
"type": "string"
},
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"preview"
],
"type": "object"
},
"input": {
"additionalProperties": false,
"properties": {
"confirmSend": {
"const": true,
"type": "boolean"
},
"messageType": {
"description": "Optional message type filter when selecting a draft message to test.",
"enum": [
"email",
"slack"
],
"type": "string"
},
"rowData": {
"additionalProperties": {},
"description": "Optional sample data for rendering draft message variables during the test. If omitted, Dreamlit uses the same default preview data as the web builder when available.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"testRecipientEmail": {
"description": "Optional recipient for email tests. If omitted, Dreamlit sends to the authenticated user's email address.",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"type": "string"
},
"testTargetId": {
"description": "Structured test target id from testableMessages. Do not show this id to users; ask them to choose by message label.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"description": "Workflow id whose editable draft message should be tested.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId",
"confirmSend"
],
"type": "object"
},
"kind": {
"const": "send_workflow_test",
"type": "string"
},
"message": {
"type": "string"
},
"previewUrl": {
"format": "uri",
"type": "string"
},
"summary": {
"items": {
"type": "string"
},
"type": "array"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"kind",
"action",
"input",
"message",
"previewUrl",
"appUrls",
"summary",
"warnings"
],
"type": "object"
}
]
},
"status": {
"const": "confirmation_required",
"type": "string"
}
},
"required": [
"status",
"confirmation"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"handoff": {
"additionalProperties": false,
"properties": {
"instructions": {
"items": {
"type": "string"
},
"type": "array"
},
"kind": {
"const": "browser",
"type": "string"
},
"message": {
"type": "string"
},
"reason": {
"type": "string"
},
"url": {
"format": "uri",
"type": "string"
}
},
"required": [
"kind",
"reason",
"message",
"url",
"instructions"
],
"type": "object"
},
"status": {
"const": "handoff_required",
"type": "string"
}
},
"required": [
"status",
"handoff"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"retryAfterSeconds": {
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"status": {
"const": "error",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
}
]
}
},
"required": [
"result"
],
"type": "object"
}
},
{
"description": "Creates a new Dreamlit workflow draft or updates an existing draft from an outcome-oriented natural-language prompt. Use after get_status; use get_workflow_and_preview_url first when editing an existing workflow. Existing Supabase Auth workflows can be edited except for the immutable trigger step; creating Supabase Auth workflows must happen through Supabase Auth email setup in the Dreamlit web app. Side effect: may create or modify a draft, but does not publish or install live triggers. Returns the workflow/draft result, action-required or handoff details when more input is needed, and relevant app URLs. Do not use for publishing, direct database changes, or low-level graph edits.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"projectId": {
"description": "Target project id for creating a new workflow draft.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"prompt": {
"description": "Outcome-oriented workflow authoring request. Describe the event or schedule, audience, recipient, message goal, data needed, timing, business rules, and unsubscribe intent. Let Dreamlit choose email styling unless the user gives specific style direction. For broadcasts, request a future send time instead of an immediate send.",
"minLength": 1,
"type": "string"
},
"userCurrentTimeIso": {
"description": "User's current time as an ISO timestamp with offset, useful for relative schedule requests.",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"type": "string"
},
"userCurrentTimeZoneId": {
"description": "IANA timezone id for the user, useful for repeating workflows and scheduled broadcasts.",
"minLength": 1,
"type": "string"
},
"userEmailStepComments": {
"description": "Optional inline comments for revising email step content.",
"items": {
"properties": {
"comment": {
"description": "User's requested change.",
"minLength": 1,
"type": "string"
},
"onCodeLineText": {
"description": "Nearby email editor text for anchoring the comment.",
"minLength": 1,
"type": "string"
},
"userHighlightedText": {
"description": "Specific text selected by the user.",
"minLength": 1,
"type": "string"
},
"workflowStepId": {
"description": "Workflow step id that the user commented on.",
"minLength": 1,
"type": "string"
}
},
"required": [
"workflowStepId",
"comment",
"onCodeLineText",
"userHighlightedText"
],
"type": "object"
},
"type": "array"
},
"workflowId": {
"description": "Existing workflow id to continue editing. Use get_workflow_and_preview_url first when changing an existing workflow.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"prompt"
],
"type": "object"
},
"name": "create_or_update_workflow",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"result": {
"description": "Dreamlit MCP result. success responses contain data and appUrls when relevant; auth_required, clarification_required, confirmation_required, handoff_required, and error responses explain the next action.",
"oneOf": [
{
"additionalProperties": false,
"properties": {
"data": {
"additionalProperties": {},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"status": {
"const": "success",
"type": "string"
}
},
"required": [
"status",
"data"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"auth": {
"additionalProperties": false,
"properties": {
"reason": {
"type": "string"
}
},
"required": [
"reason"
],
"type": "object"
},
"message": {
"type": "string"
},
"status": {
"const": "auth_required",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"clarification": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"appUrls": {
"additionalProperties": false,
"properties": {
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"workflows"
],
"type": "object"
},
"assistantMessageId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"chatSessionId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"message": {
"type": "string"
},
"orgId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"projectId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"userMessageId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"message",
"workflowId",
"projectId",
"orgId",
"chatSessionId",
"userMessageId",
"assistantMessageId",
"appUrls"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"appUrls": {
"additionalProperties": false,
"properties": {
"preview": {
"format": "uri",
"type": "string"
},
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"preview"
],
"type": "object"
},
"kind": {
"const": "test_message_selection",
"type": "string"
},
"message": {
"type": "string"
},
"orgId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"projectId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"testableMessages": {
"items": {
"additionalProperties": false,
"properties": {
"description": {
"type": "string"
},
"destination": {
"type": "string"
},
"label": {
"type": "string"
},
"messageType": {
"enum": [
"email",
"slack"
],
"type": "string"
},
"requiresRecipient": {
"type": "boolean"
},
"testTargetId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"testTargetId",
"messageType",
"label",
"requiresRecipient"
],
"type": "object"
},
"minItems": 2,
"type": "array"
},
"workflowId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"kind",
"message",
"workflowId",
"projectId",
"orgId",
"testableMessages",
"appUrls"
],
"type": "object"
}
]
},
"status": {
"const": "clarification_required",
"type": "string"
}
},
"required": [
"status",
"clarification"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"confirmation": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"action": {
"const": "confirm_publish",
"type": "string"
},
"appUrls": {
"additionalProperties": false,
"properties": {
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow"
],
"type": "object"
},
"input": {
"additionalProperties": false,
"properties": {
"expectedEditableVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Editable version id returned by prepare_publish, used as a safety check."
},
"expectedPublishedVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Published version id returned by prepare_publish, used as a safety check."
},
"expectedUpdatedAtIso": {
"anyOf": [
{
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Workflow updatedAt timestamp returned by prepare_publish, used as a safety check."
},
"isSandboxed": {
"description": "Whether to publish in sandbox mode so notifications are held for inspection.",
"type": "boolean"
},
"workflowId": {
"description": "Workflow id to publish.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId"
],
"type": "object"
},
"kind": {
"const": "publish",
"type": "string"
},
"message": {
"type": "string"
},
"previewUrl": {
"format": "uri",
"type": "string"
},
"summary": {
"items": {
"type": "string"
},
"type": "array"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"kind",
"action",
"input",
"message",
"previewUrl",
"summary",
"warnings"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"action": {
"const": "send_workflow_test",
"type": "string"
},
"appUrls": {
"additionalProperties": false,
"properties": {
"preview": {
"format": "uri",
"type": "string"
},
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"preview"
],
"type": "object"
},
"input": {
"additionalProperties": false,
"properties": {
"confirmSend": {
"const": true,
"type": "boolean"
},
"messageType": {
"description": "Optional message type filter when selecting a draft message to test.",
"enum": [
"email",
"slack"
],
"type": "string"
},
"rowData": {
"additionalProperties": {},
"description": "Optional sample data for rendering draft message variables during the test. If omitted, Dreamlit uses the same default preview data as the web builder when available.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"testRecipientEmail": {
"description": "Optional recipient for email tests. If omitted, Dreamlit sends to the authenticated user's email address.",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"type": "string"
},
"testTargetId": {
"description": "Structured test target id from testableMessages. Do not show this id to users; ask them to choose by message label.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"description": "Workflow id whose editable draft message should be tested.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId",
"confirmSend"
],
"type": "object"
},
"kind": {
"const": "send_workflow_test",
"type": "string"
},
"message": {
"type": "string"
},
"previewUrl": {
"format": "uri",
"type": "string"
},
"summary": {
"items": {
"type": "string"
},
"type": "array"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"kind",
"action",
"input",
"message",
"previewUrl",
"appUrls",
"summary",
"warnings"
],
"type": "object"
}
]
},
"status": {
"const": "confirmation_required",
"type": "string"
}
},
"required": [
"status",
"confirmation"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"handoff": {
"additionalProperties": false,
"properties": {
"instructions": {
"items": {
"type": "string"
},
"type": "array"
},
"kind": {
"const": "browser",
"type": "string"
},
"message": {
"type": "string"
},
"reason": {
"type": "string"
},
"url": {
"format": "uri",
"type": "string"
}
},
"required": [
"kind",
"reason",
"message",
"url",
"instructions"
],
"type": "object"
},
"status": {
"const": "handoff_required",
"type": "string"
}
},
"required": [
"status",
"handoff"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"retryAfterSeconds": {
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"status": {
"const": "error",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
}
]
}
},
"required": [
"result"
],
"type": "object"
}
},
{
"description": "Read-only. Use to query Dreamlit analytics for overview metrics, notification rows, recipient engagement, or workflow run rows with filters, sorting, and cursor pagination. Returns bounded structured analytics data, effective query metadata, pagination details when rows are included, and relevant app URLs. Do not use for CSV exports, bulk dumps, workflow edits, publishing, or low-level database access.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"channel": {
"description": "Notification channel for overview and notification analytics. Defaults to email. Recipient analytics are email-only.",
"enum": [
"email",
"slack"
],
"type": "string"
},
"cursor": {
"description": "Opaque pagination cursor from a previous get_analytics response.",
"maxLength": 2048,
"minLength": 1,
"type": "string"
},
"filters": {
"description": "Optional analytics filters. Unsupported combinations return a clear error.",
"properties": {
"engagement": {
"description": "Email engagement filter.",
"enum": [
"undelivered",
"bounced",
"complained",
"clicked",
"opened"
],
"type": "string"
},
"notificationStatuses": {
"description": "Email notification lifecycle statuses to include.",
"items": {
"enum": [
"sent",
"pending",
"releasable",
"failed",
"canceled",
"suppressed",
"opted_out"
],
"type": "string"
},
"maxItems": 7,
"type": "array"
},
"recipient": {
"description": "Email recipient search string.",
"maxLength": 320,
"type": "string"
},
"runStatuses": {
"description": "Workflow run statuses to include. Only applies to workflow_runs.",
"items": {
"enum": [
"RUNNING",
"PAUSED",
"COMPLETED",
"FAILED",
"SKIPPED",
"CANCELLED"
],
"type": "string"
},
"maxItems": 6,
"type": "array"
},
"slackWebhookIds": {
"description": "Slack webhook ids to include for Slack notification analytics.",
"items": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"maxItems": 100,
"type": "array"
},
"startedAt": {
"description": "Workflow run started timestamp range. Only applies to workflow_runs.",
"properties": {
"from": {
"description": "Inclusive ISO timestamp lower bound.",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"type": "string"
},
"to": {
"description": "Inclusive ISO timestamp upper bound.",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"type": "string"
}
},
"type": "object"
},
"topicIds": {
"description": "Email unsubscribe topic ids to include.",
"items": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"maxItems": 100,
"type": "array"
},
"workflowIds": {
"description": "Workflow ids to include.",
"items": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"maxItems": 100,
"type": "array"
},
"workflowRunId": {
"description": "Workflow run id to include for notification analytics.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowStepRunId": {
"description": "Workflow step run id to include for notification analytics.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"type": "object"
},
"include": {
"description": "Optional response sections to include. Defaults depend on the requested view.",
"items": {
"enum": [
"summary",
"series",
"rows",
"recentEvents",
"segments"
],
"type": "string"
},
"maxItems": 5,
"type": "array"
},
"limit": {
"description": "Maximum rows to return. Defaults to 25 and is capped at 100.",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"projectId": {
"description": "Project id to query analytics from. Required when access is ambiguous.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"range": {
"description": "Optional explicit timestamp range. Overrides window and is applied to the view's primary timestamp.",
"properties": {
"from": {
"description": "Inclusive ISO timestamp lower bound.",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"type": "string"
},
"to": {
"description": "Inclusive ISO timestamp upper bound.",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"type": "string"
}
},
"type": "object"
},
"sort": {
"description": "Optional row sort. Overview ignores sorting.",
"properties": {
"dir": {
"description": "Sort direction. Defaults to desc.",
"enum": [
"asc",
"desc"
],
"type": "string"
},
"field": {
"description": "Sort field. Valid fields depend on the requested view.",
"enum": [
"timestamp",
"sentTo",
"subject",
"workflow",
"engagement",
"recipient",
"lastSentAt",
"sent",
"opened",
"clicked",
"bounced",
"complained"
],
"type": "string"
}
},
"required": [
"field"
],
"type": "object"
},
"timeZone": {
"description": "IANA timezone for daily series bucketing. Defaults to UTC.",
"maxLength": 64,
"minLength": 1,
"type": "string"
},
"view": {
"description": "Analytics surface to query: overview cards, notification rows, recipient rows, or workflow run rows.",
"enum": [
"overview",
"notifications",
"recipients",
"workflow_runs"
],
"type": "string"
},
"window": {
"description": "Relative analytics window. Defaults to 30d. Ignored when range is provided.",
"enum": [
"1h",
"24h",
"7d",
"14d",
"30d",
"90d",
"all"
],
"type": "string"
}
},
"required": [
"view"
],
"type": "object"
},
"name": "get_analytics",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"result": {
"description": "Dreamlit MCP result. success responses contain data and appUrls when relevant; auth_required, clarification_required, confirmation_required, handoff_required, and error responses explain the next action.",
"oneOf": [
{
"additionalProperties": false,
"properties": {
"data": {
"additionalProperties": {},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"status": {
"const": "success",
"type": "string"
}
},
"required": [
"status",
"data"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"auth": {
"additionalProperties": false,
"properties": {
"reason": {
"type": "string"
}
},
"required": [
"reason"
],
"type": "object"
},
"message": {
"type": "string"
},
"status": {
"const": "auth_required",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"clarification": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"appUrls": {
"additionalProperties": false,
"properties": {
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"workflows"
],
"type": "object"
},
"assistantMessageId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"chatSessionId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"message": {
"type": "string"
},
"orgId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"projectId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"userMessageId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"message",
"workflowId",
"projectId",
"orgId",
"chatSessionId",
"userMessageId",
"assistantMessageId",
"appUrls"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"appUrls": {
"additionalProperties": false,
"properties": {
"preview": {
"format": "uri",
"type": "string"
},
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"preview"
],
"type": "object"
},
"kind": {
"const": "test_message_selection",
"type": "string"
},
"message": {
"type": "string"
},
"orgId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"projectId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"testableMessages": {
"items": {
"additionalProperties": false,
"properties": {
"description": {
"type": "string"
},
"destination": {
"type": "string"
},
"label": {
"type": "string"
},
"messageType": {
"enum": [
"email",
"slack"
],
"type": "string"
},
"requiresRecipient": {
"type": "boolean"
},
"testTargetId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"testTargetId",
"messageType",
"label",
"requiresRecipient"
],
"type": "object"
},
"minItems": 2,
"type": "array"
},
"workflowId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"kind",
"message",
"workflowId",
"projectId",
"orgId",
"testableMessages",
"appUrls"
],
"type": "object"
}
]
},
"status": {
"const": "clarification_required",
"type": "string"
}
},
"required": [
"status",
"clarification"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"confirmation": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"action": {
"const": "confirm_publish",
"type": "string"
},
"appUrls": {
"additionalProperties": false,
"properties": {
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow"
],
"type": "object"
},
"input": {
"additionalProperties": false,
"properties": {
"expectedEditableVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Editable version id returned by prepare_publish, used as a safety check."
},
"expectedPublishedVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Published version id returned by prepare_publish, used as a safety check."
},
"expectedUpdatedAtIso": {
"anyOf": [
{
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Workflow updatedAt timestamp returned by prepare_publish, used as a safety check."
},
"isSandboxed": {
"description": "Whether to publish in sandbox mode so notifications are held for inspection.",
"type": "boolean"
},
"workflowId": {
"description": "Workflow id to publish.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId"
],
"type": "object"
},
"kind": {
"const": "publish",
"type": "string"
},
"message": {
"type": "string"
},
"previewUrl": {
"format": "uri",
"type": "string"
},
"summary": {
"items": {
"type": "string"
},
"type": "array"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"kind",
"action",
"input",
"message",
"previewUrl",
"summary",
"warnings"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"action": {
"const": "send_workflow_test",
"type": "string"
},
"appUrls": {
"additionalProperties": false,
"properties": {
"preview": {
"format": "uri",
"type": "string"
},
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"preview"
],
"type": "object"
},
"input": {
"additionalProperties": false,
"properties": {
"confirmSend": {
"const": true,
"type": "boolean"
},
"messageType": {
"description": "Optional message type filter when selecting a draft message to test.",
"enum": [
"email",
"slack"
],
"type": "string"
},
"rowData": {
"additionalProperties": {},
"description": "Optional sample data for rendering draft message variables during the test. If omitted, Dreamlit uses the same default preview data as the web builder when available.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"testRecipientEmail": {
"description": "Optional recipient for email tests. If omitted, Dreamlit sends to the authenticated user's email address.",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"type": "string"
},
"testTargetId": {
"description": "Structured test target id from testableMessages. Do not show this id to users; ask them to choose by message label.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"description": "Workflow id whose editable draft message should be tested.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId",
"confirmSend"
],
"type": "object"
},
"kind": {
"const": "send_workflow_test",
"type": "string"
},
"message": {
"type": "string"
},
"previewUrl": {
"format": "uri",
"type": "string"
},
"summary": {
"items": {
"type": "string"
},
"type": "array"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"kind",
"action",
"input",
"message",
"previewUrl",
"appUrls",
"summary",
"warnings"
],
"type": "object"
}
]
},
"status": {
"const": "confirmation_required",
"type": "string"
}
},
"required": [
"status",
"confirmation"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"handoff": {
"additionalProperties": false,
"properties": {
"instructions": {
"items": {
"type": "string"
},
"type": "array"
},
"kind": {
"const": "browser",
"type": "string"
},
"message": {
"type": "string"
},
"reason": {
"type": "string"
},
"url": {
"format": "uri",
"type": "string"
}
},
"required": [
"kind",
"reason",
"message",
"url",
"instructions"
],
"type": "object"
},
"status": {
"const": "handoff_required",
"type": "string"
}
},
"required": [
"status",
"handoff"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"retryAfterSeconds": {
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"status": {
"const": "error",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
}
]
}
},
"required": [
"result"
],
"type": "object"
}
},
{
"description": "Read-only. Use first when the agent needs Dreamlit product guidance, prompting guidance, approved workspace context, project setup, schema hints, workflow state, or relevant app URLs. Returns a compact context pack with concepts, recommended tool flow, actor/workspace/project data, optional authoring context, optional workflow context, and appUrls. Do not use this to create, update, publish, or unpublish workflows.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"projectId": {
"description": "Optional project id. Include it to return project setup, schema hints, and authoring context.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"description": "Optional workflow id. Include it to return concise workflow state and preview URL.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"type": "object"
},
"name": "get_status",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"result": {
"description": "Dreamlit MCP result. success responses contain data and appUrls when relevant; auth_required, clarification_required, confirmation_required, handoff_required, and error responses explain the next action.",
"oneOf": [
{
"additionalProperties": false,
"properties": {
"data": {
"additionalProperties": {},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"status": {
"const": "success",
"type": "string"
}
},
"required": [
"status",
"data"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"auth": {
"additionalProperties": false,
"properties": {
"reason": {
"type": "string"
}
},
"required": [
"reason"
],
"type": "object"
},
"message": {
"type": "string"
},
"status": {
"const": "auth_required",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"clarification": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"appUrls": {
"additionalProperties": false,
"properties": {
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"workflows"
],
"type": "object"
},
"assistantMessageId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"chatSessionId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"message": {
"type": "string"
},
"orgId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"projectId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"userMessageId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"message",
"workflowId",
"projectId",
"orgId",
"chatSessionId",
"userMessageId",
"assistantMessageId",
"appUrls"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"appUrls": {
"additionalProperties": false,
"properties": {
"preview": {
"format": "uri",
"type": "string"
},
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"preview"
],
"type": "object"
},
"kind": {
"const": "test_message_selection",
"type": "string"
},
"message": {
"type": "string"
},
"orgId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"projectId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"testableMessages": {
"items": {
"additionalProperties": false,
"properties": {
"description": {
"type": "string"
},
"destination": {
"type": "string"
},
"label": {
"type": "string"
},
"messageType": {
"enum": [
"email",
"slack"
],
"type": "string"
},
"requiresRecipient": {
"type": "boolean"
},
"testTargetId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"testTargetId",
"messageType",
"label",
"requiresRecipient"
],
"type": "object"
},
"minItems": 2,
"type": "array"
},
"workflowId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"kind",
"message",
"workflowId",
"projectId",
"orgId",
"testableMessages",
"appUrls"
],
"type": "object"
}
]
},
"status": {
"const": "clarification_required",
"type": "string"
}
},
"required": [
"status",
"clarification"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"confirmation": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"action": {
"const": "confirm_publish",
"type": "string"
},
"appUrls": {
"additionalProperties": false,
"properties": {
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow"
],
"type": "object"
},
"input": {
"additionalProperties": false,
"properties": {
"expectedEditableVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Editable version id returned by prepare_publish, used as a safety check."
},
"expectedPublishedVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Published version id returned by prepare_publish, used as a safety check."
},
"expectedUpdatedAtIso": {
"anyOf": [
{
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Workflow updatedAt timestamp returned by prepare_publish, used as a safety check."
},
"isSandboxed": {
"description": "Whether to publish in sandbox mode so notifications are held for inspection.",
"type": "boolean"
},
"workflowId": {
"description": "Workflow id to publish.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId"
],
"type": "object"
},
"kind": {
"const": "publish",
"type": "string"
},
"message": {
"type": "string"
},
"previewUrl": {
"format": "uri",
"type": "string"
},
"summary": {
"items": {
"type": "string"
},
"type": "array"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"kind",
"action",
"input",
"message",
"previewUrl",
"summary",
"warnings"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"action": {
"const": "send_workflow_test",
"type": "string"
},
"appUrls": {
"additionalProperties": false,
"properties": {
"preview": {
"format": "uri",
"type": "string"
},
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"preview"
],
"type": "object"
},
"input": {
"additionalProperties": false,
"properties": {
"confirmSend": {
"const": true,
"type": "boolean"
},
"messageType": {
"description": "Optional message type filter when selecting a draft message to test.",
"enum": [
"email",
"slack"
],
"type": "string"
},
"rowData": {
"additionalProperties": {},
"description": "Optional sample data for rendering draft message variables during the test. If omitted, Dreamlit uses the same default preview data as the web builder when available.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"testRecipientEmail": {
"description": "Optional recipient for email tests. If omitted, Dreamlit sends to the authenticated user's email address.",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"type": "string"
},
"testTargetId": {
"description": "Structured test target id from testableMessages. Do not show this id to users; ask them to choose by message label.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"description": "Workflow id whose editable draft message should be tested.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId",
"confirmSend"
],
"type": "object"
},
"kind": {
"const": "send_workflow_test",
"type": "string"
},
"message": {
"type": "string"
},
"previewUrl": {
"format": "uri",
"type": "string"
},
"summary": {
"items": {
"type": "string"
},
"type": "array"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"kind",
"action",
"input",
"message",
"previewUrl",
"appUrls",
"summary",
"warnings"
],
"type": "object"
}
]
},
"status": {
"const": "confirmation_required",
"type": "string"
}
},
"required": [
"status",
"confirmation"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"handoff": {
"additionalProperties": false,
"properties": {
"instructions": {
"items": {
"type": "string"
},
"type": "array"
},
"kind": {
"const": "browser",
"type": "string"
},
"message": {
"type": "string"
},
"reason": {
"type": "string"
},
"url": {
"format": "uri",
"type": "string"
}
},
"required": [
"kind",
"reason",
"message",
"url",
"instructions"
],
"type": "object"
},
"status": {
"const": "handoff_required",
"type": "string"
}
},
"required": [
"status",
"handoff"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"retryAfterSeconds": {
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"status": {
"const": "error",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
}
]
}
},
"required": [
"result"
],
"type": "object"
}
},
{
"description": "Read-only. Use before editing, verifying, or preparing publish for an existing workflow. Returns normalized draft and published workflow structure plus the Dreamlit preview/builder URL and status URLs. Do not use to create, update, publish, or unpublish workflows.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"workflowId": {
"description": "Workflow id to inspect before editing, verifying, or publishing.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId"
],
"type": "object"
},
"name": "get_workflow_and_preview_url",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"result": {
"description": "Dreamlit MCP result. success responses contain data and appUrls when relevant; auth_required, clarification_required, confirmation_required, handoff_required, and error responses explain the next action.",
"oneOf": [
{
"additionalProperties": false,
"properties": {
"data": {
"additionalProperties": {},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"status": {
"const": "success",
"type": "string"
}
},
"required": [
"status",
"data"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"auth": {
"additionalProperties": false,
"properties": {
"reason": {
"type": "string"
}
},
"required": [
"reason"
],
"type": "object"
},
"message": {
"type": "string"
},
"status": {
"const": "auth_required",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"clarification": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"appUrls": {
"additionalProperties": false,
"properties": {
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"workflows"
],
"type": "object"
},
"assistantMessageId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"chatSessionId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"message": {
"type": "string"
},
"orgId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"projectId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"userMessageId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"message",
"workflowId",
"projectId",
"orgId",
"chatSessionId",
"userMessageId",
"assistantMessageId",
"appUrls"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"appUrls": {
"additionalProperties": false,
"properties": {
"preview": {
"format": "uri",
"type": "string"
},
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"preview"
],
"type": "object"
},
"kind": {
"const": "test_message_selection",
"type": "string"
},
"message": {
"type": "string"
},
"orgId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"projectId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"testableMessages": {
"items": {
"additionalProperties": false,
"properties": {
"description": {
"type": "string"
},
"destination": {
"type": "string"
},
"label": {
"type": "string"
},
"messageType": {
"enum": [
"email",
"slack"
],
"type": "string"
},
"requiresRecipient": {
"type": "boolean"
},
"testTargetId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"testTargetId",
"messageType",
"label",
"requiresRecipient"
],
"type": "object"
},
"minItems": 2,
"type": "array"
},
"workflowId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"kind",
"message",
"workflowId",
"projectId",
"orgId",
"testableMessages",
"appUrls"
],
"type": "object"
}
]
},
"status": {
"const": "clarification_required",
"type": "string"
}
},
"required": [
"status",
"clarification"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"confirmation": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"action": {
"const": "confirm_publish",
"type": "string"
},
"appUrls": {
"additionalProperties": false,
"properties": {
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow"
],
"type": "object"
},
"input": {
"additionalProperties": false,
"properties": {
"expectedEditableVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Editable version id returned by prepare_publish, used as a safety check."
},
"expectedPublishedVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Published version id returned by prepare_publish, used as a safety check."
},
"expectedUpdatedAtIso": {
"anyOf": [
{
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Workflow updatedAt timestamp returned by prepare_publish, used as a safety check."
},
"isSandboxed": {
"description": "Whether to publish in sandbox mode so notifications are held for inspection.",
"type": "boolean"
},
"workflowId": {
"description": "Workflow id to publish.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId"
],
"type": "object"
},
"kind": {
"const": "publish",
"type": "string"
},
"message": {
"type": "string"
},
"previewUrl": {
"format": "uri",
"type": "string"
},
"summary": {
"items": {
"type": "string"
},
"type": "array"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"kind",
"action",
"input",
"message",
"previewUrl",
"summary",
"warnings"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"action": {
"const": "send_workflow_test",
"type": "string"
},
"appUrls": {
"additionalProperties": false,
"properties": {
"preview": {
"format": "uri",
"type": "string"
},
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"preview"
],
"type": "object"
},
"input": {
"additionalProperties": false,
"properties": {
"confirmSend": {
"const": true,
"type": "boolean"
},
"messageType": {
"description": "Optional message type filter when selecting a draft message to test.",
"enum": [
"email",
"slack"
],
"type": "string"
},
"rowData": {
"additionalProperties": {},
"description": "Optional sample data for rendering draft message variables during the test. If omitted, Dreamlit uses the same default preview data as the web builder when available.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"testRecipientEmail": {
"description": "Optional recipient for email tests. If omitted, Dreamlit sends to the authenticated user's email address.",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"type": "string"
},
"testTargetId": {
"description": "Structured test target id from testableMessages. Do not show this id to users; ask them to choose by message label.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"description": "Workflow id whose editable draft message should be tested.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId",
"confirmSend"
],
"type": "object"
},
"kind": {
"const": "send_workflow_test",
"type": "string"
},
"message": {
"type": "string"
},
"previewUrl": {
"format": "uri",
"type": "string"
},
"summary": {
"items": {
"type": "string"
},
"type": "array"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"kind",
"action",
"input",
"message",
"previewUrl",
"appUrls",
"summary",
"warnings"
],
"type": "object"
}
]
},
"status": {
"const": "confirmation_required",
"type": "string"
}
},
"required": [
"status",
"confirmation"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"handoff": {
"additionalProperties": false,
"properties": {
"instructions": {
"items": {
"type": "string"
},
"type": "array"
},
"kind": {
"const": "browser",
"type": "string"
},
"message": {
"type": "string"
},
"reason": {
"type": "string"
},
"url": {
"format": "uri",
"type": "string"
}
},
"required": [
"kind",
"reason",
"message",
"url",
"instructions"
],
"type": "object"
},
"status": {
"const": "handoff_required",
"type": "string"
}
},
"required": [
"status",
"handoff"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"retryAfterSeconds": {
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"status": {
"const": "error",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
}
]
}
},
"required": [
"result"
],
"type": "object"
}
},
{
"description": "Read-only. Use when the user wants to inspect saved project brand styles for generated email drafts. Returns paginated project brand style summaries, ids, default status, style metadata, and app URLs. Do not use to create, update, delete, or expose raw style provenance.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"default": 50,
"description": "Maximum number of brand styles to return for this page.",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"offset": {
"default": 0,
"description": "Zero-based brand style offset for pagination. Use nextOffset from the previous response to fetch the next page.",
"maximum": 9007199254740991,
"minimum": 0,
"type": "integer"
},
"projectId": {
"description": "Project id to list brand styles from. Required when access is ambiguous.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"type": "object"
},
"name": "list_brand_styles",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"result": {
"description": "Dreamlit MCP result. success responses contain data and appUrls when relevant; auth_required, clarification_required, confirmation_required, handoff_required, and error responses explain the next action.",
"oneOf": [
{
"additionalProperties": false,
"properties": {
"data": {
"additionalProperties": {},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"status": {
"const": "success",
"type": "string"
}
},
"required": [
"status",
"data"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"auth": {
"additionalProperties": false,
"properties": {
"reason": {
"type": "string"
}
},
"required": [
"reason"
],
"type": "object"
},
"message": {
"type": "string"
},
"status": {
"const": "auth_required",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"clarification": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"appUrls": {
"additionalProperties": false,
"properties": {
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"workflows"
],
"type": "object"
},
"assistantMessageId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"chatSessionId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"message": {
"type": "string"
},
"orgId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"projectId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"userMessageId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"message",
"workflowId",
"projectId",
"orgId",
"chatSessionId",
"userMessageId",
"assistantMessageId",
"appUrls"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"appUrls": {
"additionalProperties": false,
"properties": {
"preview": {
"format": "uri",
"type": "string"
},
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"preview"
],
"type": "object"
},
"kind": {
"const": "test_message_selection",
"type": "string"
},
"message": {
"type": "string"
},
"orgId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"projectId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"testableMessages": {
"items": {
"additionalProperties": false,
"properties": {
"description": {
"type": "string"
},
"destination": {
"type": "string"
},
"label": {
"type": "string"
},
"messageType": {
"enum": [
"email",
"slack"
],
"type": "string"
},
"requiresRecipient": {
"type": "boolean"
},
"testTargetId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"testTargetId",
"messageType",
"label",
"requiresRecipient"
],
"type": "object"
},
"minItems": 2,
"type": "array"
},
"workflowId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"kind",
"message",
"workflowId",
"projectId",
"orgId",
"testableMessages",
"appUrls"
],
"type": "object"
}
]
},
"status": {
"const": "clarification_required",
"type": "string"
}
},
"required": [
"status",
"clarification"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"confirmation": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"action": {
"const": "confirm_publish",
"type": "string"
},
"appUrls": {
"additionalProperties": false,
"properties": {
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow"
],
"type": "object"
},
"input": {
"additionalProperties": false,
"properties": {
"expectedEditableVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Editable version id returned by prepare_publish, used as a safety check."
},
"expectedPublishedVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Published version id returned by prepare_publish, used as a safety check."
},
"expectedUpdatedAtIso": {
"anyOf": [
{
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Workflow updatedAt timestamp returned by prepare_publish, used as a safety check."
},
"isSandboxed": {
"description": "Whether to publish in sandbox mode so notifications are held for inspection.",
"type": "boolean"
},
"workflowId": {
"description": "Workflow id to publish.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId"
],
"type": "object"
},
"kind": {
"const": "publish",
"type": "string"
},
"message": {
"type": "string"
},
"previewUrl": {
"format": "uri",
"type": "string"
},
"summary": {
"items": {
"type": "string"
},
"type": "array"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"kind",
"action",
"input",
"message",
"previewUrl",
"summary",
"warnings"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"action": {
"const": "send_workflow_test",
"type": "string"
},
"appUrls": {
"additionalProperties": false,
"properties": {
"preview": {
"format": "uri",
"type": "string"
},
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"preview"
],
"type": "object"
},
"input": {
"additionalProperties": false,
"properties": {
"confirmSend": {
"const": true,
"type": "boolean"
},
"messageType": {
"description": "Optional message type filter when selecting a draft message to test.",
"enum": [
"email",
"slack"
],
"type": "string"
},
"rowData": {
"additionalProperties": {},
"description": "Optional sample data for rendering draft message variables during the test. If omitted, Dreamlit uses the same default preview data as the web builder when available.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"testRecipientEmail": {
"description": "Optional recipient for email tests. If omitted, Dreamlit sends to the authenticated user's email address.",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"type": "string"
},
"testTargetId": {
"description": "Structured test target id from testableMessages. Do not show this id to users; ask them to choose by message label.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"description": "Workflow id whose editable draft message should be tested.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId",
"confirmSend"
],
"type": "object"
},
"kind": {
"const": "send_workflow_test",
"type": "string"
},
"message": {
"type": "string"
},
"previewUrl": {
"format": "uri",
"type": "string"
},
"summary": {
"items": {
"type": "string"
},
"type": "array"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"kind",
"action",
"input",
"message",
"previewUrl",
"appUrls",
"summary",
"warnings"
],
"type": "object"
}
]
},
"status": {
"const": "confirmation_required",
"type": "string"
}
},
"required": [
"status",
"confirmation"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"handoff": {
"additionalProperties": false,
"properties": {
"instructions": {
"items": {
"type": "string"
},
"type": "array"
},
"kind": {
"const": "browser",
"type": "string"
},
"message": {
"type": "string"
},
"reason": {
"type": "string"
},
"url": {
"format": "uri",
"type": "string"
}
},
"required": [
"kind",
"reason",
"message",
"url",
"instructions"
],
"type": "object"
},
"status": {
"const": "handoff_required",
"type": "string"
}
},
"required": [
"status",
"handoff"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"retryAfterSeconds": {
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"status": {
"const": "error",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
}
]
}
},
"required": [
"result"
],
"type": "object"
}
},
{
"description": "Read-only. Use when the target project is unknown or the user names a project instead of providing an id. Returns accessible Dreamlit projects in the approved workspace with project and workflow-list URLs. Do not use to inspect workflow structure or author changes.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"default": 25,
"description": "Maximum number of projects to return.",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"search": {
"description": "Optional project name search string.",
"maxLength": 200,
"type": "string"
}
},
"type": "object"
},
"name": "list_projects",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"result": {
"description": "Dreamlit MCP result. success responses contain data and appUrls when relevant; auth_required, clarification_required, confirmation_required, handoff_required, and error responses explain the next action.",
"oneOf": [
{
"additionalProperties": false,
"properties": {
"data": {
"additionalProperties": {},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"status": {
"const": "success",
"type": "string"
}
},
"required": [
"status",
"data"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"auth": {
"additionalProperties": false,
"properties": {
"reason": {
"type": "string"
}
},
"required": [
"reason"
],
"type": "object"
},
"message": {
"type": "string"
},
"status": {
"const": "auth_required",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"clarification": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"appUrls": {
"additionalProperties": false,
"properties": {
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"workflows"
],
"type": "object"
},
"assistantMessageId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"chatSessionId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"message": {
"type": "string"
},
"orgId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"projectId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"userMessageId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"message",
"workflowId",
"projectId",
"orgId",
"chatSessionId",
"userMessageId",
"assistantMessageId",
"appUrls"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"appUrls": {
"additionalProperties": false,
"properties": {
"preview": {
"format": "uri",
"type": "string"
},
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"preview"
],
"type": "object"
},
"kind": {
"const": "test_message_selection",
"type": "string"
},
"message": {
"type": "string"
},
"orgId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"projectId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"testableMessages": {
"items": {
"additionalProperties": false,
"properties": {
"description": {
"type": "string"
},
"destination": {
"type": "string"
},
"label": {
"type": "string"
},
"messageType": {
"enum": [
"email",
"slack"
],
"type": "string"
},
"requiresRecipient": {
"type": "boolean"
},
"testTargetId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"testTargetId",
"messageType",
"label",
"requiresRecipient"
],
"type": "object"
},
"minItems": 2,
"type": "array"
},
"workflowId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"kind",
"message",
"workflowId",
"projectId",
"orgId",
"testableMessages",
"appUrls"
],
"type": "object"
}
]
},
"status": {
"const": "clarification_required",
"type": "string"
}
},
"required": [
"status",
"clarification"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"confirmation": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"action": {
"const": "confirm_publish",
"type": "string"
},
"appUrls": {
"additionalProperties": false,
"properties": {
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow"
],
"type": "object"
},
"input": {
"additionalProperties": false,
"properties": {
"expectedEditableVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Editable version id returned by prepare_publish, used as a safety check."
},
"expectedPublishedVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Published version id returned by prepare_publish, used as a safety check."
},
"expectedUpdatedAtIso": {
"anyOf": [
{
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Workflow updatedAt timestamp returned by prepare_publish, used as a safety check."
},
"isSandboxed": {
"description": "Whether to publish in sandbox mode so notifications are held for inspection.",
"type": "boolean"
},
"workflowId": {
"description": "Workflow id to publish.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId"
],
"type": "object"
},
"kind": {
"const": "publish",
"type": "string"
},
"message": {
"type": "string"
},
"previewUrl": {
"format": "uri",
"type": "string"
},
"summary": {
"items": {
"type": "string"
},
"type": "array"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"kind",
"action",
"input",
"message",
"previewUrl",
"summary",
"warnings"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"action": {
"const": "send_workflow_test",
"type": "string"
},
"appUrls": {
"additionalProperties": false,
"properties": {
"preview": {
"format": "uri",
"type": "string"
},
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"preview"
],
"type": "object"
},
"input": {
"additionalProperties": false,
"properties": {
"confirmSend": {
"const": true,
"type": "boolean"
},
"messageType": {
"description": "Optional message type filter when selecting a draft message to test.",
"enum": [
"email",
"slack"
],
"type": "string"
},
"rowData": {
"additionalProperties": {},
"description": "Optional sample data for rendering draft message variables during the test. If omitted, Dreamlit uses the same default preview data as the web builder when available.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"testRecipientEmail": {
"description": "Optional recipient for email tests. If omitted, Dreamlit sends to the authenticated user's email address.",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"type": "string"
},
"testTargetId": {
"description": "Structured test target id from testableMessages. Do not show this id to users; ask them to choose by message label.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"description": "Workflow id whose editable draft message should be tested.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId",
"confirmSend"
],
"type": "object"
},
"kind": {
"const": "send_workflow_test",
"type": "string"
},
"message": {
"type": "string"
},
"previewUrl": {
"format": "uri",
"type": "string"
},
"summary": {
"items": {
"type": "string"
},
"type": "array"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"kind",
"action",
"input",
"message",
"previewUrl",
"appUrls",
"summary",
"warnings"
],
"type": "object"
}
]
},
"status": {
"const": "confirmation_required",
"type": "string"
}
},
"required": [
"status",
"confirmation"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"handoff": {
"additionalProperties": false,
"properties": {
"instructions": {
"items": {
"type": "string"
},
"type": "array"
},
"kind": {
"const": "browser",
"type": "string"
},
"message": {
"type": "string"
},
"reason": {
"type": "string"
},
"url": {
"format": "uri",
"type": "string"
}
},
"required": [
"kind",
"reason",
"message",
"url",
"instructions"
],
"type": "object"
},
"status": {
"const": "handoff_required",
"type": "string"
}
},
"required": [
"status",
"handoff"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"retryAfterSeconds": {
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"status": {
"const": "error",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
}
]
}
},
"required": [
"result"
],
"type": "object"
}
},
{
"description": "Read-only. Use to find workflows in a project by name, description, or trigger type before inspection or editing. Trigger filters include database, auth email, repeating, broadcast, and no-trigger workflows. Returns paginated workflow summaries, published/sandbox state, trigger type, workflow URLs, totalCount, hasMore, and nextOffset. Do not use as the final source of truth before editing; call get_workflow_and_preview_url for full structure.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"default": 80,
"description": "Maximum number of workflows to return for this page.",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"offset": {
"default": 0,
"description": "Zero-based workflow offset for pagination. Use nextOffset from the previous response to fetch the next page.",
"maximum": 9007199254740991,
"minimum": 0,
"type": "integer"
},
"projectId": {
"description": "Project id to list workflows from. Required when access is ambiguous.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"search": {
"description": "Optional workflow name or description search string.",
"maxLength": 200,
"type": "string"
},
"triggerFilters": {
"description": "Optional trigger type filters. Use broadcast only for one-time audience emails.",
"items": {
"enum": [
"auth_email",
"database",
"broadcast",
"repeating",
"none"
],
"type": "string"
},
"type": "array"
}
},
"type": "object"
},
"name": "list_workflows",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"result": {
"description": "Dreamlit MCP result. success responses contain data and appUrls when relevant; auth_required, clarification_required, confirmation_required, handoff_required, and error responses explain the next action.",
"oneOf": [
{
"additionalProperties": false,
"properties": {
"data": {
"additionalProperties": {},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"status": {
"const": "success",
"type": "string"
}
},
"required": [
"status",
"data"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"auth": {
"additionalProperties": false,
"properties": {
"reason": {
"type": "string"
}
},
"required": [
"reason"
],
"type": "object"
},
"message": {
"type": "string"
},
"status": {
"const": "auth_required",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"clarification": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"appUrls": {
"additionalProperties": false,
"properties": {
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"workflows"
],
"type": "object"
},
"assistantMessageId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"chatSessionId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"message": {
"type": "string"
},
"orgId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"projectId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"userMessageId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"message",
"workflowId",
"projectId",
"orgId",
"chatSessionId",
"userMessageId",
"assistantMessageId",
"appUrls"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"appUrls": {
"additionalProperties": false,
"properties": {
"preview": {
"format": "uri",
"type": "string"
},
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"preview"
],
"type": "object"
},
"kind": {
"const": "test_message_selection",
"type": "string"
},
"message": {
"type": "string"
},
"orgId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"projectId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"testableMessages": {
"items": {
"additionalProperties": false,
"properties": {
"description": {
"type": "string"
},
"destination": {
"type": "string"
},
"label": {
"type": "string"
},
"messageType": {
"enum": [
"email",
"slack"
],
"type": "string"
},
"requiresRecipient": {
"type": "boolean"
},
"testTargetId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"testTargetId",
"messageType",
"label",
"requiresRecipient"
],
"type": "object"
},
"minItems": 2,
"type": "array"
},
"workflowId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"kind",
"message",
"workflowId",
"projectId",
"orgId",
"testableMessages",
"appUrls"
],
"type": "object"
}
]
},
"status": {
"const": "clarification_required",
"type": "string"
}
},
"required": [
"status",
"clarification"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"confirmation": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"action": {
"const": "confirm_publish",
"type": "string"
},
"appUrls": {
"additionalProperties": false,
"properties": {
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow"
],
"type": "object"
},
"input": {
"additionalProperties": false,
"properties": {
"expectedEditableVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Editable version id returned by prepare_publish, used as a safety check."
},
"expectedPublishedVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Published version id returned by prepare_publish, used as a safety check."
},
"expectedUpdatedAtIso": {
"anyOf": [
{
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Workflow updatedAt timestamp returned by prepare_publish, used as a safety check."
},
"isSandboxed": {
"description": "Whether to publish in sandbox mode so notifications are held for inspection.",
"type": "boolean"
},
"workflowId": {
"description": "Workflow id to publish.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId"
],
"type": "object"
},
"kind": {
"const": "publish",
"type": "string"
},
"message": {
"type": "string"
},
"previewUrl": {
"format": "uri",
"type": "string"
},
"summary": {
"items": {
"type": "string"
},
"type": "array"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"kind",
"action",
"input",
"message",
"previewUrl",
"summary",
"warnings"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"action": {
"const": "send_workflow_test",
"type": "string"
},
"appUrls": {
"additionalProperties": false,
"properties": {
"preview": {
"format": "uri",
"type": "string"
},
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"preview"
],
"type": "object"
},
"input": {
"additionalProperties": false,
"properties": {
"confirmSend": {
"const": true,
"type": "boolean"
},
"messageType": {
"description": "Optional message type filter when selecting a draft message to test.",
"enum": [
"email",
"slack"
],
"type": "string"
},
"rowData": {
"additionalProperties": {},
"description": "Optional sample data for rendering draft message variables during the test. If omitted, Dreamlit uses the same default preview data as the web builder when available.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"testRecipientEmail": {
"description": "Optional recipient for email tests. If omitted, Dreamlit sends to the authenticated user's email address.",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"type": "string"
},
"testTargetId": {
"description": "Structured test target id from testableMessages. Do not show this id to users; ask them to choose by message label.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"description": "Workflow id whose editable draft message should be tested.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId",
"confirmSend"
],
"type": "object"
},
"kind": {
"const": "send_workflow_test",
"type": "string"
},
"message": {
"type": "string"
},
"previewUrl": {
"format": "uri",
"type": "string"
},
"summary": {
"items": {
"type": "string"
},
"type": "array"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"kind",
"action",
"input",
"message",
"previewUrl",
"appUrls",
"summary",
"warnings"
],
"type": "object"
}
]
},
"status": {
"const": "confirmation_required",
"type": "string"
}
},
"required": [
"status",
"confirmation"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"handoff": {
"additionalProperties": false,
"properties": {
"instructions": {
"items": {
"type": "string"
},
"type": "array"
},
"kind": {
"const": "browser",
"type": "string"
},
"message": {
"type": "string"
},
"reason": {
"type": "string"
},
"url": {
"format": "uri",
"type": "string"
}
},
"required": [
"kind",
"reason",
"message",
"url",
"instructions"
],
"type": "object"
},
"status": {
"const": "handoff_required",
"type": "string"
}
},
"required": [
"status",
"handoff"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"retryAfterSeconds": {
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"status": {
"const": "error",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
}
]
}
},
"required": [
"result"
],
"type": "object"
}
},
{
"description": "Read-only validation step before publishing. Use after the user asks to publish and after inspecting the workflow if needed. Returns validation status, publish mode, preview URL, and a confirmation payload with version/timestamp safety checks for confirm_publish. Does not publish or schedule anything by itself.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"workflowId": {
"description": "Workflow id to validate and prepare for explicit publish approval.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId"
],
"type": "object"
},
"name": "prepare_publish",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"result": {
"description": "Dreamlit MCP result. success responses contain data and appUrls when relevant; auth_required, clarification_required, confirmation_required, handoff_required, and error responses explain the next action.",
"oneOf": [
{
"additionalProperties": false,
"properties": {
"data": {
"additionalProperties": {},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"status": {
"const": "success",
"type": "string"
}
},
"required": [
"status",
"data"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"auth": {
"additionalProperties": false,
"properties": {
"reason": {
"type": "string"
}
},
"required": [
"reason"
],
"type": "object"
},
"message": {
"type": "string"
},
"status": {
"const": "auth_required",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"clarification": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"appUrls": {
"additionalProperties": false,
"properties": {
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"workflows"
],
"type": "object"
},
"assistantMessageId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"chatSessionId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"message": {
"type": "string"
},
"orgId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"projectId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"userMessageId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"message",
"workflowId",
"projectId",
"orgId",
"chatSessionId",
"userMessageId",
"assistantMessageId",
"appUrls"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"appUrls": {
"additionalProperties": false,
"properties": {
"preview": {
"format": "uri",
"type": "string"
},
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"preview"
],
"type": "object"
},
"kind": {
"const": "test_message_selection",
"type": "string"
},
"message": {
"type": "string"
},
"orgId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"projectId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"testableMessages": {
"items": {
"additionalProperties": false,
"properties": {
"description": {
"type": "string"
},
"destination": {
"type": "string"
},
"label": {
"type": "string"
},
"messageType": {
"enum": [
"email",
"slack"
],
"type": "string"
},
"requiresRecipient": {
"type": "boolean"
},
"testTargetId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"testTargetId",
"messageType",
"label",
"requiresRecipient"
],
"type": "object"
},
"minItems": 2,
"type": "array"
},
"workflowId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"kind",
"message",
"workflowId",
"projectId",
"orgId",
"testableMessages",
"appUrls"
],
"type": "object"
}
]
},
"status": {
"const": "clarification_required",
"type": "string"
}
},
"required": [
"status",
"clarification"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"confirmation": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"action": {
"const": "confirm_publish",
"type": "string"
},
"appUrls": {
"additionalProperties": false,
"properties": {
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow"
],
"type": "object"
},
"input": {
"additionalProperties": false,
"properties": {
"expectedEditableVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Editable version id returned by prepare_publish, used as a safety check."
},
"expectedPublishedVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Published version id returned by prepare_publish, used as a safety check."
},
"expectedUpdatedAtIso": {
"anyOf": [
{
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Workflow updatedAt timestamp returned by prepare_publish, used as a safety check."
},
"isSandboxed": {
"description": "Whether to publish in sandbox mode so notifications are held for inspection.",
"type": "boolean"
},
"workflowId": {
"description": "Workflow id to publish.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId"
],
"type": "object"
},
"kind": {
"const": "publish",
"type": "string"
},
"message": {
"type": "string"
},
"previewUrl": {
"format": "uri",
"type": "string"
},
"summary": {
"items": {
"type": "string"
},
"type": "array"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"kind",
"action",
"input",
"message",
"previewUrl",
"summary",
"warnings"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"action": {
"const": "send_workflow_test",
"type": "string"
},
"appUrls": {
"additionalProperties": false,
"properties": {
"preview": {
"format": "uri",
"type": "string"
},
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"preview"
],
"type": "object"
},
"input": {
"additionalProperties": false,
"properties": {
"confirmSend": {
"const": true,
"type": "boolean"
},
"messageType": {
"description": "Optional message type filter when selecting a draft message to test.",
"enum": [
"email",
"slack"
],
"type": "string"
},
"rowData": {
"additionalProperties": {},
"description": "Optional sample data for rendering draft message variables during the test. If omitted, Dreamlit uses the same default preview data as the web builder when available.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"testRecipientEmail": {
"description": "Optional recipient for email tests. If omitted, Dreamlit sends to the authenticated user's email address.",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"type": "string"
},
"testTargetId": {
"description": "Structured test target id from testableMessages. Do not show this id to users; ask them to choose by message label.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"description": "Workflow id whose editable draft message should be tested.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId",
"confirmSend"
],
"type": "object"
},
"kind": {
"const": "send_workflow_test",
"type": "string"
},
"message": {
"type": "string"
},
"previewUrl": {
"format": "uri",
"type": "string"
},
"summary": {
"items": {
"type": "string"
},
"type": "array"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"kind",
"action",
"input",
"message",
"previewUrl",
"appUrls",
"summary",
"warnings"
],
"type": "object"
}
]
},
"status": {
"const": "confirmation_required",
"type": "string"
}
},
"required": [
"status",
"confirmation"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"handoff": {
"additionalProperties": false,
"properties": {
"instructions": {
"items": {
"type": "string"
},
"type": "array"
},
"kind": {
"const": "browser",
"type": "string"
},
"message": {
"type": "string"
},
"reason": {
"type": "string"
},
"url": {
"format": "uri",
"type": "string"
}
},
"required": [
"kind",
"reason",
"message",
"url",
"instructions"
],
"type": "object"
},
"status": {
"const": "handoff_required",
"type": "string"
}
},
"required": [
"status",
"handoff"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"retryAfterSeconds": {
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"status": {
"const": "error",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
}
]
}
},
"required": [
"result"
],
"type": "object"
}
},
{
"description": "Side effect when confirmSend is true: sends one current draft email or Slack message for review, but does not publish, schedule, or edit the workflow. Use after authoring or inspection when the user wants to verify an important message before publishing. Returns sent-test details, app URLs, a confirmation request, or a clarification request with user-facing message choices. Do not expose test target ids as copy; ask users to choose by message label and confirm before sending.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"confirmSend": {
"description": "Set to true only after the user explicitly confirms sending this selected test message. If omitted or false, Dreamlit returns confirmation_required and does not send.",
"type": "boolean"
},
"messageType": {
"description": "Optional message type filter when selecting a draft message to test.",
"enum": [
"email",
"slack"
],
"type": "string"
},
"rowData": {
"additionalProperties": {},
"description": "Optional sample data for rendering draft message variables during the test. If omitted, Dreamlit uses the same default preview data as the web builder when available.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"testRecipientEmail": {
"description": "Optional recipient for email tests. If omitted, Dreamlit sends to the authenticated user's email address.",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"type": "string"
},
"testTargetId": {
"description": "Structured test target id from testableMessages. Do not show this id to users; ask them to choose by message label.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"description": "Workflow id whose editable draft message should be tested.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId"
],
"type": "object"
},
"name": "send_workflow_test",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"result": {
"description": "Dreamlit MCP result. success responses contain data and appUrls when relevant; auth_required, clarification_required, confirmation_required, handoff_required, and error responses explain the next action.",
"oneOf": [
{
"additionalProperties": false,
"properties": {
"data": {
"additionalProperties": {},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"status": {
"const": "success",
"type": "string"
}
},
"required": [
"status",
"data"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"auth": {
"additionalProperties": false,
"properties": {
"reason": {
"type": "string"
}
},
"required": [
"reason"
],
"type": "object"
},
"message": {
"type": "string"
},
"status": {
"const": "auth_required",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"clarification": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"appUrls": {
"additionalProperties": false,
"properties": {
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"workflows"
],
"type": "object"
},
"assistantMessageId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"chatSessionId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"message": {
"type": "string"
},
"orgId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"projectId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"userMessageId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"message",
"workflowId",
"projectId",
"orgId",
"chatSessionId",
"userMessageId",
"assistantMessageId",
"appUrls"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"appUrls": {
"additionalProperties": false,
"properties": {
"preview": {
"format": "uri",
"type": "string"
},
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"preview"
],
"type": "object"
},
"kind": {
"const": "test_message_selection",
"type": "string"
},
"message": {
"type": "string"
},
"orgId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"projectId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"testableMessages": {
"items": {
"additionalProperties": false,
"properties": {
"description": {
"type": "string"
},
"destination": {
"type": "string"
},
"label": {
"type": "string"
},
"messageType": {
"enum": [
"email",
"slack"
],
"type": "string"
},
"requiresRecipient": {
"type": "boolean"
},
"testTargetId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"testTargetId",
"messageType",
"label",
"requiresRecipient"
],
"type": "object"
},
"minItems": 2,
"type": "array"
},
"workflowId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"kind",
"message",
"workflowId",
"projectId",
"orgId",
"testableMessages",
"appUrls"
],
"type": "object"
}
]
},
"status": {
"const": "clarification_required",
"type": "string"
}
},
"required": [
"status",
"clarification"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"confirmation": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"action": {
"const": "confirm_publish",
"type": "string"
},
"appUrls": {
"additionalProperties": false,
"properties": {
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow"
],
"type": "object"
},
"input": {
"additionalProperties": false,
"properties": {
"expectedEditableVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Editable version id returned by prepare_publish, used as a safety check."
},
"expectedPublishedVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Published version id returned by prepare_publish, used as a safety check."
},
"expectedUpdatedAtIso": {
"anyOf": [
{
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Workflow updatedAt timestamp returned by prepare_publish, used as a safety check."
},
"isSandboxed": {
"description": "Whether to publish in sandbox mode so notifications are held for inspection.",
"type": "boolean"
},
"workflowId": {
"description": "Workflow id to publish.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId"
],
"type": "object"
},
"kind": {
"const": "publish",
"type": "string"
},
"message": {
"type": "string"
},
"previewUrl": {
"format": "uri",
"type": "string"
},
"summary": {
"items": {
"type": "string"
},
"type": "array"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"kind",
"action",
"input",
"message",
"previewUrl",
"summary",
"warnings"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"action": {
"const": "send_workflow_test",
"type": "string"
},
"appUrls": {
"additionalProperties": false,
"properties": {
"preview": {
"format": "uri",
"type": "string"
},
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"preview"
],
"type": "object"
},
"input": {
"additionalProperties": false,
"properties": {
"confirmSend": {
"const": true,
"type": "boolean"
},
"messageType": {
"description": "Optional message type filter when selecting a draft message to test.",
"enum": [
"email",
"slack"
],
"type": "string"
},
"rowData": {
"additionalProperties": {},
"description": "Optional sample data for rendering draft message variables during the test. If omitted, Dreamlit uses the same default preview data as the web builder when available.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"testRecipientEmail": {
"description": "Optional recipient for email tests. If omitted, Dreamlit sends to the authenticated user's email address.",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"type": "string"
},
"testTargetId": {
"description": "Structured test target id from testableMessages. Do not show this id to users; ask them to choose by message label.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"description": "Workflow id whose editable draft message should be tested.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId",
"confirmSend"
],
"type": "object"
},
"kind": {
"const": "send_workflow_test",
"type": "string"
},
"message": {
"type": "string"
},
"previewUrl": {
"format": "uri",
"type": "string"
},
"summary": {
"items": {
"type": "string"
},
"type": "array"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"kind",
"action",
"input",
"message",
"previewUrl",
"appUrls",
"summary",
"warnings"
],
"type": "object"
}
]
},
"status": {
"const": "confirmation_required",
"type": "string"
}
},
"required": [
"status",
"confirmation"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"handoff": {
"additionalProperties": false,
"properties": {
"instructions": {
"items": {
"type": "string"
},
"type": "array"
},
"kind": {
"const": "browser",
"type": "string"
},
"message": {
"type": "string"
},
"reason": {
"type": "string"
},
"url": {
"format": "uri",
"type": "string"
}
},
"required": [
"kind",
"reason",
"message",
"url",
"instructions"
],
"type": "object"
},
"status": {
"const": "handoff_required",
"type": "string"
}
},
"required": [
"status",
"handoff"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"retryAfterSeconds": {
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"status": {
"const": "error",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
}
]
}
},
"required": [
"result"
],
"type": "object"
}
},
{
"description": "Use after explicit user intent to unpublish a Dreamlit workflow. Side effect: disables live triggers or schedules for that workflow and stops future automated sends. Returns updated workflow status and app URLs. Do not use for deleting drafts, canceling one broadcast run, or editing workflow content.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"workflowId": {
"description": "Workflow id to unpublish and disable live triggers or schedules.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId"
],
"type": "object"
},
"name": "unpublish_workflow",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"result": {
"description": "Dreamlit MCP result. success responses contain data and appUrls when relevant; auth_required, clarification_required, confirmation_required, handoff_required, and error responses explain the next action.",
"oneOf": [
{
"additionalProperties": false,
"properties": {
"data": {
"additionalProperties": {},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"status": {
"const": "success",
"type": "string"
}
},
"required": [
"status",
"data"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"auth": {
"additionalProperties": false,
"properties": {
"reason": {
"type": "string"
}
},
"required": [
"reason"
],
"type": "object"
},
"message": {
"type": "string"
},
"status": {
"const": "auth_required",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"clarification": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"appUrls": {
"additionalProperties": false,
"properties": {
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"workflows"
],
"type": "object"
},
"assistantMessageId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"chatSessionId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"message": {
"type": "string"
},
"orgId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"projectId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"userMessageId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"message",
"workflowId",
"projectId",
"orgId",
"chatSessionId",
"userMessageId",
"assistantMessageId",
"appUrls"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"appUrls": {
"additionalProperties": false,
"properties": {
"preview": {
"format": "uri",
"type": "string"
},
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"preview"
],
"type": "object"
},
"kind": {
"const": "test_message_selection",
"type": "string"
},
"message": {
"type": "string"
},
"orgId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"projectId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"testableMessages": {
"items": {
"additionalProperties": false,
"properties": {
"description": {
"type": "string"
},
"destination": {
"type": "string"
},
"label": {
"type": "string"
},
"messageType": {
"enum": [
"email",
"slack"
],
"type": "string"
},
"requiresRecipient": {
"type": "boolean"
},
"testTargetId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"testTargetId",
"messageType",
"label",
"requiresRecipient"
],
"type": "object"
},
"minItems": 2,
"type": "array"
},
"workflowId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"kind",
"message",
"workflowId",
"projectId",
"orgId",
"testableMessages",
"appUrls"
],
"type": "object"
}
]
},
"status": {
"const": "clarification_required",
"type": "string"
}
},
"required": [
"status",
"clarification"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"confirmation": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"action": {
"const": "confirm_publish",
"type": "string"
},
"appUrls": {
"additionalProperties": false,
"properties": {
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow"
],
"type": "object"
},
"input": {
"additionalProperties": false,
"properties": {
"expectedEditableVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Editable version id returned by prepare_publish, used as a safety check."
},
"expectedPublishedVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Published version id returned by prepare_publish, used as a safety check."
},
"expectedUpdatedAtIso": {
"anyOf": [
{
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Workflow updatedAt timestamp returned by prepare_publish, used as a safety check."
},
"isSandboxed": {
"description": "Whether to publish in sandbox mode so notifications are held for inspection.",
"type": "boolean"
},
"workflowId": {
"description": "Workflow id to publish.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId"
],
"type": "object"
},
"kind": {
"const": "publish",
"type": "string"
},
"message": {
"type": "string"
},
"previewUrl": {
"format": "uri",
"type": "string"
},
"summary": {
"items": {
"type": "string"
},
"type": "array"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"kind",
"action",
"input",
"message",
"previewUrl",
"summary",
"warnings"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"action": {
"const": "send_workflow_test",
"type": "string"
},
"appUrls": {
"additionalProperties": false,
"properties": {
"preview": {
"format": "uri",
"type": "string"
},
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"preview"
],
"type": "object"
},
"input": {
"additionalProperties": false,
"properties": {
"confirmSend": {
"const": true,
"type": "boolean"
},
"messageType": {
"description": "Optional message type filter when selecting a draft message to test.",
"enum": [
"email",
"slack"
],
"type": "string"
},
"rowData": {
"additionalProperties": {},
"description": "Optional sample data for rendering draft message variables during the test. If omitted, Dreamlit uses the same default preview data as the web builder when available.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"testRecipientEmail": {
"description": "Optional recipient for email tests. If omitted, Dreamlit sends to the authenticated user's email address.",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"type": "string"
},
"testTargetId": {
"description": "Structured test target id from testableMessages. Do not show this id to users; ask them to choose by message label.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"description": "Workflow id whose editable draft message should be tested.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId",
"confirmSend"
],
"type": "object"
},
"kind": {
"const": "send_workflow_test",
"type": "string"
},
"message": {
"type": "string"
},
"previewUrl": {
"format": "uri",
"type": "string"
},
"summary": {
"items": {
"type": "string"
},
"type": "array"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"kind",
"action",
"input",
"message",
"previewUrl",
"appUrls",
"summary",
"warnings"
],
"type": "object"
}
]
},
"status": {
"const": "confirmation_required",
"type": "string"
}
},
"required": [
"status",
"confirmation"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"handoff": {
"additionalProperties": false,
"properties": {
"instructions": {
"items": {
"type": "string"
},
"type": "array"
},
"kind": {
"const": "browser",
"type": "string"
},
"message": {
"type": "string"
},
"reason": {
"type": "string"
},
"url": {
"format": "uri",
"type": "string"
}
},
"required": [
"kind",
"reason",
"message",
"url",
"instructions"
],
"type": "object"
},
"status": {
"const": "handoff_required",
"type": "string"
}
},
"required": [
"status",
"handoff"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"retryAfterSeconds": {
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"status": {
"const": "error",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
}
]
}
},
"required": [
"result"
],
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:0740ac32bbde9535a306aca0098ae609fbf478dd5e621194998b75dbe74fc389 | sha256sum