Serveur MCP

Dreamlit

ai.dreamlit/mcp
Communication Public et accessible MCP 2025-11-25

Ce que fait ce MCP

Enables AI clients to create, test, publish, and manage notification workflows.

confirm_publish
Confirm publish
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.
Destructif
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['workflowId'], 'properties': {'workflowId': {'type': 'string', '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)$', 'description': 'Workflow id to publish.'}, 'isSandboxed': {'type': 'boolean', 'description': 'Whether to publish in sandbox mode so notifications are held for inspection.'}, 'expectedUpdatedAtIso': {'anyOf': [{'type': 'string', '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': 'null'}], 'description': 'Workflow updatedAt timestamp returned by prepare_publish, used as a safety check.'}, 'expectedEditableVersionId': {'anyOf': [{'type': 'string', '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': 'null'}], 'description': 'Editable version id returned by prepare_publish, used as a safety check.'}, 'expectedPublishedVersionId': {'anyOf': [{'type': 'string', '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': 'null'}], 'description': 'Published version id returned by prepare_publish, used as a safety check.'}}}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {'oneOf': [{'type': 'object', 'required': ['status', 'data'], 'properties': {'data': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'status': {'type': 'string', 'const': 'success'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'message'], 'properties': {'auth': {'type': 'object', 'required': ['reason'], 'properties': {'reason': {'type': 'string'}}, 'additionalProperties': False}, 'status': {'type': 'string', 'const': 'auth_required'}, 'message': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'clarification'], 'properties': {'status': {'type': 'string', 'const': 'clarification_required'}, 'clarification': {'anyOf': [{'type': 'object', 'required': ['message', 'workflowId', 'projectId', 'orgId', 'chatSessionId', 'userMessageId', 'assistantMessageId', 'appUrls'], 'properties': {'orgId': {'type': 'string', '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)$'}, 'appUrls': {'type': 'object', 'required': ['workflow', 'workflows'], 'properties': {'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'projectId': {'type': 'string', '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)$'}, 'workflowId': {'type': 'string', '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)$'}, 'chatSessionId': {'type': 'string', '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)$'}, 'userMessageId': {'type': 'string', '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)$'}, 'assistantMessageId': {'type': 'string', '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)$'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'message', 'workflowId', 'projectId', 'orgId', 'testableMessages', 'appUrls'], 'properties': {'kind': {'type': 'string', 'const': 'test_message_selection'}, 'orgId': {'type': 'string', '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)$'}, 'appUrls': {'type': 'object', 'required': ['workflow', 'preview'], 'properties': {'preview': {'type': 'string', 'format': 'uri'}, 'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'projectId': {'type': 'string', '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)$'}, 'workflowId': {'type': 'string', '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)$'}, 'testableMessages': {'type': 'array', 'items': {'type': 'object', 'required': ['testTargetId', 'messageType', 'label', 'requiresRecipient'], 'properties': {'label': {'type': 'string'}, 'description': {'type': 'string'}, 'destination': {'type': 'string'}, 'messageType': {'enum': ['email', 'slack'], 'type': 'string'}, 'testTargetId': {'type': 'string', '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)$'}, 'requiresRecipient': {'type': 'boolean'}}, 'additionalProperties': False}, 'minItems': 2}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'confirmation'], 'properties': {'status': {'type': 'string', 'const': 'confirmation_required'}, 'confirmation': {'anyOf': [{'type': 'object', 'required': ['kind', 'action', 'input', 'message', 'previewUrl', 'summary', 'warnings'], 'properties': {'kind': {'type': 'string', 'const': 'publish'}, 'input': {'type': 'object', 'required': ['workflowId'], 'properties': {'workflowId': {'type': 'string', '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)$', 'description': 'Workflow id to publish.'}, 'isSandboxed': {'type': 'boolean', 'description': 'Whether to publish in sandbox mode so notifications are held for inspection.'}, 'expectedUpdatedAtIso': {'anyOf': [{'type': 'string', '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': 'null'}], 'description': 'Workflow updatedAt timestamp returned by prepare_publish, used as a safety check.'}, 'expectedEditableVersionId': {'anyOf': [{'type': 'string', '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': 'null'}], 'description': 'Editable version id returned by prepare_publish, used as a safety check.'}, 'expectedPublishedVersionId': {'anyOf': [{'type': 'string', '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': 'null'}], 'description': 'Published version id returned by prepare_publish, used as a safety check.'}}, 'additionalProperties': False}, 'action': {'type': 'string', 'const': 'confirm_publish'}, 'appUrls': {'type': 'object', 'required': ['workflow'], 'properties': {'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'summary': {'type': 'array', 'items': {'type': 'string'}}, 'warnings': {'type': 'array', 'items': {'type': 'string'}}, 'previewUrl': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'action', 'input', 'message', 'previewUrl', 'appUrls', 'summary', 'warnings'], 'properties': {'kind': {'type': 'string', 'const': 'send_workflow_test'}, 'input': {'type': 'object', 'required': ['workflowId', 'confirmSend'], 'properties': {'rowData': {'type': 'object', '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'}, 'additionalProperties': {}}, 'workflowId': {'type': 'string', '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)$', 'description': 'Workflow id whose editable draft message should be tested.'}, 'confirmSend': {'type': 'boolean', 'const': True}, 'messageType': {'enum': ['email', 'slack'], 'type': 'string', 'description': 'Optional message type filter when selecting a draft message to test.'}, 'testTargetId': {'type': 'string', '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)$', 'description': 'Structured test target id from testableMessages. Do not show this id to users; ask them to choose by message label.'}, 'testRecipientEmail': {'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'description': "Optional recipient for email tests. If omitted, Dreamlit sends to the authenticated user's email address."}}, 'additionalProperties': False}, 'action': {'type': 'string', 'const': 'send_workflow_test'}, 'appUrls': {'type': 'object', 'required': ['workflow', 'preview'], 'properties': {'preview': {'type': 'string', 'format': 'uri'}, 'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'summary': {'type': 'array', 'items': {'type': 'string'}}, 'warnings': {'type': 'array', 'items': {'type': 'string'}}, 'previewUrl': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'handoff'], 'properties': {'status': {'type': 'string', 'const': 'handoff_required'}, 'handoff': {'type': 'object', 'required': ['kind', 'reason', 'message', 'url', 'instructions'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'kind': {'type': 'string', 'const': 'browser'}, 'reason': {'type': 'string'}, 'message': {'type': 'string'}, 'instructions': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'message'], 'properties': {'code': {'type': 'string'}, 'status': {'type': 'string', 'const': 'error'}, 'message': {'type': 'string'}, 'retryAfterSeconds': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}}, 'additionalProperties': False}], '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.'}}, 'additionalProperties': False}
create_or_update_workflow
Create or update workflow
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.
Accès externe
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['prompt'], 'properties': {'prompt': {'type': 'string', 'minLength': 1, '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.'}, 'projectId': {'type': 'string', '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)$', 'description': 'Target project id for creating a new workflow draft.'}, 'workflowId': {'type': 'string', '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)$', 'description': 'Existing workflow id to continue editing. Use get_workflow_and_preview_url first when changing an existing workflow.'}, 'userCurrentTimeIso': {'type': 'string', '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)))$', 'description': "User's current time as an ISO timestamp with offset, useful for relative schedule requests."}, 'userCurrentTimeZoneId': {'type': 'string', 'minLength': 1, 'description': 'IANA timezone id for the user, useful for repeating workflows and scheduled broadcasts.'}, 'userEmailStepComments': {'type': 'array', 'items': {'type': 'object', 'required': ['workflowStepId', 'comment', 'onCodeLineText', 'userHighlightedText'], 'properties': {'comment': {'type': 'string', 'minLength': 1, 'description': "User's requested change."}, 'onCodeLineText': {'type': 'string', 'minLength': 1, 'description': 'Nearby email editor text for anchoring the comment.'}, 'workflowStepId': {'type': 'string', 'minLength': 1, 'description': 'Workflow step id that the user commented on.'}, 'userHighlightedText': {'type': 'string', 'minLength': 1, 'description': 'Specific text selected by the user.'}}}, 'description': 'Optional inline comments for revising email step content.'}}}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {'oneOf': [{'type': 'object', 'required': ['status', 'data'], 'properties': {'data': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'status': {'type': 'string', 'const': 'success'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'message'], 'properties': {'auth': {'type': 'object', 'required': ['reason'], 'properties': {'reason': {'type': 'string'}}, 'additionalProperties': False}, 'status': {'type': 'string', 'const': 'auth_required'}, 'message': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'clarification'], 'properties': {'status': {'type': 'string', 'const': 'clarification_required'}, 'clarification': {'anyOf': [{'type': 'object', 'required': ['message', 'workflowId', 'projectId', 'orgId', 'chatSessionId', 'userMessageId', 'assistantMessageId', 'appUrls'], 'properties': {'orgId': {'type': 'string', '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)$'}, 'appUrls': {'type': 'object', 'required': ['workflow', 'workflows'], 'properties': {'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'projectId': {'type': 'string', '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)$'}, 'workflowId': {'type': 'string', '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)$'}, 'chatSessionId': {'type': 'string', '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)$'}, 'userMessageId': {'type': 'string', '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)$'}, 'assistantMessageId': {'type': 'string', '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)$'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'message', 'workflowId', 'projectId', 'orgId', 'testableMessages', 'appUrls'], 'properties': {'kind': {'type': 'string', 'const': 'test_message_selection'}, 'orgId': {'type': 'string', '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)$'}, 'appUrls': {'type': 'object', 'required': ['workflow', 'preview'], 'properties': {'preview': {'type': 'string', 'format': 'uri'}, 'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'projectId': {'type': 'string', '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)$'}, 'workflowId': {'type': 'string', '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)$'}, 'testableMessages': {'type': 'array', 'items': {'type': 'object', 'required': ['testTargetId', 'messageType', 'label', 'requiresRecipient'], 'properties': {'label': {'type': 'string'}, 'description': {'type': 'string'}, 'destination': {'type': 'string'}, 'messageType': {'enum': ['email', 'slack'], 'type': 'string'}, 'testTargetId': {'type': 'string', '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)$'}, 'requiresRecipient': {'type': 'boolean'}}, 'additionalProperties': False}, 'minItems': 2}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'confirmation'], 'properties': {'status': {'type': 'string', 'const': 'confirmation_required'}, 'confirmation': {'anyOf': [{'type': 'object', 'required': ['kind', 'action', 'input', 'message', 'previewUrl', 'summary', 'warnings'], 'properties': {'kind': {'type': 'string', 'const': 'publish'}, 'input': {'type': 'object', 'required': ['workflowId'], 'properties': {'workflowId': {'type': 'string', '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)$', 'description': 'Workflow id to publish.'}, 'isSandboxed': {'type': 'boolean', 'description': 'Whether to publish in sandbox mode so notifications are held for inspection.'}, 'expectedUpdatedAtIso': {'anyOf': [{'type': 'string', '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': 'null'}], 'description': 'Workflow updatedAt timestamp returned by prepare_publish, used as a safety check.'}, 'expectedEditableVersionId': {'anyOf': [{'type': 'string', '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': 'null'}], 'description': 'Editable version id returned by prepare_publish, used as a safety check.'}, 'expectedPublishedVersionId': {'anyOf': [{'type': 'string', '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': 'null'}], 'description': 'Published version id returned by prepare_publish, used as a safety check.'}}, 'additionalProperties': False}, 'action': {'type': 'string', 'const': 'confirm_publish'}, 'appUrls': {'type': 'object', 'required': ['workflow'], 'properties': {'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'summary': {'type': 'array', 'items': {'type': 'string'}}, 'warnings': {'type': 'array', 'items': {'type': 'string'}}, 'previewUrl': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'action', 'input', 'message', 'previewUrl', 'appUrls', 'summary', 'warnings'], 'properties': {'kind': {'type': 'string', 'const': 'send_workflow_test'}, 'input': {'type': 'object', 'required': ['workflowId', 'confirmSend'], 'properties': {'rowData': {'type': 'object', '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'}, 'additionalProperties': {}}, 'workflowId': {'type': 'string', '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)$', 'description': 'Workflow id whose editable draft message should be tested.'}, 'confirmSend': {'type': 'boolean', 'const': True}, 'messageType': {'enum': ['email', 'slack'], 'type': 'string', 'description': 'Optional message type filter when selecting a draft message to test.'}, 'testTargetId': {'type': 'string', '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)$', 'description': 'Structured test target id from testableMessages. Do not show this id to users; ask them to choose by message label.'}, 'testRecipientEmail': {'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'description': "Optional recipient for email tests. If omitted, Dreamlit sends to the authenticated user's email address."}}, 'additionalProperties': False}, 'action': {'type': 'string', 'const': 'send_workflow_test'}, 'appUrls': {'type': 'object', 'required': ['workflow', 'preview'], 'properties': {'preview': {'type': 'string', 'format': 'uri'}, 'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'summary': {'type': 'array', 'items': {'type': 'string'}}, 'warnings': {'type': 'array', 'items': {'type': 'string'}}, 'previewUrl': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'handoff'], 'properties': {'status': {'type': 'string', 'const': 'handoff_required'}, 'handoff': {'type': 'object', 'required': ['kind', 'reason', 'message', 'url', 'instructions'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'kind': {'type': 'string', 'const': 'browser'}, 'reason': {'type': 'string'}, 'message': {'type': 'string'}, 'instructions': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'message'], 'properties': {'code': {'type': 'string'}, 'status': {'type': 'string', 'const': 'error'}, 'message': {'type': 'string'}, 'retryAfterSeconds': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}}, 'additionalProperties': False}], '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.'}}, 'additionalProperties': False}
get_analytics
Get analytics
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.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['view'], 'properties': {'sort': {'type': 'object', 'required': ['field'], 'properties': {'dir': {'enum': ['asc', 'desc'], 'type': 'string', 'description': 'Sort direction. Defaults to desc.'}, 'field': {'enum': ['timestamp', 'sentTo', 'subject', 'workflow', 'engagement', 'recipient', 'lastSentAt', 'sent', 'opened', 'clicked', 'bounced', 'complained'], 'type': 'string', 'description': 'Sort field. Valid fields depend on the requested view.'}}, 'description': 'Optional row sort. Overview ignores sorting.'}, 'view': {'enum': ['overview', 'notifications', 'recipients', 'workflow_runs'], 'type': 'string', 'description': 'Analytics surface to query: overview cards, notification rows, recipient rows, or workflow run rows.'}, 'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Maximum rows to return. Defaults to 25 and is capped at 100.'}, 'range': {'type': 'object', 'properties': {'to': {'type': 'string', '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)))$', 'description': 'Inclusive ISO timestamp upper bound.'}, 'from': {'type': 'string', '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)))$', 'description': 'Inclusive ISO timestamp lower bound.'}}, 'description': "Optional explicit timestamp range. Overrides window and is applied to the view's primary timestamp."}, 'cursor': {'type': 'string', 'maxLength': 2048, 'minLength': 1, 'description': 'Opaque pagination cursor from a previous get_analytics response.'}, 'window': {'enum': ['1h', '24h', '7d', '14d', '30d', '90d', 'all'], 'type': 'string', 'description': 'Relative analytics window. Defaults to 30d. Ignored when range is provided.'}, 'channel': {'enum': ['email', 'slack'], 'type': 'string', 'description': 'Notification channel for overview and notification analytics. Defaults to email. Recipient analytics are email-only.'}, 'filters': {'type': 'object', 'properties': {'topicIds': {'type': 'array', 'items': {'type': 'string', '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)$'}, 'maxItems': 100, 'description': 'Email unsubscribe topic ids to include.'}, 'recipient': {'type': 'string', 'maxLength': 320, 'description': 'Email recipient search string.'}, 'startedAt': {'type': 'object', 'properties': {'to': {'type': 'string', '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)))$', 'description': 'Inclusive ISO timestamp upper bound.'}, 'from': {'type': 'string', '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)))$', 'description': 'Inclusive ISO timestamp lower bound.'}}, 'description': 'Workflow run started timestamp range. Only applies to workflow_runs.'}, 'engagement': {'enum': ['undelivered', 'bounced', 'complained', 'clicked', 'opened'], 'type': 'string', 'description': 'Email engagement filter.'}, 'runStatuses': {'type': 'array', 'items': {'enum': ['RUNNING', 'PAUSED', 'COMPLETED', 'FAILED', 'SKIPPED', 'CANCELLED'], 'type': 'string'}, 'maxItems': 6, 'description': 'Workflow run statuses to include. Only applies to workflow_runs.'}, 'workflowIds': {'type': 'array', 'items': {'type': 'string', '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)$'}, 'maxItems': 100, 'description': 'Workflow ids to include.'}, 'workflowRunId': {'type': 'string', '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)$', 'description': 'Workflow run id to include for notification analytics.'}, 'slackWebhookIds': {'type': 'array', 'items': {'type': 'string', '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)$'}, 'maxItems': 100, 'description': 'Slack webhook ids to include for Slack notification analytics.'}, 'workflowStepRunId': {'type': 'string', '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)$', 'description': 'Workflow step run id to include for notification analytics.'}, 'notificationStatuses': {'type': 'array', 'items': {'enum': ['sent', 'pending', 'releasable', 'failed', 'canceled', 'suppressed', 'opted_out'], 'type': 'string'}, 'maxItems': 7, 'description': 'Email notification lifecycle statuses to include.'}}, 'description': 'Optional analytics filters. Unsupported combinations return a clear error.'}, 'include': {'type': 'array', 'items': {'enum': ['summary', 'series', 'rows', 'recentEvents', 'segments'], 'type': 'string'}, 'maxItems': 5, 'description': 'Optional response sections to include. Defaults depend on the requested view.'}, 'timeZone': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'IANA timezone for daily series bucketing. Defaults to UTC.'}, 'projectId': {'type': 'string', '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)$', 'description': 'Project id to query analytics from. Required when access is ambiguous.'}}}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {'oneOf': [{'type': 'object', 'required': ['status', 'data'], 'properties': {'data': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'status': {'type': 'string', 'const': 'success'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'message'], 'properties': {'auth': {'type': 'object', 'required': ['reason'], 'properties': {'reason': {'type': 'string'}}, 'additionalProperties': False}, 'status': {'type': 'string', 'const': 'auth_required'}, 'message': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'clarification'], 'properties': {'status': {'type': 'string', 'const': 'clarification_required'}, 'clarification': {'anyOf': [{'type': 'object', 'required': ['message', 'workflowId', 'projectId', 'orgId', 'chatSessionId', 'userMessageId', 'assistantMessageId', 'appUrls'], 'properties': {'orgId': {'type': 'string', '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)$'}, 'appUrls': {'type': 'object', 'required': ['workflow', 'workflows'], 'properties': {'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'projectId': {'type': 'string', '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)$'}, 'workflowId': {'type': 'string', '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)$'}, 'chatSessionId': {'type': 'string', '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)$'}, 'userMessageId': {'type': 'string', '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)$'}, 'assistantMessageId': {'type': 'string', '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)$'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'message', 'workflowId', 'projectId', 'orgId', 'testableMessages', 'appUrls'], 'properties': {'kind': {'type': 'string', 'const': 'test_message_selection'}, 'orgId': {'type': 'string', '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)$'}, 'appUrls': {'type': 'object', 'required': ['workflow', 'preview'], 'properties': {'preview': {'type': 'string', 'format': 'uri'}, 'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'projectId': {'type': 'string', '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)$'}, 'workflowId': {'type': 'string', '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)$'}, 'testableMessages': {'type': 'array', 'items': {'type': 'object', 'required': ['testTargetId', 'messageType', 'label', 'requiresRecipient'], 'properties': {'label': {'type': 'string'}, 'description': {'type': 'string'}, 'destination': {'type': 'string'}, 'messageType': {'enum': ['email', 'slack'], 'type': 'string'}, 'testTargetId': {'type': 'string', '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)$'}, 'requiresRecipient': {'type': 'boolean'}}, 'additionalProperties': False}, 'minItems': 2}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'confirmation'], 'properties': {'status': {'type': 'string', 'const': 'confirmation_required'}, 'confirmation': {'anyOf': [{'type': 'object', 'required': ['kind', 'action', 'input', 'message', 'previewUrl', 'summary', 'warnings'], 'properties': {'kind': {'type': 'string', 'const': 'publish'}, 'input': {'type': 'object', 'required': ['workflowId'], 'properties': {'workflowId': {'type': 'string', '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)$', 'description': 'Workflow id to publish.'}, 'isSandboxed': {'type': 'boolean', 'description': 'Whether to publish in sandbox mode so notifications are held for inspection.'}, 'expectedUpdatedAtIso': {'anyOf': [{'type': 'string', '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': 'null'}], 'description': 'Workflow updatedAt timestamp returned by prepare_publish, used as a safety check.'}, 'expectedEditableVersionId': {'anyOf': [{'type': 'string', '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': 'null'}], 'description': 'Editable version id returned by prepare_publish, used as a safety check.'}, 'expectedPublishedVersionId': {'anyOf': [{'type': 'string', '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': 'null'}], 'description': 'Published version id returned by prepare_publish, used as a safety check.'}}, 'additionalProperties': False}, 'action': {'type': 'string', 'const': 'confirm_publish'}, 'appUrls': {'type': 'object', 'required': ['workflow'], 'properties': {'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'summary': {'type': 'array', 'items': {'type': 'string'}}, 'warnings': {'type': 'array', 'items': {'type': 'string'}}, 'previewUrl': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'action', 'input', 'message', 'previewUrl', 'appUrls', 'summary', 'warnings'], 'properties': {'kind': {'type': 'string', 'const': 'send_workflow_test'}, 'input': {'type': 'object', 'required': ['workflowId', 'confirmSend'], 'properties': {'rowData': {'type': 'object', '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'}, 'additionalProperties': {}}, 'workflowId': {'type': 'string', '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)$', 'description': 'Workflow id whose editable draft message should be tested.'}, 'confirmSend': {'type': 'boolean', 'const': True}, 'messageType': {'enum': ['email', 'slack'], 'type': 'string', 'description': 'Optional message type filter when selecting a draft message to test.'}, 'testTargetId': {'type': 'string', '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)$', 'description': 'Structured test target id from testableMessages. Do not show this id to users; ask them to choose by message label.'}, 'testRecipientEmail': {'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'description': "Optional recipient for email tests. If omitted, Dreamlit sends to the authenticated user's email address."}}, 'additionalProperties': False}, 'action': {'type': 'string', 'const': 'send_workflow_test'}, 'appUrls': {'type': 'object', 'required': ['workflow', 'preview'], 'properties': {'preview': {'type': 'string', 'format': 'uri'}, 'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'summary': {'type': 'array', 'items': {'type': 'string'}}, 'warnings': {'type': 'array', 'items': {'type': 'string'}}, 'previewUrl': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'handoff'], 'properties': {'status': {'type': 'string', 'const': 'handoff_required'}, 'handoff': {'type': 'object', 'required': ['kind', 'reason', 'message', 'url', 'instructions'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'kind': {'type': 'string', 'const': 'browser'}, 'reason': {'type': 'string'}, 'message': {'type': 'string'}, 'instructions': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'message'], 'properties': {'code': {'type': 'string'}, 'status': {'type': 'string', 'const': 'error'}, 'message': {'type': 'string'}, 'retryAfterSeconds': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}}, 'additionalProperties': False}], '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.'}}, 'additionalProperties': False}
get_status
Get status
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.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'projectId': {'type': 'string', '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)$', 'description': 'Optional project id. Include it to return project setup, schema hints, and authoring context.'}, 'workflowId': {'type': 'string', '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)$', 'description': 'Optional workflow id. Include it to return concise workflow state and preview URL.'}}}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {'oneOf': [{'type': 'object', 'required': ['status', 'data'], 'properties': {'data': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'status': {'type': 'string', 'const': 'success'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'message'], 'properties': {'auth': {'type': 'object', 'required': ['reason'], 'properties': {'reason': {'type': 'string'}}, 'additionalProperties': False}, 'status': {'type': 'string', 'const': 'auth_required'}, 'message': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'clarification'], 'properties': {'status': {'type': 'string', 'const': 'clarification_required'}, 'clarification': {'anyOf': [{'type': 'object', 'required': ['message', 'workflowId', 'projectId', 'orgId', 'chatSessionId', 'userMessageId', 'assistantMessageId', 'appUrls'], 'properties': {'orgId': {'type': 'string', '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)$'}, 'appUrls': {'type': 'object', 'required': ['workflow', 'workflows'], 'properties': {'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'projectId': {'type': 'string', '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)$'}, 'workflowId': {'type': 'string', '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)$'}, 'chatSessionId': {'type': 'string', '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)$'}, 'userMessageId': {'type': 'string', '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)$'}, 'assistantMessageId': {'type': 'string', '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)$'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'message', 'workflowId', 'projectId', 'orgId', 'testableMessages', 'appUrls'], 'properties': {'kind': {'type': 'string', 'const': 'test_message_selection'}, 'orgId': {'type': 'string', '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)$'}, 'appUrls': {'type': 'object', 'required': ['workflow', 'preview'], 'properties': {'preview': {'type': 'string', 'format': 'uri'}, 'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'projectId': {'type': 'string', '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)$'}, 'workflowId': {'type': 'string', '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)$'}, 'testableMessages': {'type': 'array', 'items': {'type': 'object', 'required': ['testTargetId', 'messageType', 'label', 'requiresRecipient'], 'properties': {'label': {'type': 'string'}, 'description': {'type': 'string'}, 'destination': {'type': 'string'}, 'messageType': {'enum': ['email', 'slack'], 'type': 'string'}, 'testTargetId': {'type': 'string', '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)$'}, 'requiresRecipient': {'type': 'boolean'}}, 'additionalProperties': False}, 'minItems': 2}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'confirmation'], 'properties': {'status': {'type': 'string', 'const': 'confirmation_required'}, 'confirmation': {'anyOf': [{'type': 'object', 'required': ['kind', 'action', 'input', 'message', 'previewUrl', 'summary', 'warnings'], 'properties': {'kind': {'type': 'string', 'const': 'publish'}, 'input': {'type': 'object', 'required': ['workflowId'], 'properties': {'workflowId': {'type': 'string', '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)$', 'description': 'Workflow id to publish.'}, 'isSandboxed': {'type': 'boolean', 'description': 'Whether to publish in sandbox mode so notifications are held for inspection.'}, 'expectedUpdatedAtIso': {'anyOf': [{'type': 'string', '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': 'null'}], 'description': 'Workflow updatedAt timestamp returned by prepare_publish, used as a safety check.'}, 'expectedEditableVersionId': {'anyOf': [{'type': 'string', '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': 'null'}], 'description': 'Editable version id returned by prepare_publish, used as a safety check.'}, 'expectedPublishedVersionId': {'anyOf': [{'type': 'string', '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': 'null'}], 'description': 'Published version id returned by prepare_publish, used as a safety check.'}}, 'additionalProperties': False}, 'action': {'type': 'string', 'const': 'confirm_publish'}, 'appUrls': {'type': 'object', 'required': ['workflow'], 'properties': {'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'summary': {'type': 'array', 'items': {'type': 'string'}}, 'warnings': {'type': 'array', 'items': {'type': 'string'}}, 'previewUrl': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'action', 'input', 'message', 'previewUrl', 'appUrls', 'summary', 'warnings'], 'properties': {'kind': {'type': 'string', 'const': 'send_workflow_test'}, 'input': {'type': 'object', 'required': ['workflowId', 'confirmSend'], 'properties': {'rowData': {'type': 'object', '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'}, 'additionalProperties': {}}, 'workflowId': {'type': 'string', '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)$', 'description': 'Workflow id whose editable draft message should be tested.'}, 'confirmSend': {'type': 'boolean', 'const': True}, 'messageType': {'enum': ['email', 'slack'], 'type': 'string', 'description': 'Optional message type filter when selecting a draft message to test.'}, 'testTargetId': {'type': 'string', '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)$', 'description': 'Structured test target id from testableMessages. Do not show this id to users; ask them to choose by message label.'}, 'testRecipientEmail': {'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'description': "Optional recipient for email tests. If omitted, Dreamlit sends to the authenticated user's email address."}}, 'additionalProperties': False}, 'action': {'type': 'string', 'const': 'send_workflow_test'}, 'appUrls': {'type': 'object', 'required': ['workflow', 'preview'], 'properties': {'preview': {'type': 'string', 'format': 'uri'}, 'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'summary': {'type': 'array', 'items': {'type': 'string'}}, 'warnings': {'type': 'array', 'items': {'type': 'string'}}, 'previewUrl': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'handoff'], 'properties': {'status': {'type': 'string', 'const': 'handoff_required'}, 'handoff': {'type': 'object', 'required': ['kind', 'reason', 'message', 'url', 'instructions'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'kind': {'type': 'string', 'const': 'browser'}, 'reason': {'type': 'string'}, 'message': {'type': 'string'}, 'instructions': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'message'], 'properties': {'code': {'type': 'string'}, 'status': {'type': 'string', 'const': 'error'}, 'message': {'type': 'string'}, 'retryAfterSeconds': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}}, 'additionalProperties': False}], '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.'}}, 'additionalProperties': False}
get_workflow_and_preview_url
Get workflow and preview URL
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.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['workflowId'], 'properties': {'workflowId': {'type': 'string', '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)$', 'description': 'Workflow id to inspect before editing, verifying, or publishing.'}}}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {'oneOf': [{'type': 'object', 'required': ['status', 'data'], 'properties': {'data': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'status': {'type': 'string', 'const': 'success'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'message'], 'properties': {'auth': {'type': 'object', 'required': ['reason'], 'properties': {'reason': {'type': 'string'}}, 'additionalProperties': False}, 'status': {'type': 'string', 'const': 'auth_required'}, 'message': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'clarification'], 'properties': {'status': {'type': 'string', 'const': 'clarification_required'}, 'clarification': {'anyOf': [{'type': 'object', 'required': ['message', 'workflowId', 'projectId', 'orgId', 'chatSessionId', 'userMessageId', 'assistantMessageId', 'appUrls'], 'properties': {'orgId': {'type': 'string', '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)$'}, 'appUrls': {'type': 'object', 'required': ['workflow', 'workflows'], 'properties': {'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'projectId': {'type': 'string', '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)$'}, 'workflowId': {'type': 'string', '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)$'}, 'chatSessionId': {'type': 'string', '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)$'}, 'userMessageId': {'type': 'string', '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)$'}, 'assistantMessageId': {'type': 'string', '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)$'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'message', 'workflowId', 'projectId', 'orgId', 'testableMessages', 'appUrls'], 'properties': {'kind': {'type': 'string', 'const': 'test_message_selection'}, 'orgId': {'type': 'string', '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)$'}, 'appUrls': {'type': 'object', 'required': ['workflow', 'preview'], 'properties': {'preview': {'type': 'string', 'format': 'uri'}, 'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'projectId': {'type': 'string', '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)$'}, 'workflowId': {'type': 'string', '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)$'}, 'testableMessages': {'type': 'array', 'items': {'type': 'object', 'required': ['testTargetId', 'messageType', 'label', 'requiresRecipient'], 'properties': {'label': {'type': 'string'}, 'description': {'type': 'string'}, 'destination': {'type': 'string'}, 'messageType': {'enum': ['email', 'slack'], 'type': 'string'}, 'testTargetId': {'type': 'string', '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)$'}, 'requiresRecipient': {'type': 'boolean'}}, 'additionalProperties': False}, 'minItems': 2}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'confirmation'], 'properties': {'status': {'type': 'string', 'const': 'confirmation_required'}, 'confirmation': {'anyOf': [{'type': 'object', 'required': ['kind', 'action', 'input', 'message', 'previewUrl', 'summary', 'warnings'], 'properties': {'kind': {'type': 'string', 'const': 'publish'}, 'input': {'type': 'object', 'required': ['workflowId'], 'properties': {'workflowId': {'type': 'string', '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)$', 'description': 'Workflow id to publish.'}, 'isSandboxed': {'type': 'boolean', 'description': 'Whether to publish in sandbox mode so notifications are held for inspection.'}, 'expectedUpdatedAtIso': {'anyOf': [{'type': 'string', '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': 'null'}], 'description': 'Workflow updatedAt timestamp returned by prepare_publish, used as a safety check.'}, 'expectedEditableVersionId': {'anyOf': [{'type': 'string', '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': 'null'}], 'description': 'Editable version id returned by prepare_publish, used as a safety check.'}, 'expectedPublishedVersionId': {'anyOf': [{'type': 'string', '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': 'null'}], 'description': 'Published version id returned by prepare_publish, used as a safety check.'}}, 'additionalProperties': False}, 'action': {'type': 'string', 'const': 'confirm_publish'}, 'appUrls': {'type': 'object', 'required': ['workflow'], 'properties': {'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'summary': {'type': 'array', 'items': {'type': 'string'}}, 'warnings': {'type': 'array', 'items': {'type': 'string'}}, 'previewUrl': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'action', 'input', 'message', 'previewUrl', 'appUrls', 'summary', 'warnings'], 'properties': {'kind': {'type': 'string', 'const': 'send_workflow_test'}, 'input': {'type': 'object', 'required': ['workflowId', 'confirmSend'], 'properties': {'rowData': {'type': 'object', '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'}, 'additionalProperties': {}}, 'workflowId': {'type': 'string', '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)$', 'description': 'Workflow id whose editable draft message should be tested.'}, 'confirmSend': {'type': 'boolean', 'const': True}, 'messageType': {'enum': ['email', 'slack'], 'type': 'string', 'description': 'Optional message type filter when selecting a draft message to test.'}, 'testTargetId': {'type': 'string', '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)$', 'description': 'Structured test target id from testableMessages. Do not show this id to users; ask them to choose by message label.'}, 'testRecipientEmail': {'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'description': "Optional recipient for email tests. If omitted, Dreamlit sends to the authenticated user's email address."}}, 'additionalProperties': False}, 'action': {'type': 'string', 'const': 'send_workflow_test'}, 'appUrls': {'type': 'object', 'required': ['workflow', 'preview'], 'properties': {'preview': {'type': 'string', 'format': 'uri'}, 'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'summary': {'type': 'array', 'items': {'type': 'string'}}, 'warnings': {'type': 'array', 'items': {'type': 'string'}}, 'previewUrl': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'handoff'], 'properties': {'status': {'type': 'string', 'const': 'handoff_required'}, 'handoff': {'type': 'object', 'required': ['kind', 'reason', 'message', 'url', 'instructions'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'kind': {'type': 'string', 'const': 'browser'}, 'reason': {'type': 'string'}, 'message': {'type': 'string'}, 'instructions': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'message'], 'properties': {'code': {'type': 'string'}, 'status': {'type': 'string', 'const': 'error'}, 'message': {'type': 'string'}, 'retryAfterSeconds': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}}, 'additionalProperties': False}], '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.'}}, 'additionalProperties': False}
list_brand_styles
List brand styles
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.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'default': 50, 'maximum': 100, 'minimum': 1, 'description': 'Maximum number of brand styles to return for this page.'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Zero-based brand style offset for pagination. Use nextOffset from the previous response to fetch the next page.'}, 'projectId': {'type': 'string', '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)$', 'description': 'Project id to list brand styles from. Required when access is ambiguous.'}}}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {'oneOf': [{'type': 'object', 'required': ['status', 'data'], 'properties': {'data': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'status': {'type': 'string', 'const': 'success'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'message'], 'properties': {'auth': {'type': 'object', 'required': ['reason'], 'properties': {'reason': {'type': 'string'}}, 'additionalProperties': False}, 'status': {'type': 'string', 'const': 'auth_required'}, 'message': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'clarification'], 'properties': {'status': {'type': 'string', 'const': 'clarification_required'}, 'clarification': {'anyOf': [{'type': 'object', 'required': ['message', 'workflowId', 'projectId', 'orgId', 'chatSessionId', 'userMessageId', 'assistantMessageId', 'appUrls'], 'properties': {'orgId': {'type': 'string', '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)$'}, 'appUrls': {'type': 'object', 'required': ['workflow', 'workflows'], 'properties': {'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'projectId': {'type': 'string', '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)$'}, 'workflowId': {'type': 'string', '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)$'}, 'chatSessionId': {'type': 'string', '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)$'}, 'userMessageId': {'type': 'string', '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)$'}, 'assistantMessageId': {'type': 'string', '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)$'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'message', 'workflowId', 'projectId', 'orgId', 'testableMessages', 'appUrls'], 'properties': {'kind': {'type': 'string', 'const': 'test_message_selection'}, 'orgId': {'type': 'string', '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)$'}, 'appUrls': {'type': 'object', 'required': ['workflow', 'preview'], 'properties': {'preview': {'type': 'string', 'format': 'uri'}, 'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'projectId': {'type': 'string', '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)$'}, 'workflowId': {'type': 'string', '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)$'}, 'testableMessages': {'type': 'array', 'items': {'type': 'object', 'required': ['testTargetId', 'messageType', 'label', 'requiresRecipient'], 'properties': {'label': {'type': 'string'}, 'description': {'type': 'string'}, 'destination': {'type': 'string'}, 'messageType': {'enum': ['email', 'slack'], 'type': 'string'}, 'testTargetId': {'type': 'string', '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)$'}, 'requiresRecipient': {'type': 'boolean'}}, 'additionalProperties': False}, 'minItems': 2}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'confirmation'], 'properties': {'status': {'type': 'string', 'const': 'confirmation_required'}, 'confirmation': {'anyOf': [{'type': 'object', 'required': ['kind', 'action', 'input', 'message', 'previewUrl', 'summary', 'warnings'], 'properties': {'kind': {'type': 'string', 'const': 'publish'}, 'input': {'type': 'object', 'required': ['workflowId'], 'properties': {'workflowId': {'type': 'string', '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)$', 'description': 'Workflow id to publish.'}, 'isSandboxed': {'type': 'boolean', 'description': 'Whether to publish in sandbox mode so notifications are held for inspection.'}, 'expectedUpdatedAtIso': {'anyOf': [{'type': 'string', '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': 'null'}], 'description': 'Workflow updatedAt timestamp returned by prepare_publish, used as a safety check.'}, 'expectedEditableVersionId': {'anyOf': [{'type': 'string', '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': 'null'}], 'description': 'Editable version id returned by prepare_publish, used as a safety check.'}, 'expectedPublishedVersionId': {'anyOf': [{'type': 'string', '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': 'null'}], 'description': 'Published version id returned by prepare_publish, used as a safety check.'}}, 'additionalProperties': False}, 'action': {'type': 'string', 'const': 'confirm_publish'}, 'appUrls': {'type': 'object', 'required': ['workflow'], 'properties': {'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'summary': {'type': 'array', 'items': {'type': 'string'}}, 'warnings': {'type': 'array', 'items': {'type': 'string'}}, 'previewUrl': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'action', 'input', 'message', 'previewUrl', 'appUrls', 'summary', 'warnings'], 'properties': {'kind': {'type': 'string', 'const': 'send_workflow_test'}, 'input': {'type': 'object', 'required': ['workflowId', 'confirmSend'], 'properties': {'rowData': {'type': 'object', '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'}, 'additionalProperties': {}}, 'workflowId': {'type': 'string', '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)$', 'description': 'Workflow id whose editable draft message should be tested.'}, 'confirmSend': {'type': 'boolean', 'const': True}, 'messageType': {'enum': ['email', 'slack'], 'type': 'string', 'description': 'Optional message type filter when selecting a draft message to test.'}, 'testTargetId': {'type': 'string', '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)$', 'description': 'Structured test target id from testableMessages. Do not show this id to users; ask them to choose by message label.'}, 'testRecipientEmail': {'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'description': "Optional recipient for email tests. If omitted, Dreamlit sends to the authenticated user's email address."}}, 'additionalProperties': False}, 'action': {'type': 'string', 'const': 'send_workflow_test'}, 'appUrls': {'type': 'object', 'required': ['workflow', 'preview'], 'properties': {'preview': {'type': 'string', 'format': 'uri'}, 'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'summary': {'type': 'array', 'items': {'type': 'string'}}, 'warnings': {'type': 'array', 'items': {'type': 'string'}}, 'previewUrl': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'handoff'], 'properties': {'status': {'type': 'string', 'const': 'handoff_required'}, 'handoff': {'type': 'object', 'required': ['kind', 'reason', 'message', 'url', 'instructions'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'kind': {'type': 'string', 'const': 'browser'}, 'reason': {'type': 'string'}, 'message': {'type': 'string'}, 'instructions': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'message'], 'properties': {'code': {'type': 'string'}, 'status': {'type': 'string', 'const': 'error'}, 'message': {'type': 'string'}, 'retryAfterSeconds': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}}, 'additionalProperties': False}], '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.'}}, 'additionalProperties': False}
list_projects
List projects
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.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'default': 25, 'maximum': 100, 'minimum': 1, 'description': 'Maximum number of projects to return.'}, 'search': {'type': 'string', 'maxLength': 200, 'description': 'Optional project name search string.'}}}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {'oneOf': [{'type': 'object', 'required': ['status', 'data'], 'properties': {'data': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'status': {'type': 'string', 'const': 'success'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'message'], 'properties': {'auth': {'type': 'object', 'required': ['reason'], 'properties': {'reason': {'type': 'string'}}, 'additionalProperties': False}, 'status': {'type': 'string', 'const': 'auth_required'}, 'message': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'clarification'], 'properties': {'status': {'type': 'string', 'const': 'clarification_required'}, 'clarification': {'anyOf': [{'type': 'object', 'required': ['message', 'workflowId', 'projectId', 'orgId', 'chatSessionId', 'userMessageId', 'assistantMessageId', 'appUrls'], 'properties': {'orgId': {'type': 'string', '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)$'}, 'appUrls': {'type': 'object', 'required': ['workflow', 'workflows'], 'properties': {'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'projectId': {'type': 'string', '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)$'}, 'workflowId': {'type': 'string', '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)$'}, 'chatSessionId': {'type': 'string', '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)$'}, 'userMessageId': {'type': 'string', '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)$'}, 'assistantMessageId': {'type': 'string', '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)$'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'message', 'workflowId', 'projectId', 'orgId', 'testableMessages', 'appUrls'], 'properties': {'kind': {'type': 'string', 'const': 'test_message_selection'}, 'orgId': {'type': 'string', '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)$'}, 'appUrls': {'type': 'object', 'required': ['workflow', 'preview'], 'properties': {'preview': {'type': 'string', 'format': 'uri'}, 'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'projectId': {'type': 'string', '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)$'}, 'workflowId': {'type': 'string', '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)$'}, 'testableMessages': {'type': 'array', 'items': {'type': 'object', 'required': ['testTargetId', 'messageType', 'label', 'requiresRecipient'], 'properties': {'label': {'type': 'string'}, 'description': {'type': 'string'}, 'destination': {'type': 'string'}, 'messageType': {'enum': ['email', 'slack'], 'type': 'string'}, 'testTargetId': {'type': 'string', '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)$'}, 'requiresRecipient': {'type': 'boolean'}}, 'additionalProperties': False}, 'minItems': 2}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'confirmation'], 'properties': {'status': {'type': 'string', 'const': 'confirmation_required'}, 'confirmation': {'anyOf': [{'type': 'object', 'required': ['kind', 'action', 'input', 'message', 'previewUrl', 'summary', 'warnings'], 'properties': {'kind': {'type': 'string', 'const': 'publish'}, 'input': {'type': 'object', 'required': ['workflowId'], 'properties': {'workflowId': {'type': 'string', '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)$', 'description': 'Workflow id to publish.'}, 'isSandboxed': {'type': 'boolean', 'description': 'Whether to publish in sandbox mode so notifications are held for inspection.'}, 'expectedUpdatedAtIso': {'anyOf': [{'type': 'string', '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': 'null'}], 'description': 'Workflow updatedAt timestamp returned by prepare_publish, used as a safety check.'}, 'expectedEditableVersionId': {'anyOf': [{'type': 'string', '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': 'null'}], 'description': 'Editable version id returned by prepare_publish, used as a safety check.'}, 'expectedPublishedVersionId': {'anyOf': [{'type': 'string', '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': 'null'}], 'description': 'Published version id returned by prepare_publish, used as a safety check.'}}, 'additionalProperties': False}, 'action': {'type': 'string', 'const': 'confirm_publish'}, 'appUrls': {'type': 'object', 'required': ['workflow'], 'properties': {'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'summary': {'type': 'array', 'items': {'type': 'string'}}, 'warnings': {'type': 'array', 'items': {'type': 'string'}}, 'previewUrl': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'action', 'input', 'message', 'previewUrl', 'appUrls', 'summary', 'warnings'], 'properties': {'kind': {'type': 'string', 'const': 'send_workflow_test'}, 'input': {'type': 'object', 'required': ['workflowId', 'confirmSend'], 'properties': {'rowData': {'type': 'object', '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'}, 'additionalProperties': {}}, 'workflowId': {'type': 'string', '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)$', 'description': 'Workflow id whose editable draft message should be tested.'}, 'confirmSend': {'type': 'boolean', 'const': True}, 'messageType': {'enum': ['email', 'slack'], 'type': 'string', 'description': 'Optional message type filter when selecting a draft message to test.'}, 'testTargetId': {'type': 'string', '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)$', 'description': 'Structured test target id from testableMessages. Do not show this id to users; ask them to choose by message label.'}, 'testRecipientEmail': {'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'description': "Optional recipient for email tests. If omitted, Dreamlit sends to the authenticated user's email address."}}, 'additionalProperties': False}, 'action': {'type': 'string', 'const': 'send_workflow_test'}, 'appUrls': {'type': 'object', 'required': ['workflow', 'preview'], 'properties': {'preview': {'type': 'string', 'format': 'uri'}, 'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'summary': {'type': 'array', 'items': {'type': 'string'}}, 'warnings': {'type': 'array', 'items': {'type': 'string'}}, 'previewUrl': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'handoff'], 'properties': {'status': {'type': 'string', 'const': 'handoff_required'}, 'handoff': {'type': 'object', 'required': ['kind', 'reason', 'message', 'url', 'instructions'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'kind': {'type': 'string', 'const': 'browser'}, 'reason': {'type': 'string'}, 'message': {'type': 'string'}, 'instructions': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'message'], 'properties': {'code': {'type': 'string'}, 'status': {'type': 'string', 'const': 'error'}, 'message': {'type': 'string'}, 'retryAfterSeconds': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}}, 'additionalProperties': False}], '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.'}}, 'additionalProperties': False}
list_workflows
List workflows
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.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'default': 80, 'maximum': 100, 'minimum': 1, 'description': 'Maximum number of workflows to return for this page.'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Zero-based workflow offset for pagination. Use nextOffset from the previous response to fetch the next page.'}, 'search': {'type': 'string', 'maxLength': 200, 'description': 'Optional workflow name or description search string.'}, 'projectId': {'type': 'string', '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)$', 'description': 'Project id to list workflows from. Required when access is ambiguous.'}, 'triggerFilters': {'type': 'array', 'items': {'enum': ['auth_email', 'database', 'broadcast', 'repeating', 'none'], 'type': 'string'}, 'description': 'Optional trigger type filters. Use broadcast only for one-time audience emails.'}}}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {'oneOf': [{'type': 'object', 'required': ['status', 'data'], 'properties': {'data': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'status': {'type': 'string', 'const': 'success'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'message'], 'properties': {'auth': {'type': 'object', 'required': ['reason'], 'properties': {'reason': {'type': 'string'}}, 'additionalProperties': False}, 'status': {'type': 'string', 'const': 'auth_required'}, 'message': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'clarification'], 'properties': {'status': {'type': 'string', 'const': 'clarification_required'}, 'clarification': {'anyOf': [{'type': 'object', 'required': ['message', 'workflowId', 'projectId', 'orgId', 'chatSessionId', 'userMessageId', 'assistantMessageId', 'appUrls'], 'properties': {'orgId': {'type': 'string', '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)$'}, 'appUrls': {'type': 'object', 'required': ['workflow', 'workflows'], 'properties': {'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'projectId': {'type': 'string', '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)$'}, 'workflowId': {'type': 'string', '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)$'}, 'chatSessionId': {'type': 'string', '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)$'}, 'userMessageId': {'type': 'string', '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)$'}, 'assistantMessageId': {'type': 'string', '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)$'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'message', 'workflowId', 'projectId', 'orgId', 'testableMessages', 'appUrls'], 'properties': {'kind': {'type': 'string', 'const': 'test_message_selection'}, 'orgId': {'type': 'string', '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)$'}, 'appUrls': {'type': 'object', 'required': ['workflow', 'preview'], 'properties': {'preview': {'type': 'string', 'format': 'uri'}, 'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'projectId': {'type': 'string', '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)$'}, 'workflowId': {'type': 'string', '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)$'}, 'testableMessages': {'type': 'array', 'items': {'type': 'object', 'required': ['testTargetId', 'messageType', 'label', 'requiresRecipient'], 'properties': {'label': {'type': 'string'}, 'description': {'type': 'string'}, 'destination': {'type': 'string'}, 'messageType': {'enum': ['email', 'slack'], 'type': 'string'}, 'testTargetId': {'type': 'string', '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)$'}, 'requiresRecipient': {'type': 'boolean'}}, 'additionalProperties': False}, 'minItems': 2}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'confirmation'], 'properties': {'status': {'type': 'string', 'const': 'confirmation_required'}, 'confirmation': {'anyOf': [{'type': 'object', 'required': ['kind', 'action', 'input', 'message', 'previewUrl', 'summary', 'warnings'], 'properties': {'kind': {'type': 'string', 'const': 'publish'}, 'input': {'type': 'object', 'required': ['workflowId'], 'properties': {'workflowId': {'type': 'string', '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)$', 'description': 'Workflow id to publish.'}, 'isSandboxed': {'type': 'boolean', 'description': 'Whether to publish in sandbox mode so notifications are held for inspection.'}, 'expectedUpdatedAtIso': {'anyOf': [{'type': 'string', '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': 'null'}], 'description': 'Workflow updatedAt timestamp returned by prepare_publish, used as a safety check.'}, 'expectedEditableVersionId': {'anyOf': [{'type': 'string', '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': 'null'}], 'description': 'Editable version id returned by prepare_publish, used as a safety check.'}, 'expectedPublishedVersionId': {'anyOf': [{'type': 'string', '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': 'null'}], 'description': 'Published version id returned by prepare_publish, used as a safety check.'}}, 'additionalProperties': False}, 'action': {'type': 'string', 'const': 'confirm_publish'}, 'appUrls': {'type': 'object', 'required': ['workflow'], 'properties': {'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'summary': {'type': 'array', 'items': {'type': 'string'}}, 'warnings': {'type': 'array', 'items': {'type': 'string'}}, 'previewUrl': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'action', 'input', 'message', 'previewUrl', 'appUrls', 'summary', 'warnings'], 'properties': {'kind': {'type': 'string', 'const': 'send_workflow_test'}, 'input': {'type': 'object', 'required': ['workflowId', 'confirmSend'], 'properties': {'rowData': {'type': 'object', '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'}, 'additionalProperties': {}}, 'workflowId': {'type': 'string', '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)$', 'description': 'Workflow id whose editable draft message should be tested.'}, 'confirmSend': {'type': 'boolean', 'const': True}, 'messageType': {'enum': ['email', 'slack'], 'type': 'string', 'description': 'Optional message type filter when selecting a draft message to test.'}, 'testTargetId': {'type': 'string', '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)$', 'description': 'Structured test target id from testableMessages. Do not show this id to users; ask them to choose by message label.'}, 'testRecipientEmail': {'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'description': "Optional recipient for email tests. If omitted, Dreamlit sends to the authenticated user's email address."}}, 'additionalProperties': False}, 'action': {'type': 'string', 'const': 'send_workflow_test'}, 'appUrls': {'type': 'object', 'required': ['workflow', 'preview'], 'properties': {'preview': {'type': 'string', 'format': 'uri'}, 'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'summary': {'type': 'array', 'items': {'type': 'string'}}, 'warnings': {'type': 'array', 'items': {'type': 'string'}}, 'previewUrl': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'handoff'], 'properties': {'status': {'type': 'string', 'const': 'handoff_required'}, 'handoff': {'type': 'object', 'required': ['kind', 'reason', 'message', 'url', 'instructions'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'kind': {'type': 'string', 'const': 'browser'}, 'reason': {'type': 'string'}, 'message': {'type': 'string'}, 'instructions': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'message'], 'properties': {'code': {'type': 'string'}, 'status': {'type': 'string', 'const': 'error'}, 'message': {'type': 'string'}, 'retryAfterSeconds': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}}, 'additionalProperties': False}], '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.'}}, 'additionalProperties': False}
prepare_publish
Prepare publish
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.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['workflowId'], 'properties': {'workflowId': {'type': 'string', '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)$', 'description': 'Workflow id to validate and prepare for explicit publish approval.'}}}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {'oneOf': [{'type': 'object', 'required': ['status', 'data'], 'properties': {'data': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'status': {'type': 'string', 'const': 'success'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'message'], 'properties': {'auth': {'type': 'object', 'required': ['reason'], 'properties': {'reason': {'type': 'string'}}, 'additionalProperties': False}, 'status': {'type': 'string', 'const': 'auth_required'}, 'message': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'clarification'], 'properties': {'status': {'type': 'string', 'const': 'clarification_required'}, 'clarification': {'anyOf': [{'type': 'object', 'required': ['message', 'workflowId', 'projectId', 'orgId', 'chatSessionId', 'userMessageId', 'assistantMessageId', 'appUrls'], 'properties': {'orgId': {'type': 'string', '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)$'}, 'appUrls': {'type': 'object', 'required': ['workflow', 'workflows'], 'properties': {'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'projectId': {'type': 'string', '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)$'}, 'workflowId': {'type': 'string', '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)$'}, 'chatSessionId': {'type': 'string', '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)$'}, 'userMessageId': {'type': 'string', '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)$'}, 'assistantMessageId': {'type': 'string', '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)$'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'message', 'workflowId', 'projectId', 'orgId', 'testableMessages', 'appUrls'], 'properties': {'kind': {'type': 'string', 'const': 'test_message_selection'}, 'orgId': {'type': 'string', '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)$'}, 'appUrls': {'type': 'object', 'required': ['workflow', 'preview'], 'properties': {'preview': {'type': 'string', 'format': 'uri'}, 'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'projectId': {'type': 'string', '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)$'}, 'workflowId': {'type': 'string', '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)$'}, 'testableMessages': {'type': 'array', 'items': {'type': 'object', 'required': ['testTargetId', 'messageType', 'label', 'requiresRecipient'], 'properties': {'label': {'type': 'string'}, 'description': {'type': 'string'}, 'destination': {'type': 'string'}, 'messageType': {'enum': ['email', 'slack'], 'type': 'string'}, 'testTargetId': {'type': 'string', '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)$'}, 'requiresRecipient': {'type': 'boolean'}}, 'additionalProperties': False}, 'minItems': 2}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'confirmation'], 'properties': {'status': {'type': 'string', 'const': 'confirmation_required'}, 'confirmation': {'anyOf': [{'type': 'object', 'required': ['kind', 'action', 'input', 'message', 'previewUrl', 'summary', 'warnings'], 'properties': {'kind': {'type': 'string', 'const': 'publish'}, 'input': {'type': 'object', 'required': ['workflowId'], 'properties': {'workflowId': {'type': 'string', '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)$', 'description': 'Workflow id to publish.'}, 'isSandboxed': {'type': 'boolean', 'description': 'Whether to publish in sandbox mode so notifications are held for inspection.'}, 'expectedUpdatedAtIso': {'anyOf': [{'type': 'string', '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': 'null'}], 'description': 'Workflow updatedAt timestamp returned by prepare_publish, used as a safety check.'}, 'expectedEditableVersionId': {'anyOf': [{'type': 'string', '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': 'null'}], 'description': 'Editable version id returned by prepare_publish, used as a safety check.'}, 'expectedPublishedVersionId': {'anyOf': [{'type': 'string', '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': 'null'}], 'description': 'Published version id returned by prepare_publish, used as a safety check.'}}, 'additionalProperties': False}, 'action': {'type': 'string', 'const': 'confirm_publish'}, 'appUrls': {'type': 'object', 'required': ['workflow'], 'properties': {'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'summary': {'type': 'array', 'items': {'type': 'string'}}, 'warnings': {'type': 'array', 'items': {'type': 'string'}}, 'previewUrl': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'action', 'input', 'message', 'previewUrl', 'appUrls', 'summary', 'warnings'], 'properties': {'kind': {'type': 'string', 'const': 'send_workflow_test'}, 'input': {'type': 'object', 'required': ['workflowId', 'confirmSend'], 'properties': {'rowData': {'type': 'object', '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'}, 'additionalProperties': {}}, 'workflowId': {'type': 'string', '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)$', 'description': 'Workflow id whose editable draft message should be tested.'}, 'confirmSend': {'type': 'boolean', 'const': True}, 'messageType': {'enum': ['email', 'slack'], 'type': 'string', 'description': 'Optional message type filter when selecting a draft message to test.'}, 'testTargetId': {'type': 'string', '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)$', 'description': 'Structured test target id from testableMessages. Do not show this id to users; ask them to choose by message label.'}, 'testRecipientEmail': {'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'description': "Optional recipient for email tests. If omitted, Dreamlit sends to the authenticated user's email address."}}, 'additionalProperties': False}, 'action': {'type': 'string', 'const': 'send_workflow_test'}, 'appUrls': {'type': 'object', 'required': ['workflow', 'preview'], 'properties': {'preview': {'type': 'string', 'format': 'uri'}, 'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'summary': {'type': 'array', 'items': {'type': 'string'}}, 'warnings': {'type': 'array', 'items': {'type': 'string'}}, 'previewUrl': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'handoff'], 'properties': {'status': {'type': 'string', 'const': 'handoff_required'}, 'handoff': {'type': 'object', 'required': ['kind', 'reason', 'message', 'url', 'instructions'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'kind': {'type': 'string', 'const': 'browser'}, 'reason': {'type': 'string'}, 'message': {'type': 'string'}, 'instructions': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'message'], 'properties': {'code': {'type': 'string'}, 'status': {'type': 'string', 'const': 'error'}, 'message': {'type': 'string'}, 'retryAfterSeconds': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}}, 'additionalProperties': False}], '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.'}}, 'additionalProperties': False}
send_workflow_test
Send workflow test
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.
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['workflowId'], 'properties': {'rowData': {'type': 'object', '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'}, 'additionalProperties': {}}, 'workflowId': {'type': 'string', '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)$', 'description': 'Workflow id whose editable draft message should be tested.'}, 'confirmSend': {'type': 'boolean', '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.'}, 'messageType': {'enum': ['email', 'slack'], 'type': 'string', 'description': 'Optional message type filter when selecting a draft message to test.'}, 'testTargetId': {'type': 'string', '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)$', 'description': 'Structured test target id from testableMessages. Do not show this id to users; ask them to choose by message label.'}, 'testRecipientEmail': {'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'description': "Optional recipient for email tests. If omitted, Dreamlit sends to the authenticated user's email address."}}}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {'oneOf': [{'type': 'object', 'required': ['status', 'data'], 'properties': {'data': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'status': {'type': 'string', 'const': 'success'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'message'], 'properties': {'auth': {'type': 'object', 'required': ['reason'], 'properties': {'reason': {'type': 'string'}}, 'additionalProperties': False}, 'status': {'type': 'string', 'const': 'auth_required'}, 'message': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'clarification'], 'properties': {'status': {'type': 'string', 'const': 'clarification_required'}, 'clarification': {'anyOf': [{'type': 'object', 'required': ['message', 'workflowId', 'projectId', 'orgId', 'chatSessionId', 'userMessageId', 'assistantMessageId', 'appUrls'], 'properties': {'orgId': {'type': 'string', '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)$'}, 'appUrls': {'type': 'object', 'required': ['workflow', 'workflows'], 'properties': {'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'projectId': {'type': 'string', '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)$'}, 'workflowId': {'type': 'string', '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)$'}, 'chatSessionId': {'type': 'string', '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)$'}, 'userMessageId': {'type': 'string', '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)$'}, 'assistantMessageId': {'type': 'string', '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)$'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'message', 'workflowId', 'projectId', 'orgId', 'testableMessages', 'appUrls'], 'properties': {'kind': {'type': 'string', 'const': 'test_message_selection'}, 'orgId': {'type': 'string', '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)$'}, 'appUrls': {'type': 'object', 'required': ['workflow', 'preview'], 'properties': {'preview': {'type': 'string', 'format': 'uri'}, 'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'projectId': {'type': 'string', '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)$'}, 'workflowId': {'type': 'string', '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)$'}, 'testableMessages': {'type': 'array', 'items': {'type': 'object', 'required': ['testTargetId', 'messageType', 'label', 'requiresRecipient'], 'properties': {'label': {'type': 'string'}, 'description': {'type': 'string'}, 'destination': {'type': 'string'}, 'messageType': {'enum': ['email', 'slack'], 'type': 'string'}, 'testTargetId': {'type': 'string', '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)$'}, 'requiresRecipient': {'type': 'boolean'}}, 'additionalProperties': False}, 'minItems': 2}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'confirmation'], 'properties': {'status': {'type': 'string', 'const': 'confirmation_required'}, 'confirmation': {'anyOf': [{'type': 'object', 'required': ['kind', 'action', 'input', 'message', 'previewUrl', 'summary', 'warnings'], 'properties': {'kind': {'type': 'string', 'const': 'publish'}, 'input': {'type': 'object', 'required': ['workflowId'], 'properties': {'workflowId': {'type': 'string', '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)$', 'description': 'Workflow id to publish.'}, 'isSandboxed': {'type': 'boolean', 'description': 'Whether to publish in sandbox mode so notifications are held for inspection.'}, 'expectedUpdatedAtIso': {'anyOf': [{'type': 'string', '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': 'null'}], 'description': 'Workflow updatedAt timestamp returned by prepare_publish, used as a safety check.'}, 'expectedEditableVersionId': {'anyOf': [{'type': 'string', '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': 'null'}], 'description': 'Editable version id returned by prepare_publish, used as a safety check.'}, 'expectedPublishedVersionId': {'anyOf': [{'type': 'string', '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': 'null'}], 'description': 'Published version id returned by prepare_publish, used as a safety check.'}}, 'additionalProperties': False}, 'action': {'type': 'string', 'const': 'confirm_publish'}, 'appUrls': {'type': 'object', 'required': ['workflow'], 'properties': {'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'summary': {'type': 'array', 'items': {'type': 'string'}}, 'warnings': {'type': 'array', 'items': {'type': 'string'}}, 'previewUrl': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'action', 'input', 'message', 'previewUrl', 'appUrls', 'summary', 'warnings'], 'properties': {'kind': {'type': 'string', 'const': 'send_workflow_test'}, 'input': {'type': 'object', 'required': ['workflowId', 'confirmSend'], 'properties': {'rowData': {'type': 'object', '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'}, 'additionalProperties': {}}, 'workflowId': {'type': 'string', '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)$', 'description': 'Workflow id whose editable draft message should be tested.'}, 'confirmSend': {'type': 'boolean', 'const': True}, 'messageType': {'enum': ['email', 'slack'], 'type': 'string', 'description': 'Optional message type filter when selecting a draft message to test.'}, 'testTargetId': {'type': 'string', '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)$', 'description': 'Structured test target id from testableMessages. Do not show this id to users; ask them to choose by message label.'}, 'testRecipientEmail': {'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'description': "Optional recipient for email tests. If omitted, Dreamlit sends to the authenticated user's email address."}}, 'additionalProperties': False}, 'action': {'type': 'string', 'const': 'send_workflow_test'}, 'appUrls': {'type': 'object', 'required': ['workflow', 'preview'], 'properties': {'preview': {'type': 'string', 'format': 'uri'}, 'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'summary': {'type': 'array', 'items': {'type': 'string'}}, 'warnings': {'type': 'array', 'items': {'type': 'string'}}, 'previewUrl': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'handoff'], 'properties': {'status': {'type': 'string', 'const': 'handoff_required'}, 'handoff': {'type': 'object', 'required': ['kind', 'reason', 'message', 'url', 'instructions'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'kind': {'type': 'string', 'const': 'browser'}, 'reason': {'type': 'string'}, 'message': {'type': 'string'}, 'instructions': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'message'], 'properties': {'code': {'type': 'string'}, 'status': {'type': 'string', 'const': 'error'}, 'message': {'type': 'string'}, 'retryAfterSeconds': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}}, 'additionalProperties': False}], '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.'}}, 'additionalProperties': False}
unpublish_workflow
Unpublish workflow
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.
Destructif
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['workflowId'], 'properties': {'workflowId': {'type': 'string', '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)$', 'description': 'Workflow id to unpublish and disable live triggers or schedules.'}}}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {'oneOf': [{'type': 'object', 'required': ['status', 'data'], 'properties': {'data': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'status': {'type': 'string', 'const': 'success'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'message'], 'properties': {'auth': {'type': 'object', 'required': ['reason'], 'properties': {'reason': {'type': 'string'}}, 'additionalProperties': False}, 'status': {'type': 'string', 'const': 'auth_required'}, 'message': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'clarification'], 'properties': {'status': {'type': 'string', 'const': 'clarification_required'}, 'clarification': {'anyOf': [{'type': 'object', 'required': ['message', 'workflowId', 'projectId', 'orgId', 'chatSessionId', 'userMessageId', 'assistantMessageId', 'appUrls'], 'properties': {'orgId': {'type': 'string', '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)$'}, 'appUrls': {'type': 'object', 'required': ['workflow', 'workflows'], 'properties': {'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'projectId': {'type': 'string', '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)$'}, 'workflowId': {'type': 'string', '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)$'}, 'chatSessionId': {'type': 'string', '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)$'}, 'userMessageId': {'type': 'string', '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)$'}, 'assistantMessageId': {'type': 'string', '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)$'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'message', 'workflowId', 'projectId', 'orgId', 'testableMessages', 'appUrls'], 'properties': {'kind': {'type': 'string', 'const': 'test_message_selection'}, 'orgId': {'type': 'string', '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)$'}, 'appUrls': {'type': 'object', 'required': ['workflow', 'preview'], 'properties': {'preview': {'type': 'string', 'format': 'uri'}, 'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'projectId': {'type': 'string', '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)$'}, 'workflowId': {'type': 'string', '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)$'}, 'testableMessages': {'type': 'array', 'items': {'type': 'object', 'required': ['testTargetId', 'messageType', 'label', 'requiresRecipient'], 'properties': {'label': {'type': 'string'}, 'description': {'type': 'string'}, 'destination': {'type': 'string'}, 'messageType': {'enum': ['email', 'slack'], 'type': 'string'}, 'testTargetId': {'type': 'string', '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)$'}, 'requiresRecipient': {'type': 'boolean'}}, 'additionalProperties': False}, 'minItems': 2}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'confirmation'], 'properties': {'status': {'type': 'string', 'const': 'confirmation_required'}, 'confirmation': {'anyOf': [{'type': 'object', 'required': ['kind', 'action', 'input', 'message', 'previewUrl', 'summary', 'warnings'], 'properties': {'kind': {'type': 'string', 'const': 'publish'}, 'input': {'type': 'object', 'required': ['workflowId'], 'properties': {'workflowId': {'type': 'string', '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)$', 'description': 'Workflow id to publish.'}, 'isSandboxed': {'type': 'boolean', 'description': 'Whether to publish in sandbox mode so notifications are held for inspection.'}, 'expectedUpdatedAtIso': {'anyOf': [{'type': 'string', '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': 'null'}], 'description': 'Workflow updatedAt timestamp returned by prepare_publish, used as a safety check.'}, 'expectedEditableVersionId': {'anyOf': [{'type': 'string', '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': 'null'}], 'description': 'Editable version id returned by prepare_publish, used as a safety check.'}, 'expectedPublishedVersionId': {'anyOf': [{'type': 'string', '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': 'null'}], 'description': 'Published version id returned by prepare_publish, used as a safety check.'}}, 'additionalProperties': False}, 'action': {'type': 'string', 'const': 'confirm_publish'}, 'appUrls': {'type': 'object', 'required': ['workflow'], 'properties': {'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'summary': {'type': 'array', 'items': {'type': 'string'}}, 'warnings': {'type': 'array', 'items': {'type': 'string'}}, 'previewUrl': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'action', 'input', 'message', 'previewUrl', 'appUrls', 'summary', 'warnings'], 'properties': {'kind': {'type': 'string', 'const': 'send_workflow_test'}, 'input': {'type': 'object', 'required': ['workflowId', 'confirmSend'], 'properties': {'rowData': {'type': 'object', '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'}, 'additionalProperties': {}}, 'workflowId': {'type': 'string', '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)$', 'description': 'Workflow id whose editable draft message should be tested.'}, 'confirmSend': {'type': 'boolean', 'const': True}, 'messageType': {'enum': ['email', 'slack'], 'type': 'string', 'description': 'Optional message type filter when selecting a draft message to test.'}, 'testTargetId': {'type': 'string', '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)$', 'description': 'Structured test target id from testableMessages. Do not show this id to users; ask them to choose by message label.'}, 'testRecipientEmail': {'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'description': "Optional recipient for email tests. If omitted, Dreamlit sends to the authenticated user's email address."}}, 'additionalProperties': False}, 'action': {'type': 'string', 'const': 'send_workflow_test'}, 'appUrls': {'type': 'object', 'required': ['workflow', 'preview'], 'properties': {'preview': {'type': 'string', 'format': 'uri'}, 'workflow': {'type': 'string', 'format': 'uri'}, 'workflows': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'message': {'type': 'string'}, 'summary': {'type': 'array', 'items': {'type': 'string'}}, 'warnings': {'type': 'array', 'items': {'type': 'string'}}, 'previewUrl': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'handoff'], 'properties': {'status': {'type': 'string', 'const': 'handoff_required'}, 'handoff': {'type': 'object', 'required': ['kind', 'reason', 'message', 'url', 'instructions'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'kind': {'type': 'string', 'const': 'browser'}, 'reason': {'type': 'string'}, 'message': {'type': 'string'}, 'instructions': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'message'], 'properties': {'code': {'type': 'string'}, 'status': {'type': 'string', 'const': 'error'}, 'message': {'type': 'string'}, 'retryAfterSeconds': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}}, 'additionalProperties': False}], '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.'}}, 'additionalProperties': False}
Ajouté
unpublish_workflow
17 September 2026 07:56
Ajouté
confirm_publish
17 September 2026 07:56
Ajouté
prepare_publish
17 September 2026 07:56
Ajouté
send_workflow_test
17 September 2026 07:56
Ajouté
get_analytics
17 September 2026 07:56
Ajouté
get_workflow_and_preview_url
17 September 2026 07:56
Ajouté
list_brand_styles
17 September 2026 07:56
Ajouté
list_workflows
17 September 2026 07:56
Ajouté
list_projects
17 September 2026 07:56
Ajouté
create_or_update_workflow
17 September 2026 07:56
Ajouté
get_status
17 September 2026 07:56