Dreamlit
Create, test, publish, and manage Dreamlit notification workflows from AI clients.
Executive verdict
Current trust snapshot
trustsnap_9feff6c10aef1f1fOwn this MCP?
Claim ownership, prove control with a GitHub, DNS, or HTTP token challenge, revalidate now, publish a badge, and configure monitoring.
POST /v1/servers/ai.dreamlit/mcp/revalidateBadge embed
[](https://verify.sentinelsignal.io/servers/ai.dreamlit/mcp)
MCP TrustOps
TrustOps turns this report into operational controls: freshness SLAs, authenticated validation, semantic benchmarks, policy exports, alert subscriptions, badges, cost/compliance metadata, and runtime routing. Fresh trusted index decisions stay separate from long-tail inventory so stale scores do not masquerade as current evidence.
/v1/routeAlert subscription types
Production readiness class
Evidence confidence
Recommended for
Client compatibility verdicts
Client compatibility only means the server shape can work with a client. Production trust decision and write-action publishing are evaluated separately so a client-compatible server can still be blocked for production.
Evidence provenance
initialize• OKtools_list• OKtransport_compliance_probe• Warningstep_up_auth_probe• OKconnector_replay_probe• Warning — Frozen tool snapshots must survive refresh.request_association_probe• Missing — Roots, sampling, and elicitation should stay request-scoped.
Evidence provenance
initialize• OKtools_list• OKtransport_compliance_probe• Warning
Evidence provenance
action_safety_probe• Warning
Evidence provenance
tool_snapshot_probe• Warningconnector_replay_probe• Warning
Why compatibility is limited by client
Remediation checklist
- No explicit blockers recorded.
Remediation checklist
- No explicit blockers recorded.
Remediation checklist
- No explicit blockers recorded.
Verdict traces
tool_snapshot_changed• high • Tool snapshot changedwrite_action_surface_expanded• high • Write-action surface expanded
Client verdict trace table
| Verdict | Status | Checks | Winning source | Conflicts |
|---|---|---|---|---|
openai_connectors |
Client-compatible | initialize, tools_list, transport_compliance_probe, step_up_auth_probe, connector_replay_probe, request_association_probe | live_validation | none |
claude_desktop |
Client-compatible | initialize, tools_list, transport_compliance_probe | live_validation | none |
unsafe_for_write_actions |
Publishing allowed | action_safety_probe | live_validation | none |
snapshot_churn_risk |
Medium | tool_snapshot_probe, connector_replay_probe | history | none |
Publishability policy profiles
- Search Fetch Only: No
- Write Actions Present: Yes
- Oauth Configured: Yes
- Admin Refresh Required: Yes
- Safe For Company Knowledge: No
- Safe For Messages Api Remote Mcp: No
- Search Fetch Only: No
- Write Actions Present: Yes
- Oauth Configured: Yes
- Admin Refresh Required: Yes
- Safe For Company Knowledge: No
- Safe For Messages Api Remote Mcp: No
Compatibility fixtures
- remote_http_endpoint: Passes
- oauth_discovery: Passes
- frozen_tool_snapshot_refresh: Passes
- request_association: Passes
- remote_transport: Passes
- tool_discovery: Passes
- auth_connect: Passes
- safe_write_review: Passes
Authenticated validation sessions
Public validation is free. Authenticated validation is paid and proves scoped behavior, write-action safeguards, and authenticated tool execution.
/v1/verify/v1/ci/previewPublic server reputation
Incident & change feed
| Timestamp | Event | Details |
|---|---|---|
| May 13, 2026 01:18:30 PM UTC | Latest validation: healthy | Score 78.7 with status healthy. |
| May 13, 2026 01:18:30 PM UTC | Score changed | Score delta -1.9 versus the previous run. |
| May 13, 2026 01:18:30 PM UTC | Tool snapshot changed | Added 1, removed 0, and changed 0 tool contracts. |
| May 13, 2026 01:18:19 AM UTC | Score changed | Score delta +0.4 versus the previous run. |
| May 12, 2026 01:17:03 PM UTC | Score changed | Score delta +5.1 versus the previous run. |
Capabilities
- OAuth:
- DCR/CIMD:
- Prompts:
- Homepage: none
- Docs: none
- Support: none
- Icon: none
- Remote endpoint: https://mcp.dreamlit.ai/mcp
- Server card: none
Security posture
Tool capability & risk inventory
| Tool | Capabilities | Risk | Findings | Notes |
|---|---|---|---|---|
get_status |
read write network admin | Medium | admin mutation | Safeguards hinted in metadata. |
create_or_update_workflow |
read write network admin | Medium | freeform input surface admin mutation | No explicit safeguard hints detected. |
list_projects |
read network admin export | Medium | bulk data access | Safeguards hinted in metadata. |
list_workflows |
read write network admin export | Medium | bulk data access admin mutation | Safeguards hinted in metadata. |
get_workflow_and_preview_url |
read write network | Medium | none | Safeguards hinted in metadata. |
get_analytics |
read exec network filesystem admin export | High | command execution bulk data access | Safeguards hinted in metadata. |
send_workflow_test |
read write network admin | Medium | arbitrary network egress admin mutation | Safeguards hinted in metadata. |
prepare_publish |
read network admin | Medium | none | Safeguards hinted in metadata. |
confirm_publish |
read write network admin | Medium | admin mutation | Safeguards hinted in metadata. |
unpublish_workflow |
write delete exec network admin | Critical | destructive operation command execution admin mutation | No explicit safeguard hints detected. |
Write-action governance
Status detail: 2 high-risk tool(s), 1 destructive tool(s), 2 exec-capable tool(s); auth boundary is oauth or auth required with 8 safeguard(s) and 8 confirmation signal(s).
| Tool | Risk | Flags | Safeguards |
|---|---|---|---|
get_analytics |
High | command execution bulk data access | yes |
unpublish_workflow |
Critical | destructive operation command execution admin mutation | no |
Action-controls diff
New actions
| Action | Risk | Flags |
|---|---|---|
get_analytics | High | command execution bulk data access |
Changed actions
| Action | Change types | Risk |
|---|---|---|
| No materially changed actions. | ||
Why this score?
Algorithmic score breakdown
Compatibility profiles
Connector URL: https://mcp.dreamlit.ai/mcp # Complete OAuth in the client when prompted. # Server: ai.dreamlit/mcp
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": ["mcp-remote", "https://mcp.dreamlit.ai/mcp"]
}
}
}
smithery mcp add "https://mcp.dreamlit.ai/mcp"
curl -sS https://mcp.dreamlit.ai/mcp -H 'content-type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"mcp-verify","version":"0.1.0"}}}'
Actionable remediation
| Severity | Remediation | Why it matters | Recommended action |
|---|---|---|---|
| High | Add confirmation and dry-run semantics for risky actions | High-risk write, delete, exec, or egress tools should communicate safeguards clearly. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| High | Align session and protocol behavior with Streamable HTTP expectations | Clients increasingly rely on MCP-Protocol-Version, session teardown, and expired-session semantics. | Align MCP-Protocol-Version, MCP-Session-Id, DELETE teardown, and expired-session handling with the transport spec.Playbook
|
| High | Associate roots, sampling, and elicitation with active client requests | Modern MCP guidance expects roots, sampling, and elicitation traffic to be tied to an active client request instead of arriving unsolicited on idle sessions. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| High | Keep connector refreshes backward compatible | Managed connector clients freeze tool snapshots, so removed tools, new required args, and breaking output changes can break published integrations after refresh. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| High | Publish a complete server card | Missing or incomplete server-card metadata weakens discovery, documentation, and trust signals. | Serve /.well-known/mcp/server-card.json and include tools, prompts/resources, homepage, and support links.Playbook
|
| High | Respond to tool snapshot changed | Tools were added, removed, or materially changed between the latest two validations. | Publish a first-class changelog for tool additions, removals, and breaking schema changes.Playbook
|
| High | Respond to write-action surface expanded | The number of high-risk write, delete, exec, or bulk-access tools increased on the latest run. | Review the newly exposed write and destructive actions before publishing them broadly.Playbook
|
| Medium | Adopt a current MCP protocol revision | Older protocol revisions reduce compatibility with newer clients and registry programs. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| Medium | Close connector-publishing gaps | Connector catalogs care about protocol recency, session behavior, auth clarity, and tool-surface stability. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| Medium | Publish OpenID configuration | OIDC metadata improves token validation and client compatibility. | Expose /.well-known/openid-configuration with issuer, jwks_uri, and supported grants.Playbook
|
| Medium | Reduce tool-surface churn | Frequent add/remove or output-shape drift makes published connectors and cached tool snapshots brittle. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| Medium | Repair prompts/list or stop advertising prompts | Prompt metadata should either work live or be removed from the advertised capability set. | Only advertise prompts if prompts/list works and prompt arguments are documented.Playbook
|
| Medium | Support resumable HTTP sessions cleanly | Modern MCP clients increasingly expect resumable session behavior on streamable HTTP transports. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| Low | Expose modern utility surfaces like completions, pagination, or tasks | Utility coverage improves interoperability with larger clients and long-lived agent workflows. | Expose completions, pagination, and task metadata where supported so larger clients can plan and resume work safely.Playbook
|
| Low | Publish newer MCP capability signals | Roots, sampling, elicitation, structured outputs, and related metadata improve client understanding and ranking. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
Point loss breakdown
| Component | Current | Points missing |
|---|---|---|
| Recovery Semantics | 0/4 | -4.0 |
| Utility Coverage | 2/4 | -2.0 |
| Trust Confidence | 2/4 | -2.0 |
| Transport Compliance | 2/4 | -2.0 |
| Spec Recency | 2/4 | -2.0 |
| Registry Consistency | 2/4 | -2.0 |
| Rate Limit Semantics | 2/4 | -2.0 |
| Prompt Contract | 2/4 | -2.0 |
| Execution Sandbox Safety | 2/4 | -2.0 |
| Data Exfiltration Resilience | 2/4 | -2.0 |
| Adoption Signal | 2/4 | -2.0 |
| Action Safety | 2/4 | -2.0 |
Validation diff
Regressed checks: connector_replay_probe, tool_snapshot_probe
Improved checks: none
| Component | Previous | Latest | Delta |
|---|---|---|---|
trust_confidence_score | 3.81 | 2.0 | -1.81 |
backward_compatibility_score | 4.0 | 3.0 | -1.0 |
connector_replay_score | 4.0 | 3.0 | -1.0 |
execution_sandbox_safety_score | 3.0 | 2.0 | -1.0 |
freshness_confidence_score | 3.0 | 4.0 | 1.0 |
Tool snapshot diff & changelog
Required-argument changes
| Tool | Added required args | Removed required args |
|---|---|---|
| No required-argument changes detected. | ||
Output-schema drift
| Tool | Previous properties | Latest properties |
|---|---|---|
| No output-schema drift detected. | ||
Connector replay
Required-argument replay breaks
| Tool | Added required args | Removed required args |
|---|---|---|
| No required-argument replay breaks detected. | ||
Output-schema replay breaks
| Tool | Removed properties | Added properties |
|---|---|---|
| No output-schema replay breaks detected. | ||
Transport compliance drilldown
Issues: missing_session_id, missing_protocol_header
Request association
Utility coverage
Benchmark tasks
| Benchmark task | Status | Evidence |
|---|---|---|
| Discover tools | Passes |
|
| Read-only fetch flow | Passes |
|
| OAuth-required connect | Passes |
|
| Safe write flow with confirmation | Degraded |
|
Registry & provenance divergence
| Field | Registry | Live server card |
|---|---|---|
| Title | n/a | n/a |
| Version | n/a | n/a |
| Homepage | n/a | n/a |
Active alerts
- Tool snapshot changed (high)
Tools were added, removed, or materially changed between the latest two validations. - Write-action surface expanded (high)
The number of high-risk write, delete, exec, or bulk-access tools increased on the latest run.
Aliases & registry graph
| Identifier | Source | Canonical | Score |
|---|---|---|---|
ai.dreamlit/mcp |
official_registry | yes | 78.74 |
Alias consolidation
Source disagreements
| Field | What differs | Observed values |
|---|---|---|
| No source disagreements detected. | ||
Install snippets
Connector URL: https://mcp.dreamlit.ai/mcp # Complete OAuth in the client when prompted. # Server: ai.dreamlit/mcp
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": ["mcp-remote", "https://mcp.dreamlit.ai/mcp"]
}
}
}
smithery mcp add "https://mcp.dreamlit.ai/mcp"
curl -sS https://mcp.dreamlit.ai/mcp -H 'content-type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"mcp-verify","version":"0.1.0"}}}'
Agent access & tool surface
tools/list, prompts/list, and resources/list checks.ai.dreamlit/mcp.Claims & monitoring
No verified maintainer claim recorded.
Alert routing
| Watch | Team | Channels | Minimum severity |
|---|---|---|---|
| No active watch destinations. | |||
Maintainer analytics
Maintainer response quality
Maintainer annotations
No maintainer annotations have been recorded yet.
Maintainer rebuttals & expected behavior
No maintainer rebuttals or expected-behavior overrides are recorded yet.
Latest validation evidence
Failures
openid_configurationClient error '404 Not Found' for url 'https://mcp.dreamlit.ai/.well-known/openid-configuration' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404server_cardClient error '404 Not Found' for url 'https://mcp.dreamlit.ai/.well-known/mcp/server-card.json' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404
Checks
| Check | Status | Latency | Evidence |
|---|---|---|---|
action_safety_probe |
Warning | n/a | 2 high-risk, 1 destructive, 2 exec-capable tool(s); auth present; safeguards=8; confirmation=get status, create or update workflow, list projects, list workflows, +4 more. |
advanced_capabilities_probe |
Warning | n/a | Only 3 capability signal(s): resource links, resources, structured outputs. |
connector_publishability_probe |
Warning | n/a | Publishability blockers: server card. |
connector_replay_probe |
Warning | n/a | Backward compatible with additive changes; added tools=1, additive output changes=0. |
determinism_probe |
OK | 223.9 ms | Check completed |
initialize |
OK | 185.6 ms | Protocol 2025-03-26 |
interactive_flow_probe |
OK | n/a | Check completed |
oauth_authorization_server |
OK | 20.1 ms | authorization_endpoint, client_id_metadata_document_supported, code_challenge_methods_supported, grant_types_supported |
oauth_protected_resource |
OK | 42.1 ms | 1 authorization server(s) |
official_registry_probe |
OK | n/a | Check completed |
openid_configuration |
Error | 23.1 ms | Client error '404 Not Found' for url 'https://mcp.dreamlit.ai/.well-known/openid-configuration' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 |
probe_noise_resilience |
OK | 15.8 ms | Fetched https://mcp.dreamlit.ai/robots.txt |
prompt_get |
Missing | n/a | not advertised |
prompts_list |
Missing | 21.4 ms | not supported |
protocol_version_probe |
Warning | n/a | Claims 2025-03-26; 2 release(s) behind 2025-11-25. |
provenance_divergence_probe |
OK | n/a | Check completed |
request_association_probe |
Missing | n/a | No request-association capabilities were advertised. |
resource_read |
OK | 26.0 ms | 1 resource content item(s) returned |
resources_list |
OK | 261.4 ms | 1 resource item(s) exposed |
server_card |
Error | 69.8 ms | Client error '404 Not Found' for url 'https://mcp.dreamlit.ai/.well-known/mcp/server-card.json' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 |
session_resume_probe |
Warning | n/a | no session id |
step_up_auth_probe |
OK | n/a | Scopes=analytics:read, workflows:publish, workflows:read, workflows:write; broad scopes=workflows:write. |
tool_snapshot_probe |
Warning | n/a | Check completed |
tools_list |
OK | 60.0 ms | 10 tool(s) exposed |
transport_compliance_probe |
Warning | 30.1 ms | Issues: missing session id, missing protocol header (bad protocol=400). |
utility_coverage_probe |
Missing | 24.9 ms | No completions evidence; no pagination evidence; tasks missing. |
Raw evidence view
Show raw JSON evidence
{
"checks": {
"action_safety_probe": {
"details": {
"auth_present": true,
"confirmation_signals": [
"get_status",
"create_or_update_workflow",
"list_projects",
"list_workflows",
"get_workflow_and_preview_url",
"send_workflow_test",
"prepare_publish",
"confirm_publish"
],
"safeguard_count": 8,
"summary": {
"bulk_access_tools": 3,
"capability_distribution": {
"admin": 9,
"delete": 1,
"exec": 2,
"export": 3,
"filesystem": 1,
"network": 10,
"read": 9,
"write": 7
},
"destructive_tools": 1,
"egress_tools": 1,
"exec_tools": 2,
"high_risk_tools": 2,
"risk_distribution": {
"critical": 1,
"high": 1,
"low": 0,
"medium": 8
},
"secret_tools": 0,
"tool_count": 10
}
},
"latency_ms": null,
"status": "warning"
},
"advanced_capabilities_probe": {
"details": {
"capabilities": {
"completions": false,
"elicitation": false,
"prompts": false,
"resource_links": true,
"resources": true,
"roots": false,
"sampling": false,
"structured_outputs": true
},
"enabled": [
"resource_links",
"resources",
"structured_outputs"
],
"enabled_count": 3,
"initialize_capability_keys": [
"resources",
"tools"
]
},
"latency_ms": null,
"status": "warning"
},
"connector_publishability_probe": {
"details": {
"blockers": [
"server_card"
],
"criteria": {
"action_safety": true,
"auth_flow": true,
"connector_replay": true,
"initialize": true,
"protocol_version": true,
"remote_transport": true,
"request_association": true,
"server_card": false,
"session_resume": true,
"step_up_auth": true,
"tool_surface": true,
"tools_list": true,
"transport_compliance": true
},
"high_risk_tools": 2,
"tool_count": 10,
"transport": "streamable-http"
},
"latency_ms": null,
"status": "warning"
},
"connector_replay_probe": {
"details": {
"added_tools": [
"get_analytics"
],
"additive_output_changes": [],
"backward_compatible": true,
"output_breaks": [],
"removed_tools": [],
"required_arg_breaks": [],
"would_break_after_refresh": false
},
"latency_ms": null,
"status": "warning"
},
"determinism_probe": {
"details": {
"attempts": 2,
"baseline_signature": "536028c72647b3cd3f54b3cee9d61cc0e3484ad9edc879854d034ee2a2d22f23",
"errors": [],
"matches": 2,
"stable_ratio": 1.0,
"successful": 2
},
"latency_ms": 223.89,
"status": "ok"
},
"initialize": {
"details": {
"headers": {
"content-type": "application/json"
},
"http_status": 200,
"payload": {
"id": 1,
"jsonrpc": "2.0",
"result": {
"capabilities": {
"resources": {
"listChanged": true
},
"tools": {
"listChanged": true
}
},
"instructions": "Dreamlit is a database-driven notification workflow platform for Supabase and Postgres apps.\nPrefer outcome-oriented prompts: describe the event or schedule, audience, recipient, message goal, timing, business rules, and unsubscribe intent.\nUse get_status for workspace, project, setup, and prompting context before authoring.\nUse get_workflow_and_preview_url before editing an existing workflow.\nUse get_analytics for bounded analytics queries. Filter large datasets and paginate with returned cursors instead of asking for exports or bulk dumps.\nCreate or update workflow drafts with create_or_update_workflow.\nDrafts are not live after authoring. Ask the user to open the preview link and confirm workflow tests for important email or Slack messages before publishing.\nPublish only with prepare_publish and confirm_publish after explicit user confirmation.",
"protocolVersion": "2025-03-26",
"serverInfo": {
"name": "Dreamlit MCP",
"version": "0.3.0"
}
}
},
"url": "https://mcp.dreamlit.ai/mcp"
},
"latency_ms": 185.58,
"status": "ok"
},
"interactive_flow_probe": {
"details": {
"oauth_supported": true,
"prompt_available": false,
"risk_hits": [],
"safe_hits": []
},
"latency_ms": null,
"status": "ok"
},
"oauth_authorization_server": {
"details": {
"headers": {
"content-type": "application/json"
},
"http_status": 200,
"payload": {
"authorization_endpoint": "https://mcp.dreamlit.ai/authorize",
"client_id_metadata_document_supported": true,
"code_challenge_methods_supported": [
"S256"
],
"grant_types_supported": [
"authorization_code",
"refresh_token"
],
"issuer": "https://mcp.dreamlit.ai",
"registration_endpoint": "https://mcp.dreamlit.ai/register",
"response_modes_supported": [
"query"
],
"response_types_supported": [
"code"
],
"revocation_endpoint": "https://mcp.dreamlit.ai/token",
"scopes_supported": [
"workflows:read",
"workflows:write",
"workflows:publish",
"analytics:read"
],
"token_endpoint": "https://mcp.dreamlit.ai/token",
"token_endpoint_auth_methods_supported": [
"client_secret_basic",
"client_secret_post",
"none"
]
},
"url": "https://mcp.dreamlit.ai/.well-known/oauth-authorization-server"
},
"latency_ms": 20.11,
"status": "ok"
},
"oauth_protected_resource": {
"details": {
"headers": {
"content-type": "application/json"
},
"http_status": 200,
"payload": {
"authorization_servers": [
"https://mcp.dreamlit.ai"
],
"bearer_methods_supported": [
"header"
],
"resource": "https://mcp.dreamlit.ai",
"scopes_supported": [
"workflows:read",
"workflows:write",
"workflows:publish",
"analytics:read"
]
},
"url": "https://mcp.dreamlit.ai/.well-known/oauth-protected-resource"
},
"latency_ms": 42.11,
"status": "ok"
},
"official_registry_probe": {
"details": {
"direct_match": true,
"official_peer_count": 1,
"registry_identifier": "ai.dreamlit/mcp",
"registry_source": "official_registry"
},
"latency_ms": null,
"status": "ok"
},
"openid_configuration": {
"details": {
"error": "Client error '404 Not Found' for url 'https://mcp.dreamlit.ai/.well-known/openid-configuration'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
"url": "https://mcp.dreamlit.ai/.well-known/openid-configuration"
},
"latency_ms": 23.06,
"status": "error"
},
"probe_noise_resilience": {
"details": {
"headers": {
"content-type": "text/plain;charset=UTF-8"
},
"http_status": 404,
"url": "https://mcp.dreamlit.ai/robots.txt"
},
"latency_ms": 15.83,
"status": "ok"
},
"prompt_get": {
"details": {
"reason": "not_advertised"
},
"latency_ms": null,
"status": "missing"
},
"prompts_list": {
"details": {
"headers": {
"content-type": "application/json"
},
"http_status": 200,
"payload": {
"error": {
"code": -32601,
"message": "Method not found"
},
"id": 3,
"jsonrpc": "2.0"
},
"reason": "not_supported",
"url": "https://mcp.dreamlit.ai/mcp"
},
"latency_ms": 21.38,
"status": "missing"
},
"protocol_version_probe": {
"details": {
"claimed_version": "2025-03-26",
"lag_days": 244,
"latest_known_version": "2025-11-25",
"releases_behind": 2,
"validator_protocol_version": "2025-03-26"
},
"latency_ms": null,
"status": "warning"
},
"provenance_divergence_probe": {
"details": {
"direct_official_match": true,
"drift_fields": [],
"metadata_document_count": 1,
"registry_homepage": null,
"registry_repository": null,
"registry_title": null,
"registry_version": null,
"server_card_homepage": null,
"server_card_repository": null,
"server_card_title": null,
"server_card_version": null
},
"latency_ms": null,
"status": "ok"
},
"request_association_probe": {
"details": {
"reason": "no_request_association_capabilities_advertised"
},
"latency_ms": null,
"status": "missing"
},
"resource_read": {
"details": {
"headers": {
"content-type": "application/json"
},
"http_status": 200,
"payload": {
"id": 6,
"jsonrpc": "2.0",
"result": {
"contents": [
{
"mimeType": "text/markdown",
"text": "# Dreamlit MCP Guide\n\nDreamlit is a database-driven notification workflow platform for Supabase and Postgres apps. Users describe notification outcomes in natural language; Dreamlit inspects the connected database and creates or updates workflow drafts.\n\n## How To Prompt Dreamlit\n\nPrompt Dreamlit with the outcome, not the internal graph. Include the event or schedule, audience, recipient, message goal, timing, business rules, tone, and unsubscribe intent when those details matter.\n\nGood prompts look like:\n\n- \"When a new organization row is inserted, send Andrew an internal alert with the organization name and id.\"\n- \"Every Monday at 9 AM in America/New_York, send admins a weekly usage digest.\"\n- \"Tomorrow at 10 AM, announce the launch to active users who opted into product updates.\"\n\n## Trigger Types\n\n- Database triggers run from inserted or updated rows. Use them for live app events such as signups, purchases, comments, failures, and status changes.\n- Repeating triggers run on a recurring cadence. Use them for daily, weekly, or monthly digests, reminders, summaries, and reports.\n- Broadcasts are one-time scheduled audience emails. Use them for announcements, newsletters, launches, promotions, and updates to opted-in users or people with an existing relationship.\n- Broadcast publish validation requires a future send time and rejects times that are missing, in the past, or too close to now. Avoid \"send immediately\"; choose a send time a few minutes ahead so Dreamlit has time to queue the broadcast.\n- Supabase Auth email workflows can be edited if Dreamlit-managed Supabase Auth emails are already set up. Initial setup must happen in the Dreamlit web app for now.\n\n## Data And Personalization\n\nDescribe the data needed for targeting or personalization. Dreamlit can add query steps to fetch, filter, join, enrich, or fan out data before email or Slack steps. Query steps are for reading and shaping data; they should not mutate customer data.\n\n## Styling\n\nLet Dreamlit choose email styling unless the user gives specific direction. If the user asks for a particular tone, layout, visual style, brand treatment, or copy direction, include that in the prompt. Otherwise, describe the notification goal and let Dreamlit's workflow LLM use the project and brand context.\n\n## Steps\n\n- Query steps fetch, filter, join, enrich, or fan out data.\n- Wait steps delay downstream work.\n- Email steps send one email per input object and can use Liquid variables from the input data.\n- Slack steps send internal Slack alerts to configured channels.\n\n## Unsubscribe\n\nUse unsubscribe for marketing, promotional, newsletter, announcement, digest, onboarding-tip, and most broadcast email. Leave it off for account-critical, auth, security, billing, receipt, password reset, and similar required email.\n\n## Testing Before Publish\n\nAuthoring creates a draft that is not live. Open the preview link to review the draft, and use send_workflow_test for important email or Slack messages before publishing. Tests send the current draft message only after explicit user confirmation; they do not publish, schedule, or edit the workflow.\n\n## Analytics\n\nUse get_analytics for bounded read-only analytics queries. Query overview metrics, notification rows, recipient engagement, and workflow run rows by project, channel, timestamp window, filters, sort, and include sections. For larger datasets, filter first and paginate with the returned cursor. Do not request CSV exports or bulk dumps through MCP.\n\n## Publishing And Sandbox\n\nWorkflow authoring changes drafts. Publishing is the separate live step: database triggers are installed, repeating workflows are scheduled, and broadcasts are scheduled or sent. Sandbox mode can hold notifications for inspection and manual release.\n\n## Recommended MCP Flow\n\n1. Call get_status for Dreamlit context, setup state, schema hints, and app URLs.\n2. Use list_projects and list_workflows when the target is unclear.\n3. Use get_workflow_and_preview_url before editing or verifying an existing workflow.\n4. Use get_analytics for bounded analytics questions, filtering down and paginating when needed.\n5. Use create_or_update_workflow with an outcome-oriented prompt.\n6. Open the preview link and use send_workflow_test to confirm important draft message tests before publishing.\n7. Use prepare_publish and confirm_publish only after explicit user confirmation.\n",
"uri": "dreamlit://mcp/guide"
}
]
}
},
"resource_uri": "dreamlit://mcp/guide",
"url": "https://mcp.dreamlit.ai/mcp"
},
"latency_ms": 25.96,
"status": "ok"
},
"resources_list": {
"details": {
"headers": {
"content-type": "application/json"
},
"http_status": 200,
"payload": {
"id": 5,
"jsonrpc": "2.0",
"result": {
"resources": [
{
"description": "High-level guidance for prompting Dreamlit and using the Dreamlit MCP tools.",
"mimeType": "text/markdown",
"name": "dreamlit-mcp-guide",
"title": "Dreamlit MCP Guide",
"uri": "dreamlit://mcp/guide"
}
]
}
},
"url": "https://mcp.dreamlit.ai/mcp"
},
"latency_ms": 261.43,
"status": "ok"
},
"server_card": {
"details": {
"error": "Client error '404 Not Found' for url 'https://mcp.dreamlit.ai/.well-known/mcp/server-card.json'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
"url": "https://mcp.dreamlit.ai/.well-known/mcp/server-card.json"
},
"latency_ms": 69.85,
"status": "error"
},
"session_resume_probe": {
"details": {
"protocol_version": "2025-03-26",
"reason": "no_session_id",
"resume_expected": true,
"transport": "streamable-http"
},
"latency_ms": null,
"status": "warning"
},
"step_up_auth_probe": {
"details": {
"auth_required_checks": [],
"broad_scopes": [
"workflows:write"
],
"challenge_headers": [],
"minimal_scope_documented": true,
"oauth_present": true,
"scope_specificity_ratio": 0.5,
"step_up_signals": [],
"supported_scopes": [
"analytics:read",
"workflows:publish",
"workflows:read",
"workflows:write"
]
},
"latency_ms": null,
"status": "ok"
},
"tool_snapshot_probe": {
"details": {
"added": [
"get_analytics"
],
"changed_outputs": [],
"current_tool_count": 10,
"previous_tool_count": 9,
"removed": [],
"similarity": 0.9
},
"latency_ms": null,
"status": "warning"
},
"tools_list": {
"details": {
"headers": {
"content-type": "application/json"
},
"http_status": 200,
"payload": {
"id": 2,
"jsonrpc": "2.0",
"result": {
"tools": [
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": true,
"title": "Get status"
},
"description": "Read-only. Use first when the agent needs Dreamlit product guidance, prompting guidance, approved workspace context, project setup, schema hints, workflow state, or relevant app URLs. Returns a compact context pack with concepts, recommended tool flow, actor/workspace/project data, optional authoring context, optional workflow context, and appUrls. Do not use this to create, update, publish, or unpublish workflows.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"projectId": {
"description": "Optional project id. Include it to return project setup, schema hints, and authoring context.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"description": "Optional workflow id. Include it to return concise workflow state and preview URL.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"type": "object"
},
"name": "get_status",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"result": {
"description": "Dreamlit MCP result. success responses contain data and appUrls when relevant; auth_required, clarification_required, confirmation_required, handoff_required, and error responses explain the next action.",
"oneOf": [
{
"additionalProperties": false,
"properties": {
"data": {
"additionalProperties": {},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"status": {
"const": "success",
"type": "string"
}
},
"required": [
"status",
"data"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"auth": {
"additionalProperties": false,
"properties": {
"reason": {
"type": "string"
}
},
"required": [
"reason"
],
"type": "object"
},
"message": {
"type": "string"
},
"status": {
"const": "auth_required",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"clarification": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"appUrls": {
"additionalProperties": false,
"properties": {
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"workflows"
],
"type": "object"
},
"assistantMessageId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"chatSessionId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"message": {
"type": "string"
},
"orgId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"projectId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"userMessageId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"message",
"workflowId",
"projectId",
"orgId",
"chatSessionId",
"userMessageId",
"assistantMessageId",
"appUrls"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"appUrls": {
"additionalProperties": false,
"properties": {
"preview": {
"format": "uri",
"type": "string"
},
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"preview"
],
"type": "object"
},
"kind": {
"const": "test_message_selection",
"type": "string"
},
"message": {
"type": "string"
},
"orgId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"projectId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"testableMessages": {
"items": {
"additionalProperties": false,
"properties": {
"description": {
"type": "string"
},
"destination": {
"type": "string"
},
"label": {
"type": "string"
},
"messageType": {
"enum": [
"email",
"slack"
],
"type": "string"
},
"requiresRecipient": {
"type": "boolean"
},
"testTargetId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"testTargetId",
"messageType",
"label",
"requiresRecipient"
],
"type": "object"
},
"minItems": 2,
"type": "array"
},
"workflowId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"kind",
"message",
"workflowId",
"projectId",
"orgId",
"testableMessages",
"appUrls"
],
"type": "object"
}
]
},
"status": {
"const": "clarification_required",
"type": "string"
}
},
"required": [
"status",
"clarification"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"confirmation": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"action": {
"const": "confirm_publish",
"type": "string"
},
"appUrls": {
"additionalProperties": false,
"properties": {
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow"
],
"type": "object"
},
"input": {
"additionalProperties": false,
"properties": {
"expectedEditableVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Editable version id returned by prepare_publish, used as a safety check."
},
"expectedPublishedVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Published version id returned by prepare_publish, used as a safety check."
},
"expectedUpdatedAtIso": {
"anyOf": [
{
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Workflow updatedAt timestamp returned by prepare_publish, used as a safety check."
},
"isSandboxed": {
"description": "Whether to publish in sandbox mode so notifications are held for inspection.",
"type": "boolean"
},
"workflowId": {
"description": "Workflow id to publish.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId"
],
"type": "object"
},
"kind": {
"const": "publish",
"type": "string"
},
"message": {
"type": "string"
},
"previewUrl": {
"format": "uri",
"type": "string"
},
"summary": {
"items": {
"type": "string"
},
"type": "array"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"kind",
"action",
"input",
"message",
"previewUrl",
"summary",
"warnings"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"action": {
"const": "send_workflow_test",
"type": "string"
},
"appUrls": {
"additionalProperties": false,
"properties": {
"preview": {
"format": "uri",
"type": "string"
},
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"preview"
],
"type": "object"
},
"input": {
"additionalProperties": false,
"properties": {
"confirmSend": {
"const": true,
"type": "boolean"
},
"messageType": {
"description": "Optional message type filter when selecting a draft message to test.",
"enum": [
"email",
"slack"
],
"type": "string"
},
"rowData": {
"additionalProperties": {},
"description": "Optional sample data for rendering draft message variables during the test. If omitted, Dreamlit uses the same default preview data as the web builder when available.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"testRecipientEmail": {
"description": "Optional recipient for email tests. If omitted, Dreamlit sends to the authenticated user's email address.",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"type": "string"
},
"testTargetId": {
"description": "Structured test target id from testableMessages. Do not show this id to users; ask them to choose by message label.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"description": "Workflow id whose editable draft message should be tested.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId",
"confirmSend"
],
"type": "object"
},
"kind": {
"const": "send_workflow_test",
"type": "string"
},
"message": {
"type": "string"
},
"previewUrl": {
"format": "uri",
"type": "string"
},
"summary": {
"items": {
"type": "string"
},
"type": "array"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"kind",
"action",
"input",
"message",
"previewUrl",
"appUrls",
"summary",
"warnings"
],
"type": "object"
}
]
},
"status": {
"const": "confirmation_required",
"type": "string"
}
},
"required": [
"status",
"confirmation"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"handoff": {
"additionalProperties": false,
"properties": {
"instructions": {
"items": {
"type": "string"
},
"type": "array"
},
"kind": {
"const": "browser",
"type": "string"
},
"message": {
"type": "string"
},
"reason": {
"type": "string"
},
"url": {
"format": "uri",
"type": "string"
}
},
"required": [
"kind",
"reason",
"message",
"url",
"instructions"
],
"type": "object"
},
"status": {
"const": "handoff_required",
"type": "string"
}
},
"required": [
"status",
"handoff"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"retryAfterSeconds": {
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"status": {
"const": "error",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
}
]
}
},
"required": [
"result"
],
"type": "object"
},
"title": "Get status"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": false,
"openWorldHint": true,
"readOnlyHint": false,
"title": "Create or update workflow"
},
"description": "Creates a new Dreamlit workflow draft or updates an existing draft from an outcome-oriented natural-language prompt. Use after get_status; use get_workflow_and_preview_url first when editing an existing workflow. 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.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"brandKitId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Optional Dreamlit brand kit id to use for generated email drafts."
},
"projectId": {
"description": "Target project id for creating a new workflow draft.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"prompt": {
"description": "Outcome-oriented workflow authoring request. Describe the event or schedule, audience, recipient, message goal, data needed, timing, business rules, and unsubscribe intent. Let Dreamlit choose email styling unless the user gives specific style direction. For broadcasts, request a future send time instead of an immediate send.",
"minLength": 1,
"type": "string"
},
"userCurrentTimeIso": {
"description": "User's current time as an ISO timestamp with offset, useful for relative schedule requests.",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"type": "string"
},
"userCurrentTimeZoneId": {
"description": "IANA timezone id for the user, useful for repeating workflows and scheduled broadcasts.",
"minLength": 1,
"type": "string"
},
"userEmailStepComments": {
"description": "Optional inline comments for revising email step content.",
"items": {
"properties": {
"comment": {
"description": "User's requested change.",
"minLength": 1,
"type": "string"
},
"onCodeLineText": {
"description": "Nearby email editor text for anchoring the comment.",
"minLength": 1,
"type": "string"
},
"userHighlightedText": {
"description": "Specific text selected by the user.",
"minLength": 1,
"type": "string"
},
"workflowStepId": {
"description": "Workflow step id that the user commented on.",
"minLength": 1,
"type": "string"
}
},
"required": [
"workflowStepId",
"comment",
"onCodeLineText",
"userHighlightedText"
],
"type": "object"
},
"type": "array"
},
"workflowId": {
"description": "Existing workflow id to continue editing. Use get_workflow_and_preview_url first when changing an existing workflow.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"prompt"
],
"type": "object"
},
"name": "create_or_update_workflow",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"result": {
"description": "Dreamlit MCP result. success responses contain data and appUrls when relevant; auth_required, clarification_required, confirmation_required, handoff_required, and error responses explain the next action.",
"oneOf": [
{
"additionalProperties": false,
"properties": {
"data": {
"additionalProperties": {},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"status": {
"const": "success",
"type": "string"
}
},
"required": [
"status",
"data"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"auth": {
"additionalProperties": false,
"properties": {
"reason": {
"type": "string"
}
},
"required": [
"reason"
],
"type": "object"
},
"message": {
"type": "string"
},
"status": {
"const": "auth_required",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"clarification": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"appUrls": {
"additionalProperties": false,
"properties": {
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"workflows"
],
"type": "object"
},
"assistantMessageId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"chatSessionId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"message": {
"type": "string"
},
"orgId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"projectId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"userMessageId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"message",
"workflowId",
"projectId",
"orgId",
"chatSessionId",
"userMessageId",
"assistantMessageId",
"appUrls"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"appUrls": {
"additionalProperties": false,
"properties": {
"preview": {
"format": "uri",
"type": "string"
},
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"preview"
],
"type": "object"
},
"kind": {
"const": "test_message_selection",
"type": "string"
},
"message": {
"type": "string"
},
"orgId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"projectId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"testableMessages": {
"items": {
"additionalProperties": false,
"properties": {
"description": {
"type": "string"
},
"destination": {
"type": "string"
},
"label": {
"type": "string"
},
"messageType": {
"enum": [
"email",
"slack"
],
"type": "string"
},
"requiresRecipient": {
"type": "boolean"
},
"testTargetId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"testTargetId",
"messageType",
"label",
"requiresRecipient"
],
"type": "object"
},
"minItems": 2,
"type": "array"
},
"workflowId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"kind",
"message",
"workflowId",
"projectId",
"orgId",
"testableMessages",
"appUrls"
],
"type": "object"
}
]
},
"status": {
"const": "clarification_required",
"type": "string"
}
},
"required": [
"status",
"clarification"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"confirmation": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"action": {
"const": "confirm_publish",
"type": "string"
},
"appUrls": {
"additionalProperties": false,
"properties": {
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow"
],
"type": "object"
},
"input": {
"additionalProperties": false,
"properties": {
"expectedEditableVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Editable version id returned by prepare_publish, used as a safety check."
},
"expectedPublishedVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Published version id returned by prepare_publish, used as a safety check."
},
"expectedUpdatedAtIso": {
"anyOf": [
{
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Workflow updatedAt timestamp returned by prepare_publish, used as a safety check."
},
"isSandboxed": {
"description": "Whether to publish in sandbox mode so notifications are held for inspection.",
"type": "boolean"
},
"workflowId": {
"description": "Workflow id to publish.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId"
],
"type": "object"
},
"kind": {
"const": "publish",
"type": "string"
},
"message": {
"type": "string"
},
"previewUrl": {
"format": "uri",
"type": "string"
},
"summary": {
"items": {
"type": "string"
},
"type": "array"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"kind",
"action",
"input",
"message",
"previewUrl",
"summary",
"warnings"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"action": {
"const": "send_workflow_test",
"type": "string"
},
"appUrls": {
"additionalProperties": false,
"properties": {
"preview": {
"format": "uri",
"type": "string"
},
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"preview"
],
"type": "object"
},
"input": {
"additionalProperties": false,
"properties": {
"confirmSend": {
"const": true,
"type": "boolean"
},
"messageType": {
"description": "Optional message type filter when selecting a draft message to test.",
"enum": [
"email",
"slack"
],
"type": "string"
},
"rowData": {
"additionalProperties": {},
"description": "Optional sample data for rendering draft message variables during the test. If omitted, Dreamlit uses the same default preview data as the web builder when available.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"testRecipientEmail": {
"description": "Optional recipient for email tests. If omitted, Dreamlit sends to the authenticated user's email address.",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"type": "string"
},
"testTargetId": {
"description": "Structured test target id from testableMessages. Do not show this id to users; ask them to choose by message label.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"description": "Workflow id whose editable draft message should be tested.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId",
"confirmSend"
],
"type": "object"
},
"kind": {
"const": "send_workflow_test",
"type": "string"
},
"message": {
"type": "string"
},
"previewUrl": {
"format": "uri",
"type": "string"
},
"summary": {
"items": {
"type": "string"
},
"type": "array"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"kind",
"action",
"input",
"message",
"previewUrl",
"appUrls",
"summary",
"warnings"
],
"type": "object"
}
]
},
"status": {
"const": "confirmation_required",
"type": "string"
}
},
"required": [
"status",
"confirmation"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"handoff": {
"additionalProperties": false,
"properties": {
"instructions": {
"items": {
"type": "string"
},
"type": "array"
},
"kind": {
"const": "browser",
"type": "string"
},
"message": {
"type": "string"
},
"reason": {
"type": "string"
},
"url": {
"format": "uri",
"type": "string"
}
},
"required": [
"kind",
"reason",
"message",
"url",
"instructions"
],
"type": "object"
},
"status": {
"const": "handoff_required",
"type": "string"
}
},
"required": [
"status",
"handoff"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"retryAfterSeconds": {
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"status": {
"const": "error",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
}
]
}
},
"required": [
"result"
],
"type": "object"
},
"title": "Create or update workflow"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": true,
"title": "List projects"
},
"description": "Read-only. Use when the target project is unknown or the user names a project instead of providing an id. Returns accessible Dreamlit projects in the approved workspace with project and workflow-list URLs. Do not use to inspect workflow structure or author changes.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"default": 25,
"description": "Maximum number of projects to return.",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"search": {
"description": "Optional project name search string.",
"maxLength": 200,
"type": "string"
}
},
"type": "object"
},
"name": "list_projects",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"result": {
"description": "Dreamlit MCP result. success responses contain data and appUrls when relevant; auth_required, clarification_required, confirmation_required, handoff_required, and error responses explain the next action.",
"oneOf": [
{
"additionalProperties": false,
"properties": {
"data": {
"additionalProperties": {},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"status": {
"const": "success",
"type": "string"
}
},
"required": [
"status",
"data"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"auth": {
"additionalProperties": false,
"properties": {
"reason": {
"type": "string"
}
},
"required": [
"reason"
],
"type": "object"
},
"message": {
"type": "string"
},
"status": {
"const": "auth_required",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"clarification": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"appUrls": {
"additionalProperties": false,
"properties": {
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"workflows"
],
"type": "object"
},
"assistantMessageId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"chatSessionId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"message": {
"type": "string"
},
"orgId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"projectId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"userMessageId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"message",
"workflowId",
"projectId",
"orgId",
"chatSessionId",
"userMessageId",
"assistantMessageId",
"appUrls"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"appUrls": {
"additionalProperties": false,
"properties": {
"preview": {
"format": "uri",
"type": "string"
},
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"preview"
],
"type": "object"
},
"kind": {
"const": "test_message_selection",
"type": "string"
},
"message": {
"type": "string"
},
"orgId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"projectId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"testableMessages": {
"items": {
"additionalProperties": false,
"properties": {
"description": {
"type": "string"
},
"destination": {
"type": "string"
},
"label": {
"type": "string"
},
"messageType": {
"enum": [
"email",
"slack"
],
"type": "string"
},
"requiresRecipient": {
"type": "boolean"
},
"testTargetId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"testTargetId",
"messageType",
"label",
"requiresRecipient"
],
"type": "object"
},
"minItems": 2,
"type": "array"
},
"workflowId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"kind",
"message",
"workflowId",
"projectId",
"orgId",
"testableMessages",
"appUrls"
],
"type": "object"
}
]
},
"status": {
"const": "clarification_required",
"type": "string"
}
},
"required": [
"status",
"clarification"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"confirmation": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"action": {
"const": "confirm_publish",
"type": "string"
},
"appUrls": {
"additionalProperties": false,
"properties": {
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow"
],
"type": "object"
},
"input": {
"additionalProperties": false,
"properties": {
"expectedEditableVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Editable version id returned by prepare_publish, used as a safety check."
},
"expectedPublishedVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Published version id returned by prepare_publish, used as a safety check."
},
"expectedUpdatedAtIso": {
"anyOf": [
{
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Workflow updatedAt timestamp returned by prepare_publish, used as a safety check."
},
"isSandboxed": {
"description": "Whether to publish in sandbox mode so notifications are held for inspection.",
"type": "boolean"
},
"workflowId": {
"description": "Workflow id to publish.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId"
],
"type": "object"
},
"kind": {
"const": "publish",
"type": "string"
},
"message": {
"type": "string"
},
"previewUrl": {
"format": "uri",
"type": "string"
},
"summary": {
"items": {
"type": "string"
},
"type": "array"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"kind",
"action",
"input",
"message",
"previewUrl",
"summary",
"warnings"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"action": {
"const": "send_workflow_test",
"type": "string"
},
"appUrls": {
"additionalProperties": false,
"properties": {
"preview": {
"format": "uri",
"type": "string"
},
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"preview"
],
"type": "object"
},
"input": {
"additionalProperties": false,
"properties": {
"confirmSend": {
"const": true,
"type": "boolean"
},
"messageType": {
"description": "Optional message type filter when selecting a draft message to test.",
"enum": [
"email",
"slack"
],
"type": "string"
},
"rowData": {
"additionalProperties": {},
"description": "Optional sample data for rendering draft message variables during the test. If omitted, Dreamlit uses the same default preview data as the web builder when available.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"testRecipientEmail": {
"description": "Optional recipient for email tests. If omitted, Dreamlit sends to the authenticated user's email address.",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"type": "string"
},
"testTargetId": {
"description": "Structured test target id from testableMessages. Do not show this id to users; ask them to choose by message label.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"description": "Workflow id whose editable draft message should be tested.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId",
"confirmSend"
],
"type": "object"
},
"kind": {
"const": "send_workflow_test",
"type": "string"
},
"message": {
"type": "string"
},
"previewUrl": {
"format": "uri",
"type": "string"
},
"summary": {
"items": {
"type": "string"
},
"type": "array"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"kind",
"action",
"input",
"message",
"previewUrl",
"appUrls",
"summary",
"warnings"
],
"type": "object"
}
]
},
"status": {
"const": "confirmation_required",
"type": "string"
}
},
"required": [
"status",
"confirmation"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"handoff": {
"additionalProperties": false,
"properties": {
"instructions": {
"items": {
"type": "string"
},
"type": "array"
},
"kind": {
"const": "browser",
"type": "string"
},
"message": {
"type": "string"
},
"reason": {
"type": "string"
},
"url": {
"format": "uri",
"type": "string"
}
},
"required": [
"kind",
"reason",
"message",
"url",
"instructions"
],
"type": "object"
},
"status": {
"const": "handoff_required",
"type": "string"
}
},
"required": [
"status",
"handoff"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"retryAfterSeconds": {
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"status": {
"const": "error",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
}
]
}
},
"required": [
"result"
],
"type": "object"
},
"title": "List projects"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": true,
"title": "List workflows"
},
"description": "Read-only. Use to find workflows in a project by name, description, or trigger type before inspection or editing. Trigger filters include database, auth email, repeating, broadcast, and no-trigger workflows. Returns paginated workflow summaries, published/sandbox state, trigger type, workflow URLs, totalCount, hasMore, and nextOffset. Do not use as the final source of truth before editing; call get_workflow_and_preview_url for full structure.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"default": 80,
"description": "Maximum number of workflows to return for this page.",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"offset": {
"default": 0,
"description": "Zero-based workflow offset for pagination. Use nextOffset from the previous response to fetch the next page.",
"maximum": 9007199254740991,
"minimum": 0,
"type": "integer"
},
"projectId": {
"description": "Project id to list workflows from. Required when access is ambiguous.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"search": {
"description": "Optional workflow name or description search string.",
"maxLength": 200,
"type": "string"
},
"triggerFilters": {
"description": "Optional trigger type filters. Use broadcast only for one-time audience emails.",
"items": {
"enum": [
"auth_email",
"database",
"broadcast",
"repeating",
"none"
],
"type": "string"
},
"type": "array"
}
},
"type": "object"
},
"name": "list_workflows",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"result": {
"description": "Dreamlit MCP result. success responses contain data and appUrls when relevant; auth_required, clarification_required, confirmation_required, handoff_required, and error responses explain the next action.",
"oneOf": [
{
"additionalProperties": false,
"properties": {
"data": {
"additionalProperties": {},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"status": {
"const": "success",
"type": "string"
}
},
"required": [
"status",
"data"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"auth": {
"additionalProperties": false,
"properties": {
"reason": {
"type": "string"
}
},
"required": [
"reason"
],
"type": "object"
},
"message": {
"type": "string"
},
"status": {
"const": "auth_required",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"clarification": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"appUrls": {
"additionalProperties": false,
"properties": {
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"workflows"
],
"type": "object"
},
"assistantMessageId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"chatSessionId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"message": {
"type": "string"
},
"orgId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"projectId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"userMessageId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"message",
"workflowId",
"projectId",
"orgId",
"chatSessionId",
"userMessageId",
"assistantMessageId",
"appUrls"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"appUrls": {
"additionalProperties": false,
"properties": {
"preview": {
"format": "uri",
"type": "string"
},
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"preview"
],
"type": "object"
},
"kind": {
"const": "test_message_selection",
"type": "string"
},
"message": {
"type": "string"
},
"orgId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"projectId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"testableMessages": {
"items": {
"additionalProperties": false,
"properties": {
"description": {
"type": "string"
},
"destination": {
"type": "string"
},
"label": {
"type": "string"
},
"messageType": {
"enum": [
"email",
"slack"
],
"type": "string"
},
"requiresRecipient": {
"type": "boolean"
},
"testTargetId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"testTargetId",
"messageType",
"label",
"requiresRecipient"
],
"type": "object"
},
"minItems": 2,
"type": "array"
},
"workflowId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"kind",
"message",
"workflowId",
"projectId",
"orgId",
"testableMessages",
"appUrls"
],
"type": "object"
}
]
},
"status": {
"const": "clarification_required",
"type": "string"
}
},
"required": [
"status",
"clarification"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"confirmation": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"action": {
"const": "confirm_publish",
"type": "string"
},
"appUrls": {
"additionalProperties": false,
"properties": {
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow"
],
"type": "object"
},
"input": {
"additionalProperties": false,
"properties": {
"expectedEditableVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Editable version id returned by prepare_publish, used as a safety check."
},
"expectedPublishedVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Published version id returned by prepare_publish, used as a safety check."
},
"expectedUpdatedAtIso": {
"anyOf": [
{
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Workflow updatedAt timestamp returned by prepare_publish, used as a safety check."
},
"isSandboxed": {
"description": "Whether to publish in sandbox mode so notifications are held for inspection.",
"type": "boolean"
},
"workflowId": {
"description": "Workflow id to publish.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId"
],
"type": "object"
},
"kind": {
"const": "publish",
"type": "string"
},
"message": {
"type": "string"
},
"previewUrl": {
"format": "uri",
"type": "string"
},
"summary": {
"items": {
"type": "string"
},
"type": "array"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"kind",
"action",
"input",
"message",
"previewUrl",
"summary",
"warnings"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"action": {
"const": "send_workflow_test",
"type": "string"
},
"appUrls": {
"additionalProperties": false,
"properties": {
"preview": {
"format": "uri",
"type": "string"
},
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"preview"
],
"type": "object"
},
"input": {
"additionalProperties": false,
"properties": {
"confirmSend": {
"const": true,
"type": "boolean"
},
"messageType": {
"description": "Optional message type filter when selecting a draft message to test.",
"enum": [
"email",
"slack"
],
"type": "string"
},
"rowData": {
"additionalProperties": {},
"description": "Optional sample data for rendering draft message variables during the test. If omitted, Dreamlit uses the same default preview data as the web builder when available.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"testRecipientEmail": {
"description": "Optional recipient for email tests. If omitted, Dreamlit sends to the authenticated user's email address.",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"type": "string"
},
"testTargetId": {
"description": "Structured test target id from testableMessages. Do not show this id to users; ask them to choose by message label.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"description": "Workflow id whose editable draft message should be tested.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId",
"confirmSend"
],
"type": "object"
},
"kind": {
"const": "send_workflow_test",
"type": "string"
},
"message": {
"type": "string"
},
"previewUrl": {
"format": "uri",
"type": "string"
},
"summary": {
"items": {
"type": "string"
},
"type": "array"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"kind",
"action",
"input",
"message",
"previewUrl",
"appUrls",
"summary",
"warnings"
],
"type": "object"
}
]
},
"status": {
"const": "confirmation_required",
"type": "string"
}
},
"required": [
"status",
"confirmation"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"handoff": {
"additionalProperties": false,
"properties": {
"instructions": {
"items": {
"type": "string"
},
"type": "array"
},
"kind": {
"const": "browser",
"type": "string"
},
"message": {
"type": "string"
},
"reason": {
"type": "string"
},
"url": {
"format": "uri",
"type": "string"
}
},
"required": [
"kind",
"reason",
"message",
"url",
"instructions"
],
"type": "object"
},
"status": {
"const": "handoff_required",
"type": "string"
}
},
"required": [
"status",
"handoff"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"retryAfterSeconds": {
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"status": {
"const": "error",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
}
]
}
},
"required": [
"result"
],
"type": "object"
},
"title": "List workflows"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": true,
"title": "Get workflow and preview URL"
},
"description": "Read-only. Use before editing, verifying, or preparing publish for an existing workflow. Returns normalized draft and published workflow structure plus the Dreamlit preview/builder URL and status URLs. Do not use to create, update, publish, or unpublish workflows.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"workflowId": {
"description": "Workflow id to inspect before editing, verifying, or publishing.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId"
],
"type": "object"
},
"name": "get_workflow_and_preview_url",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"result": {
"description": "Dreamlit MCP result. success responses contain data and appUrls when relevant; auth_required, clarification_required, confirmation_required, handoff_required, and error responses explain the next action.",
"oneOf": [
{
"additionalProperties": false,
"properties": {
"data": {
"additionalProperties": {},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"status": {
"const": "success",
"type": "string"
}
},
"required": [
"status",
"data"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"auth": {
"additionalProperties": false,
"properties": {
"reason": {
"type": "string"
}
},
"required": [
"reason"
],
"type": "object"
},
"message": {
"type": "string"
},
"status": {
"const": "auth_required",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"clarification": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"appUrls": {
"additionalProperties": false,
"properties": {
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"workflows"
],
"type": "object"
},
"assistantMessageId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"chatSessionId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"message": {
"type": "string"
},
"orgId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"projectId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"userMessageId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"message",
"workflowId",
"projectId",
"orgId",
"chatSessionId",
"userMessageId",
"assistantMessageId",
"appUrls"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"appUrls": {
"additionalProperties": false,
"properties": {
"preview": {
"format": "uri",
"type": "string"
},
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"preview"
],
"type": "object"
},
"kind": {
"const": "test_message_selection",
"type": "string"
},
"message": {
"type": "string"
},
"orgId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"projectId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"testableMessages": {
"items": {
"additionalProperties": false,
"properties": {
"description": {
"type": "string"
},
"destination": {
"type": "string"
},
"label": {
"type": "string"
},
"messageType": {
"enum": [
"email",
"slack"
],
"type": "string"
},
"requiresRecipient": {
"type": "boolean"
},
"testTargetId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"testTargetId",
"messageType",
"label",
"requiresRecipient"
],
"type": "object"
},
"minItems": 2,
"type": "array"
},
"workflowId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"kind",
"message",
"workflowId",
"projectId",
"orgId",
"testableMessages",
"appUrls"
],
"type": "object"
}
]
},
"status": {
"const": "clarification_required",
"type": "string"
}
},
"required": [
"status",
"clarification"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"confirmation": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"action": {
"const": "confirm_publish",
"type": "string"
},
"appUrls": {
"additionalProperties": false,
"properties": {
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow"
],
"type": "object"
},
"input": {
"additionalProperties": false,
"properties": {
"expectedEditableVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Editable version id returned by prepare_publish, used as a safety check."
},
"expectedPublishedVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Published version id returned by prepare_publish, used as a safety check."
},
"expectedUpdatedAtIso": {
"anyOf": [
{
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Workflow updatedAt timestamp returned by prepare_publish, used as a safety check."
},
"isSandboxed": {
"description": "Whether to publish in sandbox mode so notifications are held for inspection.",
"type": "boolean"
},
"workflowId": {
"description": "Workflow id to publish.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId"
],
"type": "object"
},
"kind": {
"const": "publish",
"type": "string"
},
"message": {
"type": "string"
},
"previewUrl": {
"format": "uri",
"type": "string"
},
"summary": {
"items": {
"type": "string"
},
"type": "array"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"kind",
"action",
"input",
"message",
"previewUrl",
"summary",
"warnings"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"action": {
"const": "send_workflow_test",
"type": "string"
},
"appUrls": {
"additionalProperties": false,
"properties": {
"preview": {
"format": "uri",
"type": "string"
},
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"preview"
],
"type": "object"
},
"input": {
"additionalProperties": false,
"properties": {
"confirmSend": {
"const": true,
"type": "boolean"
},
"messageType": {
"description": "Optional message type filter when selecting a draft message to test.",
"enum": [
"email",
"slack"
],
"type": "string"
},
"rowData": {
"additionalProperties": {},
"description": "Optional sample data for rendering draft message variables during the test. If omitted, Dreamlit uses the same default preview data as the web builder when available.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"testRecipientEmail": {
"description": "Optional recipient for email tests. If omitted, Dreamlit sends to the authenticated user's email address.",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"type": "string"
},
"testTargetId": {
"description": "Structured test target id from testableMessages. Do not show this id to users; ask them to choose by message label.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"description": "Workflow id whose editable draft message should be tested.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId",
"confirmSend"
],
"type": "object"
},
"kind": {
"const": "send_workflow_test",
"type": "string"
},
"message": {
"type": "string"
},
"previewUrl": {
"format": "uri",
"type": "string"
},
"summary": {
"items": {
"type": "string"
},
"type": "array"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"kind",
"action",
"input",
"message",
"previewUrl",
"appUrls",
"summary",
"warnings"
],
"type": "object"
}
]
},
"status": {
"const": "confirmation_required",
"type": "string"
}
},
"required": [
"status",
"confirmation"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"handoff": {
"additionalProperties": false,
"properties": {
"instructions": {
"items": {
"type": "string"
},
"type": "array"
},
"kind": {
"const": "browser",
"type": "string"
},
"message": {
"type": "string"
},
"reason": {
"type": "string"
},
"url": {
"format": "uri",
"type": "string"
}
},
"required": [
"kind",
"reason",
"message",
"url",
"instructions"
],
"type": "object"
},
"status": {
"const": "handoff_required",
"type": "string"
}
},
"required": [
"status",
"handoff"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"retryAfterSeconds": {
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"status": {
"const": "error",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
}
]
}
},
"required": [
"result"
],
"type": "object"
},
"title": "Get workflow and preview URL"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": true,
"title": "Get analytics"
},
"description": "Read-only. Use to query Dreamlit analytics for overview metrics, notification rows, recipient engagement, or workflow run rows with filters, sorting, and cursor pagination. Returns bounded structured analytics data, effective query metadata, pagination details when rows are included, and relevant app URLs. Do not use for CSV exports, bulk dumps, workflow edits, publishing, or low-level database access.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"channel": {
"description": "Notification channel for overview and notification analytics. Defaults to email. Recipient analytics are email-only.",
"enum": [
"email",
"slack"
],
"type": "string"
},
"cursor": {
"description": "Opaque pagination cursor from a previous get_analytics response.",
"maxLength": 2048,
"minLength": 1,
"type": "string"
},
"filters": {
"description": "Optional analytics filters. Unsupported combinations return a clear error.",
"properties": {
"engagement": {
"description": "Email engagement filter.",
"enum": [
"undelivered",
"bounced",
"complained",
"clicked",
"opened"
],
"type": "string"
},
"notificationStatuses": {
"description": "Email notification lifecycle statuses to include.",
"items": {
"enum": [
"sent",
"pending",
"releasable",
"failed",
"canceled",
"suppressed",
"opted_out"
],
"type": "string"
},
"maxItems": 7,
"type": "array"
},
"recipient": {
"description": "Email recipient search string.",
"maxLength": 320,
"type": "string"
},
"runStatuses": {
"description": "Workflow run statuses to include. Only applies to workflow_runs.",
"items": {
"enum": [
"RUNNING",
"PAUSED",
"COMPLETED",
"FAILED",
"SKIPPED",
"CANCELLED"
],
"type": "string"
},
"maxItems": 6,
"type": "array"
},
"slackWebhookIds": {
"description": "Slack webhook ids to include for Slack notification analytics.",
"items": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"maxItems": 100,
"type": "array"
},
"startedAt": {
"description": "Workflow run started timestamp range. Only applies to workflow_runs.",
"properties": {
"from": {
"description": "Inclusive ISO timestamp lower bound.",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"type": "string"
},
"to": {
"description": "Inclusive ISO timestamp upper bound.",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"type": "string"
}
},
"type": "object"
},
"topicIds": {
"description": "Email unsubscribe topic ids to include.",
"items": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"maxItems": 100,
"type": "array"
},
"workflowIds": {
"description": "Workflow ids to include.",
"items": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"maxItems": 100,
"type": "array"
},
"workflowRunId": {
"description": "Workflow run id to include for notification analytics.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowStepRunId": {
"description": "Workflow step run id to include for notification analytics.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"type": "object"
},
"include": {
"description": "Optional response sections to include. Defaults depend on the requested view.",
"items": {
"enum": [
"summary",
"series",
"rows",
"recentEvents",
"segments"
],
"type": "string"
},
"maxItems": 5,
"type": "array"
},
"limit": {
"description": "Maximum rows to return. Defaults to 25 and is capped at 100.",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"projectId": {
"description": "Project id to query analytics from. Required when access is ambiguous.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"range": {
"description": "Optional explicit timestamp range. Overrides window and is applied to the view's primary timestamp.",
"properties": {
"from": {
"description": "Inclusive ISO timestamp lower bound.",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"type": "string"
},
"to": {
"description": "Inclusive ISO timestamp upper bound.",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"type": "string"
}
},
"type": "object"
},
"sort": {
"description": "Optional row sort. Overview ignores sorting.",
"properties": {
"dir": {
"description": "Sort direction. Defaults to desc.",
"enum": [
"asc",
"desc"
],
"type": "string"
},
"field": {
"description": "Sort field. Valid fields depend on the requested view.",
"enum": [
"timestamp",
"sentTo",
"subject",
"workflow",
"engagement",
"recipient",
"lastSentAt",
"sent",
"opened",
"clicked",
"bounced",
"complained"
],
"type": "string"
}
},
"required": [
"field"
],
"type": "object"
},
"timeZone": {
"description": "IANA timezone for daily series bucketing. Defaults to UTC.",
"maxLength": 64,
"minLength": 1,
"type": "string"
},
"view": {
"description": "Analytics surface to query: overview cards, notification rows, recipient rows, or workflow run rows.",
"enum": [
"overview",
"notifications",
"recipients",
"workflow_runs"
],
"type": "string"
},
"window": {
"description": "Relative analytics window. Defaults to 30d. Ignored when range is provided.",
"enum": [
"1h",
"24h",
"7d",
"14d",
"30d",
"90d",
"all"
],
"type": "string"
}
},
"required": [
"view"
],
"type": "object"
},
"name": "get_analytics",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"result": {
"description": "Dreamlit MCP result. success responses contain data and appUrls when relevant; auth_required, clarification_required, confirmation_required, handoff_required, and error responses explain the next action.",
"oneOf": [
{
"additionalProperties": false,
"properties": {
"data": {
"additionalProperties": {},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"status": {
"const": "success",
"type": "string"
}
},
"required": [
"status",
"data"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"auth": {
"additionalProperties": false,
"properties": {
"reason": {
"type": "string"
}
},
"required": [
"reason"
],
"type": "object"
},
"message": {
"type": "string"
},
"status": {
"const": "auth_required",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"clarification": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"appUrls": {
"additionalProperties": false,
"properties": {
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"workflows"
],
"type": "object"
},
"assistantMessageId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"chatSessionId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"message": {
"type": "string"
},
"orgId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"projectId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"userMessageId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"message",
"workflowId",
"projectId",
"orgId",
"chatSessionId",
"userMessageId",
"assistantMessageId",
"appUrls"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"appUrls": {
"additionalProperties": false,
"properties": {
"preview": {
"format": "uri",
"type": "string"
},
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"preview"
],
"type": "object"
},
"kind": {
"const": "test_message_selection",
"type": "string"
},
"message": {
"type": "string"
},
"orgId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"projectId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"testableMessages": {
"items": {
"additionalProperties": false,
"properties": {
"description": {
"type": "string"
},
"destination": {
"type": "string"
},
"label": {
"type": "string"
},
"messageType": {
"enum": [
"email",
"slack"
],
"type": "string"
},
"requiresRecipient": {
"type": "boolean"
},
"testTargetId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"testTargetId",
"messageType",
"label",
"requiresRecipient"
],
"type": "object"
},
"minItems": 2,
"type": "array"
},
"workflowId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"kind",
"message",
"workflowId",
"projectId",
"orgId",
"testableMessages",
"appUrls"
],
"type": "object"
}
]
},
"status": {
"const": "clarification_required",
"type": "string"
}
},
"required": [
"status",
"clarification"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"confirmation": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"action": {
"const": "confirm_publish",
"type": "string"
},
"appUrls": {
"additionalProperties": false,
"properties": {
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow"
],
"type": "object"
},
"input": {
"additionalProperties": false,
"properties": {
"expectedEditableVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Editable version id returned by prepare_publish, used as a safety check."
},
"expectedPublishedVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Published version id returned by prepare_publish, used as a safety check."
},
"expectedUpdatedAtIso": {
"anyOf": [
{
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Workflow updatedAt timestamp returned by prepare_publish, used as a safety check."
},
"isSandboxed": {
"description": "Whether to publish in sandbox mode so notifications are held for inspection.",
"type": "boolean"
},
"workflowId": {
"description": "Workflow id to publish.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId"
],
"type": "object"
},
"kind": {
"const": "publish",
"type": "string"
},
"message": {
"type": "string"
},
"previewUrl": {
"format": "uri",
"type": "string"
},
"summary": {
"items": {
"type": "string"
},
"type": "array"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"kind",
"action",
"input",
"message",
"previewUrl",
"summary",
"warnings"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"action": {
"const": "send_workflow_test",
"type": "string"
},
"appUrls": {
"additionalProperties": false,
"properties": {
"preview": {
"format": "uri",
"type": "string"
},
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"preview"
],
"type": "object"
},
"input": {
"additionalProperties": false,
"properties": {
"confirmSend": {
"const": true,
"type": "boolean"
},
"messageType": {
"description": "Optional message type filter when selecting a draft message to test.",
"enum": [
"email",
"slack"
],
"type": "string"
},
"rowData": {
"additionalProperties": {},
"description": "Optional sample data for rendering draft message variables during the test. If omitted, Dreamlit uses the same default preview data as the web builder when available.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"testRecipientEmail": {
"description": "Optional recipient for email tests. If omitted, Dreamlit sends to the authenticated user's email address.",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"type": "string"
},
"testTargetId": {
"description": "Structured test target id from testableMessages. Do not show this id to users; ask them to choose by message label.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"description": "Workflow id whose editable draft message should be tested.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId",
"confirmSend"
],
"type": "object"
},
"kind": {
"const": "send_workflow_test",
"type": "string"
},
"message": {
"type": "string"
},
"previewUrl": {
"format": "uri",
"type": "string"
},
"summary": {
"items": {
"type": "string"
},
"type": "array"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"kind",
"action",
"input",
"message",
"previewUrl",
"appUrls",
"summary",
"warnings"
],
"type": "object"
}
]
},
"status": {
"const": "confirmation_required",
"type": "string"
}
},
"required": [
"status",
"confirmation"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"handoff": {
"additionalProperties": false,
"properties": {
"instructions": {
"items": {
"type": "string"
},
"type": "array"
},
"kind": {
"const": "browser",
"type": "string"
},
"message": {
"type": "string"
},
"reason": {
"type": "string"
},
"url": {
"format": "uri",
"type": "string"
}
},
"required": [
"kind",
"reason",
"message",
"url",
"instructions"
],
"type": "object"
},
"status": {
"const": "handoff_required",
"type": "string"
}
},
"required": [
"status",
"handoff"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"retryAfterSeconds": {
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"status": {
"const": "error",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
}
]
}
},
"required": [
"result"
],
"type": "object"
},
"title": "Get analytics"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": false,
"title": "Send workflow test"
},
"description": "Side effect when confirmSend is true: sends one current draft email or Slack message for review, but does not publish, schedule, or edit the workflow. Use after authoring or inspection when the user wants to verify an important message before publishing. Returns sent-test details, app URLs, a confirmation request, or a clarification request with user-facing message choices. Do not expose test target ids as copy; ask users to choose by message label and confirm before sending.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"confirmSend": {
"description": "Set to true only after the user explicitly confirms sending this selected test message. If omitted or false, Dreamlit returns confirmation_required and does not send.",
"type": "boolean"
},
"messageType": {
"description": "Optional message type filter when selecting a draft message to test.",
"enum": [
"email",
"slack"
],
"type": "string"
},
"rowData": {
"additionalProperties": {},
"description": "Optional sample data for rendering draft message variables during the test. If omitted, Dreamlit uses the same default preview data as the web builder when available.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"testRecipientEmail": {
"description": "Optional recipient for email tests. If omitted, Dreamlit sends to the authenticated user's email address.",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"type": "string"
},
"testTargetId": {
"description": "Structured test target id from testableMessages. Do not show this id to users; ask them to choose by message label.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"description": "Workflow id whose editable draft message should be tested.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId"
],
"type": "object"
},
"name": "send_workflow_test",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"result": {
"description": "Dreamlit MCP result. success responses contain data and appUrls when relevant; auth_required, clarification_required, confirmation_required, handoff_required, and error responses explain the next action.",
"oneOf": [
{
"additionalProperties": false,
"properties": {
"data": {
"additionalProperties": {},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"status": {
"const": "success",
"type": "string"
}
},
"required": [
"status",
"data"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"auth": {
"additionalProperties": false,
"properties": {
"reason": {
"type": "string"
}
},
"required": [
"reason"
],
"type": "object"
},
"message": {
"type": "string"
},
"status": {
"const": "auth_required",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"clarification": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"appUrls": {
"additionalProperties": false,
"properties": {
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"workflows"
],
"type": "object"
},
"assistantMessageId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"chatSessionId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"message": {
"type": "string"
},
"orgId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"projectId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"userMessageId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"message",
"workflowId",
"projectId",
"orgId",
"chatSessionId",
"userMessageId",
"assistantMessageId",
"appUrls"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"appUrls": {
"additionalProperties": false,
"properties": {
"preview": {
"format": "uri",
"type": "string"
},
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"preview"
],
"type": "object"
},
"kind": {
"const": "test_message_selection",
"type": "string"
},
"message": {
"type": "string"
},
"orgId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"projectId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"testableMessages": {
"items": {
"additionalProperties": false,
"properties": {
"description": {
"type": "string"
},
"destination": {
"type": "string"
},
"label": {
"type": "string"
},
"messageType": {
"enum": [
"email",
"slack"
],
"type": "string"
},
"requiresRecipient": {
"type": "boolean"
},
"testTargetId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"testTargetId",
"messageType",
"label",
"requiresRecipient"
],
"type": "object"
},
"minItems": 2,
"type": "array"
},
"workflowId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"kind",
"message",
"workflowId",
"projectId",
"orgId",
"testableMessages",
"appUrls"
],
"type": "object"
}
]
},
"status": {
"const": "clarification_required",
"type": "string"
}
},
"required": [
"status",
"clarification"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"confirmation": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"action": {
"const": "confirm_publish",
"type": "string"
},
"appUrls": {
"additionalProperties": false,
"properties": {
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow"
],
"type": "object"
},
"input": {
"additionalProperties": false,
"properties": {
"expectedEditableVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Editable version id returned by prepare_publish, used as a safety check."
},
"expectedPublishedVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Published version id returned by prepare_publish, used as a safety check."
},
"expectedUpdatedAtIso": {
"anyOf": [
{
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Workflow updatedAt timestamp returned by prepare_publish, used as a safety check."
},
"isSandboxed": {
"description": "Whether to publish in sandbox mode so notifications are held for inspection.",
"type": "boolean"
},
"workflowId": {
"description": "Workflow id to publish.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId"
],
"type": "object"
},
"kind": {
"const": "publish",
"type": "string"
},
"message": {
"type": "string"
},
"previewUrl": {
"format": "uri",
"type": "string"
},
"summary": {
"items": {
"type": "string"
},
"type": "array"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"kind",
"action",
"input",
"message",
"previewUrl",
"summary",
"warnings"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"action": {
"const": "send_workflow_test",
"type": "string"
},
"appUrls": {
"additionalProperties": false,
"properties": {
"preview": {
"format": "uri",
"type": "string"
},
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"preview"
],
"type": "object"
},
"input": {
"additionalProperties": false,
"properties": {
"confirmSend": {
"const": true,
"type": "boolean"
},
"messageType": {
"description": "Optional message type filter when selecting a draft message to test.",
"enum": [
"email",
"slack"
],
"type": "string"
},
"rowData": {
"additionalProperties": {},
"description": "Optional sample data for rendering draft message variables during the test. If omitted, Dreamlit uses the same default preview data as the web builder when available.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"testRecipientEmail": {
"description": "Optional recipient for email tests. If omitted, Dreamlit sends to the authenticated user's email address.",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"type": "string"
},
"testTargetId": {
"description": "Structured test target id from testableMessages. Do not show this id to users; ask them to choose by message label.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"description": "Workflow id whose editable draft message should be tested.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId",
"confirmSend"
],
"type": "object"
},
"kind": {
"const": "send_workflow_test",
"type": "string"
},
"message": {
"type": "string"
},
"previewUrl": {
"format": "uri",
"type": "string"
},
"summary": {
"items": {
"type": "string"
},
"type": "array"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"kind",
"action",
"input",
"message",
"previewUrl",
"appUrls",
"summary",
"warnings"
],
"type": "object"
}
]
},
"status": {
"const": "confirmation_required",
"type": "string"
}
},
"required": [
"status",
"confirmation"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"handoff": {
"additionalProperties": false,
"properties": {
"instructions": {
"items": {
"type": "string"
},
"type": "array"
},
"kind": {
"const": "browser",
"type": "string"
},
"message": {
"type": "string"
},
"reason": {
"type": "string"
},
"url": {
"format": "uri",
"type": "string"
}
},
"required": [
"kind",
"reason",
"message",
"url",
"instructions"
],
"type": "object"
},
"status": {
"const": "handoff_required",
"type": "string"
}
},
"required": [
"status",
"handoff"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"retryAfterSeconds": {
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"status": {
"const": "error",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
}
]
}
},
"required": [
"result"
],
"type": "object"
},
"title": "Send workflow test"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": true,
"title": "Prepare publish"
},
"description": "Read-only validation step before publishing. Use after the user asks to publish and after inspecting the workflow if needed. Returns validation status, publish mode, preview URL, and a confirmation payload with version/timestamp safety checks for confirm_publish. Does not publish or schedule anything by itself.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"workflowId": {
"description": "Workflow id to validate and prepare for explicit publish approval.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId"
],
"type": "object"
},
"name": "prepare_publish",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"result": {
"description": "Dreamlit MCP result. success responses contain data and appUrls when relevant; auth_required, clarification_required, confirmation_required, handoff_required, and error responses explain the next action.",
"oneOf": [
{
"additionalProperties": false,
"properties": {
"data": {
"additionalProperties": {},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"status": {
"const": "success",
"type": "string"
}
},
"required": [
"status",
"data"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"auth": {
"additionalProperties": false,
"properties": {
"reason": {
"type": "string"
}
},
"required": [
"reason"
],
"type": "object"
},
"message": {
"type": "string"
},
"status": {
"const": "auth_required",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"clarification": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"appUrls": {
"additionalProperties": false,
"properties": {
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"workflows"
],
"type": "object"
},
"assistantMessageId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"chatSessionId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"message": {
"type": "string"
},
"orgId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"projectId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"userMessageId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"message",
"workflowId",
"projectId",
"orgId",
"chatSessionId",
"userMessageId",
"assistantMessageId",
"appUrls"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"appUrls": {
"additionalProperties": false,
"properties": {
"preview": {
"format": "uri",
"type": "string"
},
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"preview"
],
"type": "object"
},
"kind": {
"const": "test_message_selection",
"type": "string"
},
"message": {
"type": "string"
},
"orgId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"projectId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"testableMessages": {
"items": {
"additionalProperties": false,
"properties": {
"description": {
"type": "string"
},
"destination": {
"type": "string"
},
"label": {
"type": "string"
},
"messageType": {
"enum": [
"email",
"slack"
],
"type": "string"
},
"requiresRecipient": {
"type": "boolean"
},
"testTargetId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"testTargetId",
"messageType",
"label",
"requiresRecipient"
],
"type": "object"
},
"minItems": 2,
"type": "array"
},
"workflowId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"kind",
"message",
"workflowId",
"projectId",
"orgId",
"testableMessages",
"appUrls"
],
"type": "object"
}
]
},
"status": {
"const": "clarification_required",
"type": "string"
}
},
"required": [
"status",
"clarification"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"confirmation": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"action": {
"const": "confirm_publish",
"type": "string"
},
"appUrls": {
"additionalProperties": false,
"properties": {
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow"
],
"type": "object"
},
"input": {
"additionalProperties": false,
"properties": {
"expectedEditableVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Editable version id returned by prepare_publish, used as a safety check."
},
"expectedPublishedVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Published version id returned by prepare_publish, used as a safety check."
},
"expectedUpdatedAtIso": {
"anyOf": [
{
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Workflow updatedAt timestamp returned by prepare_publish, used as a safety check."
},
"isSandboxed": {
"description": "Whether to publish in sandbox mode so notifications are held for inspection.",
"type": "boolean"
},
"workflowId": {
"description": "Workflow id to publish.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId"
],
"type": "object"
},
"kind": {
"const": "publish",
"type": "string"
},
"message": {
"type": "string"
},
"previewUrl": {
"format": "uri",
"type": "string"
},
"summary": {
"items": {
"type": "string"
},
"type": "array"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"kind",
"action",
"input",
"message",
"previewUrl",
"summary",
"warnings"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"action": {
"const": "send_workflow_test",
"type": "string"
},
"appUrls": {
"additionalProperties": false,
"properties": {
"preview": {
"format": "uri",
"type": "string"
},
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"preview"
],
"type": "object"
},
"input": {
"additionalProperties": false,
"properties": {
"confirmSend": {
"const": true,
"type": "boolean"
},
"messageType": {
"description": "Optional message type filter when selecting a draft message to test.",
"enum": [
"email",
"slack"
],
"type": "string"
},
"rowData": {
"additionalProperties": {},
"description": "Optional sample data for rendering draft message variables during the test. If omitted, Dreamlit uses the same default preview data as the web builder when available.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"testRecipientEmail": {
"description": "Optional recipient for email tests. If omitted, Dreamlit sends to the authenticated user's email address.",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"type": "string"
},
"testTargetId": {
"description": "Structured test target id from testableMessages. Do not show this id to users; ask them to choose by message label.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"description": "Workflow id whose editable draft message should be tested.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId",
"confirmSend"
],
"type": "object"
},
"kind": {
"const": "send_workflow_test",
"type": "string"
},
"message": {
"type": "string"
},
"previewUrl": {
"format": "uri",
"type": "string"
},
"summary": {
"items": {
"type": "string"
},
"type": "array"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"kind",
"action",
"input",
"message",
"previewUrl",
"appUrls",
"summary",
"warnings"
],
"type": "object"
}
]
},
"status": {
"const": "confirmation_required",
"type": "string"
}
},
"required": [
"status",
"confirmation"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"handoff": {
"additionalProperties": false,
"properties": {
"instructions": {
"items": {
"type": "string"
},
"type": "array"
},
"kind": {
"const": "browser",
"type": "string"
},
"message": {
"type": "string"
},
"reason": {
"type": "string"
},
"url": {
"format": "uri",
"type": "string"
}
},
"required": [
"kind",
"reason",
"message",
"url",
"instructions"
],
"type": "object"
},
"status": {
"const": "handoff_required",
"type": "string"
}
},
"required": [
"status",
"handoff"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"retryAfterSeconds": {
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"status": {
"const": "error",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
}
]
}
},
"required": [
"result"
],
"type": "object"
},
"title": "Prepare publish"
},
{
"annotations": {
"destructiveHint": true,
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": false,
"title": "Confirm publish"
},
"description": "Use only after explicit user confirmation and a prior prepare_publish result to publish or schedule a Dreamlit workflow. Side effect: installs live database/repeating/auth triggers, schedules or sends broadcasts, and may enable notification delivery; sandbox mode can hold notifications for inspection. Returns the published workflow status and app URLs. Do not call speculatively or without carrying forward the prepare_publish safety fields.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"expectedEditableVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Editable version id returned by prepare_publish, used as a safety check."
},
"expectedPublishedVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Published version id returned by prepare_publish, used as a safety check."
},
"expectedUpdatedAtIso": {
"anyOf": [
{
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Workflow updatedAt timestamp returned by prepare_publish, used as a safety check."
},
"isSandboxed": {
"description": "Whether to publish in sandbox mode so notifications are held for inspection.",
"type": "boolean"
},
"workflowId": {
"description": "Workflow id to publish.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId"
],
"type": "object"
},
"name": "confirm_publish",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"result": {
"description": "Dreamlit MCP result. success responses contain data and appUrls when relevant; auth_required, clarification_required, confirmation_required, handoff_required, and error responses explain the next action.",
"oneOf": [
{
"additionalProperties": false,
"properties": {
"data": {
"additionalProperties": {},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"status": {
"const": "success",
"type": "string"
}
},
"required": [
"status",
"data"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"auth": {
"additionalProperties": false,
"properties": {
"reason": {
"type": "string"
}
},
"required": [
"reason"
],
"type": "object"
},
"message": {
"type": "string"
},
"status": {
"const": "auth_required",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"clarification": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"appUrls": {
"additionalProperties": false,
"properties": {
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"workflows"
],
"type": "object"
},
"assistantMessageId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"chatSessionId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"message": {
"type": "string"
},
"orgId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"projectId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"userMessageId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"message",
"workflowId",
"projectId",
"orgId",
"chatSessionId",
"userMessageId",
"assistantMessageId",
"appUrls"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"appUrls": {
"additionalProperties": false,
"properties": {
"preview": {
"format": "uri",
"type": "string"
},
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"preview"
],
"type": "object"
},
"kind": {
"const": "test_message_selection",
"type": "string"
},
"message": {
"type": "string"
},
"orgId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"projectId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"testableMessages": {
"items": {
"additionalProperties": false,
"properties": {
"description": {
"type": "string"
},
"destination": {
"type": "string"
},
"label": {
"type": "string"
},
"messageType": {
"enum": [
"email",
"slack"
],
"type": "string"
},
"requiresRecipient": {
"type": "boolean"
},
"testTargetId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"testTargetId",
"messageType",
"label",
"requiresRecipient"
],
"type": "object"
},
"minItems": 2,
"type": "array"
},
"workflowId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"kind",
"message",
"workflowId",
"projectId",
"orgId",
"testableMessages",
"appUrls"
],
"type": "object"
}
]
},
"status": {
"const": "clarification_required",
"type": "string"
}
},
"required": [
"status",
"clarification"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"confirmation": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"action": {
"const": "confirm_publish",
"type": "string"
},
"appUrls": {
"additionalProperties": false,
"properties": {
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow"
],
"type": "object"
},
"input": {
"additionalProperties": false,
"properties": {
"expectedEditableVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Editable version id returned by prepare_publish, used as a safety check."
},
"expectedPublishedVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Published version id returned by prepare_publish, used as a safety check."
},
"expectedUpdatedAtIso": {
"anyOf": [
{
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Workflow updatedAt timestamp returned by prepare_publish, used as a safety check."
},
"isSandboxed": {
"description": "Whether to publish in sandbox mode so notifications are held for inspection.",
"type": "boolean"
},
"workflowId": {
"description": "Workflow id to publish.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId"
],
"type": "object"
},
"kind": {
"const": "publish",
"type": "string"
},
"message": {
"type": "string"
},
"previewUrl": {
"format": "uri",
"type": "string"
},
"summary": {
"items": {
"type": "string"
},
"type": "array"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"kind",
"action",
"input",
"message",
"previewUrl",
"summary",
"warnings"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"action": {
"const": "send_workflow_test",
"type": "string"
},
"appUrls": {
"additionalProperties": false,
"properties": {
"preview": {
"format": "uri",
"type": "string"
},
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"preview"
],
"type": "object"
},
"input": {
"additionalProperties": false,
"properties": {
"confirmSend": {
"const": true,
"type": "boolean"
},
"messageType": {
"description": "Optional message type filter when selecting a draft message to test.",
"enum": [
"email",
"slack"
],
"type": "string"
},
"rowData": {
"additionalProperties": {},
"description": "Optional sample data for rendering draft message variables during the test. If omitted, Dreamlit uses the same default preview data as the web builder when available.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"testRecipientEmail": {
"description": "Optional recipient for email tests. If omitted, Dreamlit sends to the authenticated user's email address.",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"type": "string"
},
"testTargetId": {
"description": "Structured test target id from testableMessages. Do not show this id to users; ask them to choose by message label.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"description": "Workflow id whose editable draft message should be tested.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId",
"confirmSend"
],
"type": "object"
},
"kind": {
"const": "send_workflow_test",
"type": "string"
},
"message": {
"type": "string"
},
"previewUrl": {
"format": "uri",
"type": "string"
},
"summary": {
"items": {
"type": "string"
},
"type": "array"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"kind",
"action",
"input",
"message",
"previewUrl",
"appUrls",
"summary",
"warnings"
],
"type": "object"
}
]
},
"status": {
"const": "confirmation_required",
"type": "string"
}
},
"required": [
"status",
"confirmation"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"handoff": {
"additionalProperties": false,
"properties": {
"instructions": {
"items": {
"type": "string"
},
"type": "array"
},
"kind": {
"const": "browser",
"type": "string"
},
"message": {
"type": "string"
},
"reason": {
"type": "string"
},
"url": {
"format": "uri",
"type": "string"
}
},
"required": [
"kind",
"reason",
"message",
"url",
"instructions"
],
"type": "object"
},
"status": {
"const": "handoff_required",
"type": "string"
}
},
"required": [
"status",
"handoff"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"retryAfterSeconds": {
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"status": {
"const": "error",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
}
]
}
},
"required": [
"result"
],
"type": "object"
},
"title": "Confirm publish"
},
{
"annotations": {
"destructiveHint": true,
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": false,
"title": "Unpublish workflow"
},
"description": "Use after explicit user intent to unpublish a Dreamlit workflow. Side effect: disables live triggers or schedules for that workflow and stops future automated sends. Returns updated workflow status and app URLs. Do not use for deleting drafts, canceling one broadcast run, or editing workflow content.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"workflowId": {
"description": "Workflow id to unpublish and disable live triggers or schedules.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId"
],
"type": "object"
},
"name": "unpublish_workflow",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"result": {
"description": "Dreamlit MCP result. success responses contain data and appUrls when relevant; auth_required, clarification_required, confirmation_required, handoff_required, and error responses explain the next action.",
"oneOf": [
{
"additionalProperties": false,
"properties": {
"data": {
"additionalProperties": {},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"status": {
"const": "success",
"type": "string"
}
},
"required": [
"status",
"data"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"auth": {
"additionalProperties": false,
"properties": {
"reason": {
"type": "string"
}
},
"required": [
"reason"
],
"type": "object"
},
"message": {
"type": "string"
},
"status": {
"const": "auth_required",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"clarification": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"appUrls": {
"additionalProperties": false,
"properties": {
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"workflows"
],
"type": "object"
},
"assistantMessageId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"chatSessionId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"message": {
"type": "string"
},
"orgId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"projectId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"userMessageId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"message",
"workflowId",
"projectId",
"orgId",
"chatSessionId",
"userMessageId",
"assistantMessageId",
"appUrls"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"appUrls": {
"additionalProperties": false,
"properties": {
"preview": {
"format": "uri",
"type": "string"
},
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"preview"
],
"type": "object"
},
"kind": {
"const": "test_message_selection",
"type": "string"
},
"message": {
"type": "string"
},
"orgId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"projectId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"testableMessages": {
"items": {
"additionalProperties": false,
"properties": {
"description": {
"type": "string"
},
"destination": {
"type": "string"
},
"label": {
"type": "string"
},
"messageType": {
"enum": [
"email",
"slack"
],
"type": "string"
},
"requiresRecipient": {
"type": "boolean"
},
"testTargetId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"testTargetId",
"messageType",
"label",
"requiresRecipient"
],
"type": "object"
},
"minItems": 2,
"type": "array"
},
"workflowId": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"kind",
"message",
"workflowId",
"projectId",
"orgId",
"testableMessages",
"appUrls"
],
"type": "object"
}
]
},
"status": {
"const": "clarification_required",
"type": "string"
}
},
"required": [
"status",
"clarification"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"confirmation": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"action": {
"const": "confirm_publish",
"type": "string"
},
"appUrls": {
"additionalProperties": false,
"properties": {
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow"
],
"type": "object"
},
"input": {
"additionalProperties": false,
"properties": {
"expectedEditableVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Editable version id returned by prepare_publish, used as a safety check."
},
"expectedPublishedVersionId": {
"anyOf": [
{
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Published version id returned by prepare_publish, used as a safety check."
},
"expectedUpdatedAtIso": {
"anyOf": [
{
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Workflow updatedAt timestamp returned by prepare_publish, used as a safety check."
},
"isSandboxed": {
"description": "Whether to publish in sandbox mode so notifications are held for inspection.",
"type": "boolean"
},
"workflowId": {
"description": "Workflow id to publish.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId"
],
"type": "object"
},
"kind": {
"const": "publish",
"type": "string"
},
"message": {
"type": "string"
},
"previewUrl": {
"format": "uri",
"type": "string"
},
"summary": {
"items": {
"type": "string"
},
"type": "array"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"kind",
"action",
"input",
"message",
"previewUrl",
"summary",
"warnings"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"action": {
"const": "send_workflow_test",
"type": "string"
},
"appUrls": {
"additionalProperties": false,
"properties": {
"preview": {
"format": "uri",
"type": "string"
},
"workflow": {
"format": "uri",
"type": "string"
},
"workflows": {
"format": "uri",
"type": "string"
}
},
"required": [
"workflow",
"preview"
],
"type": "object"
},
"input": {
"additionalProperties": false,
"properties": {
"confirmSend": {
"const": true,
"type": "boolean"
},
"messageType": {
"description": "Optional message type filter when selecting a draft message to test.",
"enum": [
"email",
"slack"
],
"type": "string"
},
"rowData": {
"additionalProperties": {},
"description": "Optional sample data for rendering draft message variables during the test. If omitted, Dreamlit uses the same default preview data as the web builder when available.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"testRecipientEmail": {
"description": "Optional recipient for email tests. If omitted, Dreamlit sends to the authenticated user's email address.",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"type": "string"
},
"testTargetId": {
"description": "Structured test target id from testableMessages. Do not show this id to users; ask them to choose by message label.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"workflowId": {
"description": "Workflow id whose editable draft message should be tested.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"workflowId",
"confirmSend"
],
"type": "object"
},
"kind": {
"const": "send_workflow_test",
"type": "string"
},
"message": {
"type": "string"
},
"previewUrl": {
"format": "uri",
"type": "string"
},
"summary": {
"items": {
"type": "string"
},
"type": "array"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"kind",
"action",
"input",
"message",
"previewUrl",
"appUrls",
"summary",
"warnings"
],
"type": "object"
}
]
},
"status": {
"const": "confirmation_required",
"type": "string"
}
},
"required": [
"status",
"confirmation"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"handoff": {
"additionalProperties": false,
"properties": {
"instructions": {
"items": {
"type": "string"
},
"type": "array"
},
"kind": {
"const": "browser",
"type": "string"
},
"message": {
"type": "string"
},
"reason": {
"type": "string"
},
"url": {
"format": "uri",
"type": "string"
}
},
"required": [
"kind",
"reason",
"message",
"url",
"instructions"
],
"type": "object"
},
"status": {
"const": "handoff_required",
"type": "string"
}
},
"required": [
"status",
"handoff"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"retryAfterSeconds": {
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"type": "integer"
},
"status": {
"const": "error",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
}
]
}
},
"required": [
"result"
],
"type": "object"
},
"title": "Unpublish workflow"
}
]
}
},
"url": "https://mcp.dreamlit.ai/mcp"
},
"latency_ms": 59.98,
"status": "ok"
},
"transport_compliance_probe": {
"details": {
"bad_protocol_error": null,
"bad_protocol_headers": {
"content-type": "application/json"
},
"bad_protocol_payload": {
"error": {
"code": -32000,
"message": "Bad Request: Unsupported protocol version: 1999-99-99 (supported versions: 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05, 2024-10-07)"
},
"id": null,
"jsonrpc": "2.0"
},
"bad_protocol_status_code": 400,
"delete_error": null,
"delete_status_code": null,
"expired_session_error": null,
"expired_session_status_code": null,
"issues": [
"missing_session_id",
"missing_protocol_header"
],
"last_event_id_visible": false,
"protocol_header_present": false,
"requested_protocol_version": "2025-03-26",
"session_id_present": false,
"transport": "streamable-http"
},
"latency_ms": 30.12,
"status": "warning"
},
"utility_coverage_probe": {
"details": {
"completions": {
"advertised": false,
"live_probe": "not_executed",
"sample_target": {
"type": "resource",
"uri": "dreamlit://mcp/guide"
}
},
"initialize_capability_keys": [
"resources",
"tools"
],
"pagination": {
"metadata_signal": false,
"next_cursor_methods": [],
"supported": false
},
"tasks": {
"advertised": false,
"http_status": 200,
"probe_status": "missing"
}
},
"latency_ms": 24.9,
"status": "missing"
}
},
"failures": {
"openid_configuration": {
"error": "Client error '404 Not Found' for url 'https://mcp.dreamlit.ai/.well-known/openid-configuration'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
"url": "https://mcp.dreamlit.ai/.well-known/openid-configuration"
},
"server_card": {
"error": "Client error '404 Not Found' for url 'https://mcp.dreamlit.ai/.well-known/mcp/server-card.json'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
"url": "https://mcp.dreamlit.ai/.well-known/mcp/server-card.json"
}
},
"remote_url": "https://mcp.dreamlit.ai/mcp",
"server_card_payload": null,
"server_identifier": "ai.dreamlit/mcp"
}
Known versions
0.1.0
Validation history
| Timestamp | Status | Score | Latency | Tools |
|---|---|---|---|---|
| May 13, 2026 01:18:30 PM UTC | Healthy | 78.7 | 1282.1 ms | 10 |
| May 13, 2026 01:18:19 AM UTC | Healthy | 80.7 | 793.6 ms | 9 |
| May 12, 2026 01:17:03 PM UTC | Healthy | 80.2 | 1046.6 ms | 9 |
| May 12, 2026 01:16:30 AM UTC | Healthy | 75.1 | 847.2 ms | 9 |
Validation timeline
| Validated | Summary | Score | Protocol | Auth mode | Tools | High-risk tools | Changes |
|---|---|---|---|---|---|---|---|
| May 13, 2026 01:18:30 PM UTC | Healthy | 78.7 | 2025-03-26 | oauth_supported | 10 | 2 | write_surface_expanded tool_snapshot_changed |
| May 13, 2026 01:18:19 AM UTC | Healthy | 80.7 | 2025-03-26 | oauth_supported | 9 | 1 | none |
| May 12, 2026 01:17:03 PM UTC | Healthy | 80.2 | 2025-03-26 | oauth_supported | 9 | 1 | none |
| May 12, 2026 01:16:30 AM UTC | Healthy | 75.1 | 2025-03-26 | oauth_supported | 9 | 1 | none |
Recent validation runs
| Started | Status | Summary | Latency | Checks |
|---|---|---|---|---|
| May 13, 2026 01:18:29 PM UTC | Completed | Healthy | 1282.1 ms | action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe |
| May 13, 2026 01:18:18 AM UTC | Completed | Healthy | 793.6 ms | action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe |
| May 12, 2026 01:17:02 PM UTC | Completed | Healthy | 1046.6 ms | action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe |
| May 12, 2026 01:16:29 AM UTC | Completed | Healthy | 847.2 ms | action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe |